29#ifndef SC_SIM_STATE_DATA_H
30#define SC_SIM_STATE_DATA_H
32#include "foundation/PxMemory.h"
33#include "ScBodyCore.h"
51 PxVec3 backupInverseInertia;
53 PxReal backupLinearDamping;
54 PxReal backupAngularDamping;
55 PxReal backupMaxAngVelSq;
56 PxReal backupMaxLinVelSq;
62 VMF_GRAVITY_DIRTY = (1 << 0),
63 VMF_ACC_DIRTY = (1 << 1),
64 VMF_VEL_DIRTY = (1 << 2)
80 PX_FORCE_INLINE void clear() { linearPerSec = angularPerSec = linearPerStep = angularPerStep =
PxVec3(0.0f); }
137 PX_ASSERT(simStateData && simStateData->isKine());
138 Kinematic* kine = simStateData->getKinematicData();
140 kine->backupLinearDamping = core.linearDamping;
141 kine->backupAngularDamping = core.angularDamping;
142 kine->backupInverseInertia = core.inverseInertia;
143 kine->backupInvMass = core.inverseMass;
144 kine->backupMaxAngVelSq = core.maxAngularVelocitySq;
145 kine->backupMaxLinVelSq = core.maxLinearVelocitySq;
147 core.inverseMass = 0.0f;
148 core.inverseInertia =
PxVec3(0.0f);
149 core.linearDamping = 0.0f;
150 core.angularDamping = 0.0f;
151 core.maxAngularVelocitySq = PX_MAX_REAL;
152 core.maxLinearVelocitySq = PX_MAX_REAL;
157 PX_ASSERT(simStateData && simStateData->isKine());
158 const Kinematic* kine = simStateData->getKinematicData();
159 core.inverseMass = kine->backupInvMass;
160 core.inverseInertia = kine->backupInverseInertia;
161 core.linearDamping = kine->backupLinearDamping;
162 core.angularDamping = kine->backupAngularDamping;
163 core.maxAngularVelocitySq = kine->backupMaxAngVelSq;
164 core.maxLinearVelocitySq = kine->backupMaxLinVelSq;
169 if (simStateData && simStateData->isVelMod())
171 VelocityMod* velmod = simStateData->getVelocityModData();
176 PX_FORCE_INLINE bool simStateGetKinematicTarget(
const SimStateData* simStateData, PxTransform& p)
178 if (simStateData && simStateData->isKine() && simStateData->getKinematicData()->targetValid)
180 p = simStateData->getKinematicData()->targetPose;
187 PX_FORCE_INLINE bool simStateGetHasValidKinematicTarget(
const SimStateData* simStateData)
189 PX_ASSERT(!simStateData || simStateData->isKine());
190 return simStateData && simStateData->isKine() && simStateData->getKinematicData()->targetValid;
193 PX_FORCE_INLINE void simStateSetKinematicTarget(SimStateData* simStateData,
const PxTransform& p)
195 PX_ASSERT(simStateData && simStateData->isKine());
198 Kinematic* kine = simStateData->getKinematicData();
199 kine->targetPose = p;
200 kine->targetValid = 1;
203 PX_FORCE_INLINE void simStateInvalidateKinematicTarget(SimStateData* simStateData)
205 PX_ASSERT(simStateData && simStateData->isKine());
206 simStateData->getKinematicData()->targetValid = 0;
Definition PxUserAllocated.h:43
3 Element vector class.
Definition PxVec3.h:50
#define PX_FORCE_INLINE
Definition PxPreprocessor.h:335
#define PX_COMPILE_TIME_ASSERT(exp)
Definition PxPreprocessor.h:428
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
PX_FORCE_INLINE void * PxMemZero(void *dest, PxU32 count)
Sets the bytes of the provided buffer to zero.
Definition PxMemory.h:53
Definition PxvDynamics.h:74
Definition ScSimStateData.h:48
Definition ScSimStateData.h:108
Definition ScSimStateData.h:69