True Axis Physics SDK 1.2.0.1 Beta Documentation
www.trueaxis.com

TA::Physics Class Reference

#include "TA/Physics/Physics.h"


Detailed Description

The main interface to the True Axis Physics SDK.

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.

Singletons:
This class is a singleton. Only one instance of the class can be created at any time. To create an instance call the static member function 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.
Examples:

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)


© Copyright 2004-2006 TRUE AXIS PTY LTD Australia. All rights reserved.