#include "TA/Physics/Physics.h"
The class TA::Physics provides a starting point for all interactions with the True Axis Physics SDK. Tasks such as creating and updating a physics simulation as well as adding and removing physics objects are done here.
A detailed example of how to set up and manage a physics simulation can be found here.
Objects that can be added to a physics simulation inherit from TA::PhysicsObject. These objects are divided into to two types, static objects and dynamic objects:
This class also provides interfaces for performing collision queries with the world through functions such as TA::Physics::TestLineForCollision.
CreateInstance
. Use the static member function GetInstance
to get a reference to the instance. When the class is no longer needed, the static member function DestroyInstance
should be called.BallAndSocketJointExample.cpp, CollisionObjectComboExample.cpp, HingeJointExample.cpp, SimplePhysicsSimulationExample.cpp, and SliderJointExample.cpp.
Initialisation | |
void | SetupSimulation () |
static void TAC_CALL | CreateInstance () |
static void TAC_CALL | DestroyInstance () |
static Physics &TAC_CALL | GetInstance () |
Public Types | |
typedef bool(TA_CALL_BACK * | DynamicVsDynamicCollisionTestCallBack )(DynamicObject &objectA, DynamicObject &objectB) |
typedef bool(TA_CALL_BACK * | PreProcessCollisionCallBack )(PreCollision &collision) |
typedef void(TA_CALL_BACK * | PostProcessCollisionCallBack )(PostCollision &collision) |
typedef void(TA_CALL_BACK * | OnBrokenJointCallBack )(PhysicsJoint &joint) |
typedef bool(TA_CALL_BACK * | CollisionCallBack )(const Collision &collision, void *pUserData) |
enum | Flags { FLAG_DYNAMIC_OBJECTS = 0x1, FLAG_STATIC_OBJECTS = 0x2, FLAG_ALL_OBJECTS = FLAG_DYNAMIC_OBJECTS | FLAG_STATIC_OBJECTS, FLAG_ALL_NON_DYNAMIC_OBJECTS = FLAG_STATIC_OBJECTS, FLAG_GHOST_OBJECTS = 0x8, FLAG_RENDER_COLLISIONS = 0x10, FLAG_SPACIAL_DIVISION_MASK = 0x20 + 0x40 + 0x80, FLAG_XY_COLLISION_GRID = 0x20, FLAG_XZ_COLLISION_GRID = 0x40, FLAG_YZ_COLLISION_GRID = 0x60, FLAG_DYNAMIC_OCTREE = 0x80 } |
enum | SpacialDivisionType { SPACIAL_DIVISION_TYPE_DYNAMIC_OCTREE = 0, SPACIAL_DIVISION_TYPE_XY_COLLISION_GRID = 1, SPACIAL_DIVISION_TYPE_XZ_COLLISION_GRID = 2, SPACIAL_DIVISION_TYPE_YZ_COLLISION_GRID = 3 } |
Public Member Functions | |
Update | |
void | Update (float fDt) |
void | Render () |
Static objects | |
void | AddStaticObject (StaticObject *pStaticObject) |
void | RemoveStaticObject (StaticObject *pStaticObject) |
Surface attributes | |
int | AddSurfaceAttribute (SurfaceAttribute *pSurfaceAttribute) |
int | AddSurfaceAttribute () |
void | RemoveSurfaceAttribute (int nIndex) |
SurfaceAttribute & | GetSurfaceAttribute (int nIndex) |
int | GetNumSurfaceAttributes () |
void | SetDefaultSurfaceAttribute (SurfaceAttribute *pSurfaceAttribute) |
const SurfaceAttribute & | GetDefaultSurfaceAttribute () |
Dynamic objects | |
void | AddDynamicObject (DynamicObject *pDynamicObject, bool bInitiallyMoving=true) |
void | RemoveDynamicObject (DynamicObject *pDynamicObject) |
void | SetDynamicObjectIsMoving (DynamicObject *pDynamicObject) |
void | SetDynamicObjectAtRest (DynamicObject *pDynamicObject) |
Line collision testing | |
void | TestLineForCollision (const Vec3 &v3Start, const Vec3 &v3Normal, float fLength, Collision &collision, u32 nFlags) |
void | TestLineForCollision (const Vec3 &v3Start, const Vec3 &v3End, Collision &collision, u32 nFlags=FLAG_ALL_OBJECTS) |
Collision | TestLineForCollision (const Vec3 &v3Start, const Vec3 &v3Normal, float fLength, u32 nFlags) |
Collision | TestLineForCollision (const Vec3 &v3Start, const Vec3 &v3End, u32 nFlags=FLAG_ALL_OBJECTS) |
Properties | |
const Vec3 & | GetGravity () const |
void | SetGravity (const Vec3 &v3Gravity) |
void | SetRenderCollisionsEnabled (bool bValue) |
SetupSimulation Properties | |
void | SetWorldDimensions (const AABB &worldAABB) |
const AABB & | GetWorldDimensions () |
void | SetMaxNumCollisions (int nMaxNumCollisions) |
int | GetMaxNumCollisions () |
void | SetMaxNumMovingObjects (int nMaxNumMovingObjects) |
int | GetMaxNumMovingObjects () |
void | SetSlowSolverMaxNumCollisions (int nSlowSolverMaxNumCollisions) |
int | GetSlowSolverMaxNumCollisions () |
void | SetSlowSolverMaxNumObjects (int nSlowSolverMaxNumObjects) |
int | GetSlowSolverMaxNumObjects () |
void | SetMaxNumObjectPairs (int nMaxNumObjectPairs) |
int | GetMaxNumObjectPairs () |
void | SetSpacialDivisionType (SpacialDivisionType eSpacialDivisionType) |
SpacialDivisionType | GetSpacialDivisionType () |
void | SetSpacialDivisionMinSize (float fSpacialDivisionMinSize) |
float | GetSpacialDivisionMinSize () |
void | SetSpacialDivisionMaxMemory (int nSpacialDivisionMaxMemory) |
int | GetSpacialDivisionMaxMemory () |
Collision Processing | |
DynamicVsDynamicCollisionTestCallBack | GetDynamicVsDynamicCollisionTestCallBack () const |
void | SetDynamicVsDynamicCollisionTestCallBack (DynamicVsDynamicCollisionTestCallBack pFnDynamicVsDynamicCollisionTest) |
PreProcessCollisionCallBack | GetPreProcessCollisionCallBack () const |
void | SetPreProcessCollisionCallBack (PreProcessCollisionCallBack pFnPreProcessCollision) |
PostProcessCollisionCallBack | GetPostProcessCollisionCallBack () const |
void | SetPostProcessCollisionCallBack (PostProcessCollisionCallBack pFnPostProcessCollision) |
Events | |
OnBrokenJointCallBack | GetOnBrokenJointCallBack () const |
void | SetOnBrokenJointCallBack (OnBrokenJointCallBack pFnOnBrokenJoint) |
Static Public Member Functions | |
Deprecated | |
static void TAC_CALL | CreateInstance (const AABB &worldAABB, const Vec3 &v3Gravity=Vec3(0.0f,-9.81f, 0.0f), u32 nFlags=FLAG_XZ_COLLISION_GRID, float fMinSpacialDivision=10.0f, int nSpacialDivisionMemory=0x40000) |