Torque3D Documentation / _generateds / VHumanoidAnimationStates.cpp

VHumanoidAnimationStates.cpp

Engine/source/Verve/VActor/Humanoid/VHumanoidAnimationStates.cpp

More...

Detailed Description

Public Functions

ExecuteActorAnimationState(HumanoidIdle )

ExecuteActorAnimationState(HumanoidRunBackward )

ExecuteActorAnimationState(HumanoidRunForward )

ExecuteActorAnimationState(HumanoidSwimBackward )

ExecuteActorAnimationState(HumanoidSwimForward )

ExecuteActorAnimationState(HumanoidSwimIdle )

ExecuteActorAnimationState(HumanoidWalkBackward )

ExecuteActorAnimationState(HumanoidWalkForward )

ImplementActorAnimationState(HumanoidIdle , VHumanoidActorData::k_IdleAnimation )

ImplementActorAnimationState(HumanoidRunBackward , VHumanoidActorData::k_RunBackwardAnimation )

ImplementActorAnimationState(HumanoidRunForward , VHumanoidActorData::k_RunForwardAnimation )

ImplementActorAnimationState(HumanoidSwimBackward , VHumanoidActorData::k_SwimBackwardAnimation )

ImplementActorAnimationState(HumanoidSwimForward , VHumanoidActorData::k_SwimForwardAnimation )

ImplementActorAnimationState(HumanoidSwimIdle , VHumanoidActorData::k_SwimIdleAnimation )

ImplementActorAnimationState(HumanoidWalkBackward , VHumanoidActorData::k_WalkBackwardAnimation )

ImplementActorAnimationState(HumanoidWalkForward , VHumanoidActorData::k_WalkForwardAnimation )

  1
  2//-----------------------------------------------------------------------------
  3// Verve
  4// Copyright (C) 2014 - Violent Tulip
  5//
  6// Permission is hereby granted, free of charge, to any person obtaining a copy
  7// of this software and associated documentation files (the "Software"), to
  8// deal in the Software without restriction, including without limitation the
  9// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 10// sell copies of the Software, and to permit persons to whom the Software is
 11// furnished to do so, subject to the following conditions:
 12//
 13// The above copyright notice and this permission notice shall be included in
 14// all copies or substantial portions of the Software.
 15//
 16// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 17// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 18// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 19// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 20// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 21// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 22// IN THE SOFTWARE.
 23//-----------------------------------------------------------------------------
 24#include "VHumanoidAnimationStates.h"
 25#include "VHumanoidActor.h"
 26
 27#include "../VActorAnimationController.h"
 28#include "../VActorPhysicsController.h"
 29
 30//-----------------------------------------------------------------------------
 31//
 32// Implement Animation States.
 33//
 34//-----------------------------------------------------------------------------
 35
 36ImplementActorAnimationState( HumanoidIdle,         VHumanoidActorData::k_IdleAnimation );
 37
 38ImplementActorAnimationState( HumanoidWalkForward,  VHumanoidActorData::k_WalkForwardAnimation );
 39ImplementActorAnimationState( HumanoidWalkBackward, VHumanoidActorData::k_WalkBackwardAnimation );
 40
 41ImplementActorAnimationState( HumanoidRunForward,   VHumanoidActorData::k_RunForwardAnimation );
 42ImplementActorAnimationState( HumanoidRunBackward,  VHumanoidActorData::k_RunBackwardAnimation );
 43
 44ImplementActorAnimationState( HumanoidSwimIdle,     VHumanoidActorData::k_SwimIdleAnimation );
 45ImplementActorAnimationState( HumanoidSwimForward,  VHumanoidActorData::k_SwimForwardAnimation );
 46ImplementActorAnimationState( HumanoidSwimBackward, VHumanoidActorData::k_SwimBackwardAnimation );
 47
 48
 49
 50
 51//-----------------------------------------------------------------------------
 52//
 53// Execute Animation States.
 54//
 55//-----------------------------------------------------------------------------
 56
 57//-----------------------------------------------------------------------------
 58//
 59// OnGround Animation States
 60//
 61//-----------------------------------------------------------------------------
 62
 63ExecuteActorAnimationState( HumanoidIdle )
 64{
 65    // Always Enter.
 66    return true;
 67}
 68
 69ExecuteActorAnimationState( HumanoidWalkForward )
 70{
 71    // Fetch Controller.
 72    VActorPhysicsController *physicsController = pObject->getPhysicsController();
 73
 74    // On the Ground?
 75    if ( physicsController->getPhysicsState() != VHumanoidActorData::k_OnGroundPhysics )
 76    {
 77        // Can't Run Forward.
 78        return false;
 79    }
 80
 81    // Fetch Velocity.
 82    const VectorF &velocity = physicsController->getVelocity();
 83    // Determine Move Speed.
 84    const F32 moveSpeed = mSqrt( velocity.x * velocity.x + velocity.y * velocity.y );
 85
 86    // Moving Forward & Slow Enough?
 87    return ( ( physicsController->getMoveState() & k_ForwardMove ) &&
 88             ( moveSpeed < pObject->getDataBlock()->getRunSpeed() ) );
 89}
 90
 91ExecuteActorAnimationState( HumanoidWalkBackward )
 92{
 93    // Fetch Controller.
 94    VActorPhysicsController *physicsController = pObject->getPhysicsController();
 95
 96    // On the Ground?
 97    if ( physicsController->getPhysicsState() != VHumanoidActorData::k_OnGroundPhysics )
 98    {
 99        // Can't Run Backward.
100        return false;
101    }
102
103    // Fetch Velocity.
104    const VectorF &velocity = physicsController->getVelocity();
105    // Determine Move Speed.
106    const F32 moveSpeed = mSqrt( velocity.x * velocity.x + velocity.y * velocity.y );
107
108    // Moving Backward?
109    return ( ( physicsController->getMoveState() & k_BackwardMove ) &&
110             ( moveSpeed < pObject->getDataBlock()->getRunSpeed() ) );
111}
112
113ExecuteActorAnimationState( HumanoidRunForward )
114{
115    // Fetch Controller.
116    VActorPhysicsController *physicsController = pObject->getPhysicsController();
117
118    // On the Ground?
119    if ( physicsController->getPhysicsState() != VHumanoidActorData::k_OnGroundPhysics )
120    {
121        // Can't Run Forward.
122        return false;
123    }
124
125    // Fetch Velocity.
126    const VectorF &velocity = physicsController->getVelocity();
127    // Determine Move Speed.
128    const F32 moveSpeed = mSqrt( velocity.x * velocity.x + velocity.y * velocity.y );
129
130    // Moving Forward?
131    return ( ( physicsController->getMoveState() & k_ForwardMove ) &&
132             ( moveSpeed >= pObject->getDataBlock()->getRunSpeed() ) );
133}
134
135ExecuteActorAnimationState( HumanoidRunBackward )
136{
137    // Fetch Controller.
138    VActorPhysicsController *physicsController = pObject->getPhysicsController();
139
140    // On the Ground?
141    if ( physicsController->getPhysicsState() != VHumanoidActorData::k_OnGroundPhysics )
142    {
143        // Can't Run Backward.
144        return false;
145    }
146
147    // Fetch Velocity.
148    const VectorF &velocity = physicsController->getVelocity();
149    // Determine Move Speed.
150    const F32 moveSpeed = mSqrt( velocity.x * velocity.x + velocity.y * velocity.y );
151
152    // Moving Backward?
153    return ( ( physicsController->getMoveState() & k_BackwardMove ) &&
154             ( moveSpeed >= pObject->getDataBlock()->getRunSpeed() ) );
155}
156
157
158
159
160//-----------------------------------------------------------------------------
161//
162// InWater Animation States
163//
164//-----------------------------------------------------------------------------
165
166ExecuteActorAnimationState( HumanoidSwimIdle )
167{
168    // Fetch Controller.
169    VActorPhysicsController *physicsController = pObject->getPhysicsController();
170
171    // In the Water?
172    if ( physicsController->getPhysicsState() != VHumanoidActorData::k_InWaterPhysics )
173    {
174        // Can't Swim.
175        return false;
176    }
177
178    // Idle?
179    return ( physicsController->getMoveState() & k_NullMove );
180}
181
182ExecuteActorAnimationState( HumanoidSwimForward )
183{
184    // Fetch Controller.
185    VActorPhysicsController *physicsController = pObject->getPhysicsController();
186
187    // In the Water?
188    if ( physicsController->getPhysicsState() != VHumanoidActorData::k_InWaterPhysics )
189    {
190        // Can't Swim.
191        return false;
192    }
193
194    // Moving Around?
195    return ( physicsController->getMoveState() & ( k_ForwardMove |
196                                                   k_UpMove |
197                                                   k_DownMove ) );
198}
199
200ExecuteActorAnimationState( HumanoidSwimBackward )
201{
202    // Fetch Controller.
203    VActorPhysicsController *physicsController = pObject->getPhysicsController();
204
205    // In the Water?
206    if ( physicsController->getPhysicsState() != VHumanoidActorData::k_InWaterPhysics )
207    {
208        // Can't Swim.
209        return false;
210    }
211
212    // Moving Backward?
213    return ( physicsController->getMoveState() & k_BackwardMove );
214}
215