#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) |