Nebula
Loading...
Searching...
No Matches
Physics Namespace Reference

Detailed Description

Diverse functions for manipulating physics actors.

Implements a resource loader for physics actors.

Physics::Geometry.

Physics::Formats.

Physics::DebugUI.

Physics::Cooking.

callback interfaces for PhysX

Cooks geometry descriptions into PhysX meshes.

Asset readers which fill the geometry descriptions.

Format agnostic geometry descriptions handed to the physics cooking layer.

Physics receives plain geometry data and does not know about any file format. A project registers a GeometryLoader which fills these descriptions from whatever asset format it uses.

Classes

struct  Actor
class  ActorContext
struct  ActorId
struct  ActorInfo
struct  ActorResourceId
struct  Aggregate
class  AggregateContext
struct  AggregateId
struct  AggregateInfo
struct  AggregateResourceId
class  Allocator
struct  BodyDescription
 A physics body description. More...
struct  BodyInfo
struct  Character
class  CharacterContext
struct  CharacterCreateInfo
struct  CharacterId
struct  ColliderDescription
 A collider description / create info. More...
struct  Constraint
struct  ConstraintId
struct  ConstraintInfo
struct  ConstraintResourceId
struct  ContactEvent
struct  CookedConvex
 A cooked convex hull together with the bone it belongs to. More...
struct  DebugDrawInterface
struct  DebugState
class  ErrorCallback
struct  GeometryLoader
 Holds function pointers for reading meshes and heightfields from resources. More...
struct  HeightFieldInput
 Height field samples for the cooking layer. More...
struct  Material
struct  MeshGeometryInput
 Triangle geometry for the cooking layer. More...
struct  PhysicsResourceId
class  PhysxState
struct  Scene
 physx scene classes, foundation and physics are duplicated here for convenience instead of static getters, might be removed later on More...
struct  Shape
struct  ShapeHandle
struct  ShapeId
class  StreamActorPool
class  VisualDebugger
 Class that communicates with the physics visual debugger program. More...

Typedefs

using CharacterCollision = Util::BitField<CharacterCollisionBitsMax>
using UpdateFunctionType = void (*) (const Actor&)
using EventCallbackType = void (*) (const Util::Array<ContactEvent>&)

Enumerations

enum class  IndexType { InvalidIndexType = 0 , Index16 , Index32 }
enum  PhysicsIdType { ActorIdType , MeshIdType }
enum  ActorType { Static , Kinematic , Dynamic }
enum  CharacterCollisionBits { Sides = 0 , Up = 1 , Down = 2 , CharacterCollisionBitsMax }

Functions

static bool IsKinematic (PxRigidActor *actor)
 Kinematic is a rigid body flag, and the actors tracked here can be static, so the actor kind has to be checked before the flag is read.
static void HashMix (uint64_t &hash, uint64_t value)
 FNV-1a hash.
static uint64_t HashFloat (float value)
static uint64_t ColliderGeometryHash (const ColliderDescription &desc)
 Hash of the parts of a collider description that decide the cooked geometry.
static bool BuildGeometry (const ColliderDescription &desc, PxGeometryHolder &out)
static PxMaterial * ResolveShapeMaterial (IndexT materialId)
static float ResolveShapeDensity (IndexT materialId)
static void ApplyShapeFlags (PxShape *shape, bool isTrigger)
static void ApplyShapeFilterData (PxShape *shape, ActorId actor)
 word0 is the collision group and word1 the feedback, which is what the simulation filter reads
static void ApplyShapeState (Shape &shape, const ColliderDescription &desc)
 Apply the material, flags and filter data of a description onto an existing shape.
static void ApplyMass (ActorId actor)
 Recompute the mass and inertia of a body.
bool CookMesh (const MeshGeometryInput &input, PxGeometryHolder &out)
Util::Array< CookedConvex > CookApproxSkin (const MeshGeometryInput &input)
 Cook one convex hull per bone from skinned geometry.
bool CookHeightField (const HeightFieldInput &input, float heightRange, float targetSizeX, float targetSizeZ, PxGeometryHolder &out)
bool CookMesh (const MeshGeometryInput &input, physx::PxGeometryHolder &out)
 Cook geometry into a triangle mesh or a convex mesh, depending on the topology.
bool CookHeightField (const HeightFieldInput &input, float heightRange, float targetSizeX, float targetSizeZ, physx::PxGeometryHolder &out)
 Cook height field samples into a physx height field.
void SetDebugDrawInterface (DebugDrawInterface const &drawInterface)
void UpdateDebugDrawingParameters ()
void EnableDebugDrawing (bool enabled)
void ApplyBounds (PxBounds3 const &box)
void DebugVisualizeScene (PxScene *scene)
bool CheckAndResetModified (Core::CVar *cvar)
void DrawPhysicsDebug ()
void RenderUI (Math::mat4 const &cameraViewTransform)
void RenderMaterialsUI ()
void RegisterDefaultGeometryLoader ()
 Register the compiled-in readers as the geometry loader.
void SetGeometryLoader (const GeometryLoader &loader)
 register the geometry loader to use
const GeometryLoader & GetGeometryLoader ()
 get the currently registered geometry loader
SizeT IndexSize (Physics::IndexType type)
 Byte size of an index type.
static void CollectActiveActors (Physics::Scene &scene)
 Fills the scene with the actors PhysX reports active.
static void PreSceneUpdates (Physics::Scene &scene)
static void PostSceneUpdates (Physics::Scene &scene)
static PxShape * GetShapeCopy (PxShape *shape, Math::vec3 const &scale)
static PxShape * CreateColliderShape (physx::PxGeometryHolder geometry, physx::PxMaterial *material, physx::PxTransform const &trans, const Util::String &colliderName, bool exclusive)
static void AddCollider (physx::PxGeometryHolder geometry, IndexT material, const Math::transform &trans, const char *name, const Util::String &colliderName, BodyInfo &bodyInfo, const Util::StringAtom &tag, Ids::Id32 entry)
static void AddMeshColliders (PhysicsResource::MeshColliderT *colliderNode, Math::transform const &nodeTransform, Util::String nodeName, IndexT materialIdx, const Util::StringAtom &tag, Ids::Id32 entry, BodyInfo &targetBody)
static void AddHeightField (PhysicsResource::HeightFieldColliderT *colliderNode, Math::transform const &nodeTransform, Util::String nodeName, IndexT materialIdx, const Util::StringAtom &tag, Ids::Id32 entry, BodyInfo &targetBody)
 __ImplementInterfaceSingleton (Physics::VisualDebugger)
void LoadMaterialTable (const IO::URI &materialTable)
void Setup ()
 initialize the physics subsystem and create a default scene
void ShutDown ()
 close the physics subsystem
IndexT CreateScene ()
void DestroyScene (IndexT sceneId)
Physics::Scene & GetScene (IndexT idx)
void SetEventCallback (EventCallbackType callback, IndexT sceneId)
void SetActiveActorCallback (UpdateFunctionType callback, IndexT sceneId=0)
 called once per step for every actor PhysX reported active on that step
void RenderDebug ()
 render a debug visualization of the level
void LoadCollisionFilters ()
Physics::Material & GetMaterial (IndexT idx)
void SetOnSleepCallback (Util::Delegate< void(ActorId *id, SizeT num)> const &callback)
void SetOnWakeCallback (Util::Delegate< void(ActorId *id, SizeT num)> const &callback)
IndexT SetPhysicsMaterial (Util::StringAtom name, float staticFriction, float dynamicFriction, float restitution, float density)
IndexT LookupMaterial (Util::StringAtom name)
SizeT GetNrMaterials ()
void Step (Timing::Time delta)
 perform a sync simulation step on every scene
void Step (Timing::Time delta, IndexT scene)
 one sync simulation step of a single scene. Actor reads and writes have to happen outside of this
ActorId CreateActorInstance (Physics::ActorResourceId id, Math::transform const &trans, Physics::ActorType type, uint64_t userData, IndexT scene)
void DestroyActorInstance (Physics::ActorId id)

Variables

Util::Array< Character > controllers
Ids::IdGenerationPool controllerIdPool
Core::CVar * cl_debug_draw_physics = Core::CVarCreate(Core::CVarType::CVar_Int, "cl_debug_draw_physics", "0", "Set to 1 will enable physics debug drawing")
Core::CVar * cl_physics_draw_scale = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale", "1.0", "Visualization drawing scale.")
Core::CVar * cl_physics_draw_scale_points = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale_points", "2.0", "Point visualization drawing scale.")
Core::CVar * cl_physics_draw_scale_lines = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale_lines", "2.0", "Line visualization drawing scale.")
Core::CVar * cl_physics_draw_scale_triangles = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale_triangles", "2.0", "Triangle visualization drawing scale.")
Core::CVar * cl_physics_draw_world_axes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_world_axes", "0", "Visualize the world axes. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_body_axes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_body_axes", "0", "Visualize a bodies axes. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_body_mass_axes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_body_mass_axes", "0", "Visualize a body's mass axes. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_body_lin_velocity = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_body_lin_velocity", "0", "Visualize the bodies linear velocity. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_body_ang_velocity = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_body_ang_velocity", "0", "Visualize the bodies angular velocity. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_contact_point = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_contact_point", "0", " Visualize contact points. Will enable contact information. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_contact_normal = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_contact_normal", "0", "Visualize contact normals. Will enable contact information. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_contact_error = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_contact_error", "0", " Visualize contact errors. Will enable contact information. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_contact_force = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_contact_force", "0", "Visualize Contact forces. Will enable contact information. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_actor_axes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_actor_axes", "0", "Visualize actor axes. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_collision_aabbs = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_aabbs", "0", "Visualize bounds (AABBs in world space). Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_collision_shapes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_shapes", "1", "Shape visualization. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_collision_axes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_axes", "0", "Shape axis visualization. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_collision_compounds = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_compounds", "0", "Compound visualization (compound AABBs in world space). Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_collision_fnormals = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_fnormals", "0", "Mesh & convex face normals. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_collision_edges = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_edges", "0", "Active edges for meshes. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_collision_static = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_static", "0", "Static pruning structures. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_collision_dynamic = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_dynamic", "0", "Dynamic pruning structures. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_joint_local_frames = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_joint_local_frames", "0", "Visualize joint local axes. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_joint_limits = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_joint_limits", "0", "Visualize joint limits. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_cull_box = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_cull_box", "0", "Visualize culling box. Needs cl_debug_draw_physics set to 1.")
Core::CVar * cl_physics_draw_mbp_regions = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_mbp_regions", "0", "MBP regions. Needs cl_debug_draw_physics set to 1.")
DebugState dstate
static GeometryLoader geometryLoader
PhysxState state
StreamActorPool * actorPool = nullptr
Ptr< Physics::StreamActorPool > actorLoader

Typedef Documentation

◆ CharacterCollision

◆ EventCallbackType

◆ UpdateFunctionType

using Physics::UpdateFunctionType = void (*) (const Actor&)

Enumeration Type Documentation

◆ ActorType

Enumerator
Static 
Kinematic 
Dynamic 

◆ CharacterCollisionBits

Enumerator
Sides 
Up 
Down 
CharacterCollisionBitsMax 

◆ IndexType

enum class Physics::IndexType
strong
Enumerator
InvalidIndexType 
Index16 
Index32 

◆ PhysicsIdType

Enumerator
ActorIdType 
MeshIdType 

Function Documentation

◆ __ImplementInterfaceSingleton()

Physics::__ImplementInterfaceSingleton ( Physics::VisualDebugger )

◆ AddCollider()

void Physics::AddCollider ( physx::PxGeometryHolder geometry,
IndexT material,
const Math::transform & trans,
const char * name,
const Util::String & colliderName,
BodyInfo & bodyInfo,
const Util::StringAtom & tag,
Ids::Id32 entry )
static

◆ AddHeightField()

void Physics::AddHeightField ( PhysicsResource::HeightFieldColliderT * colliderNode,
Math::transform const & nodeTransform,
Util::String nodeName,
IndexT materialIdx,
const Util::StringAtom & tag,
Ids::Id32 entry,
BodyInfo & targetBody )
static

◆ AddMeshColliders()

void Physics::AddMeshColliders ( PhysicsResource::MeshColliderT * colliderNode,
Math::transform const & nodeTransform,
Util::String nodeName,
IndexT materialIdx,
const Util::StringAtom & tag,
Ids::Id32 entry,
BodyInfo & targetBody )
static

◆ ApplyBounds()

void Physics::ApplyBounds ( PxBounds3 const & box)

◆ ApplyMass()

void Physics::ApplyMass ( ActorId actor)
static

Recompute the mass and inertia of a body.

A mass of 0 means the mass is derived from the shape volumes and the material densities, otherwise the mass is distributed over the shapes.

◆ ApplyShapeFilterData()

void Physics::ApplyShapeFilterData ( PxShape * shape,
ActorId actor )
static

word0 is the collision group and word1 the feedback, which is what the simulation filter reads

◆ ApplyShapeFlags()

void Physics::ApplyShapeFlags ( PxShape * shape,
bool isTrigger )
static

◆ ApplyShapeState()

void Physics::ApplyShapeState ( Shape & shape,
const ColliderDescription & desc )
static

Apply the material, flags and filter data of a description onto an existing shape.

◆ BuildGeometry()

bool Physics::BuildGeometry ( const ColliderDescription & desc,
PxGeometryHolder & out )
static

◆ CheckAndResetModified()

bool Physics::CheckAndResetModified ( Core::CVar * cvar)

◆ CollectActiveActors()

void Physics::CollectActiveActors ( Physics::Scene & scene)
static

Fills the scene with the actors PhysX reports active.

◆ ColliderGeometryHash()

uint64_t Physics::ColliderGeometryHash ( const ColliderDescription & desc)
static

Hash of the parts of a collider description that decide the cooked geometry.

The transform is not hashed, because a shape can be moved without recooking, and neither is the material, which is applied without rebuilding the shape.

◆ CookApproxSkin()

Util::Array< CookedConvex > Physics::CookApproxSkin ( const MeshGeometryInput & input)

Cook one convex hull per bone from skinned geometry.

◆ CookHeightField() [1/2]

bool Physics::CookHeightField ( const HeightFieldInput & input,
float heightRange,
float targetSizeX,
float targetSizeZ,
physx::PxGeometryHolder & out )

Cook height field samples into a physx height field.

heightRange is the vertical span in meters and targetSizeX / targetSizeZ the world extent of the field

◆ CookHeightField() [2/2]

bool Physics::CookHeightField ( const HeightFieldInput & input,
float heightRange,
float targetSizeX,
float targetSizeZ,
PxGeometryHolder & out )

◆ CookMesh() [1/2]

bool Physics::CookMesh ( const MeshGeometryInput & input,
physx::PxGeometryHolder & out )

Cook geometry into a triangle mesh or a convex mesh, depending on the topology.

◆ CookMesh() [2/2]

bool Physics::CookMesh ( const MeshGeometryInput & input,
PxGeometryHolder & out )

◆ CreateActorInstance()

ActorId Physics::CreateActorInstance ( Physics::ActorResourceId id,
Math::transform const & trans,
Physics::ActorType type,
uint64_t userData,
IndexT scene )

◆ CreateColliderShape()

PxShape * Physics::CreateColliderShape ( physx::PxGeometryHolder geometry,
physx::PxMaterial * material,
physx::PxTransform const & trans,
const Util::String & colliderName,
bool exclusive )
static

◆ CreateScene()

IndexT Physics::CreateScene ( )

◆ DebugVisualizeScene()

void Physics::DebugVisualizeScene ( PxScene * scene)

◆ DestroyActorInstance()

void Physics::DestroyActorInstance ( Physics::ActorId id)

◆ DestroyScene()

void Physics::DestroyScene ( IndexT sceneId)

◆ DrawPhysicsDebug()

void Physics::DrawPhysicsDebug ( )

◆ EnableDebugDrawing()

void Physics::EnableDebugDrawing ( bool enabled)

◆ GetGeometryLoader()

const GeometryLoader & Physics::GetGeometryLoader ( )

get the currently registered geometry loader

◆ GetMaterial()

Material & Physics::GetMaterial ( IndexT idx)

◆ GetNrMaterials()

SizeT Physics::GetNrMaterials ( )

◆ GetScene()

Physics::Scene & Physics::GetScene ( IndexT idx)

◆ GetShapeCopy()

PxShape * Physics::GetShapeCopy ( PxShape * shape,
Math::vec3 const & scale )
static

◆ HashFloat()

uint64_t Physics::HashFloat ( float value)
inlinestatic

◆ HashMix()

void Physics::HashMix ( uint64_t & hash,
uint64_t value )
inlinestatic

FNV-1a hash.

◆ IndexSize()

SizeT Physics::IndexSize ( Physics::IndexType type)
inline

Byte size of an index type.

◆ IsKinematic()

bool Physics::IsKinematic ( PxRigidActor * actor)
static

Kinematic is a rigid body flag, and the actors tracked here can be static, so the actor kind has to be checked before the flag is read.

◆ LoadCollisionFilters()

void Physics::LoadCollisionFilters ( )

◆ LoadMaterialTable()

void Physics::LoadMaterialTable ( const IO::URI & materialTable)

◆ LookupMaterial()

IndexT Physics::LookupMaterial ( Util::StringAtom name)

◆ PostSceneUpdates()

void Physics::PostSceneUpdates ( Physics::Scene & scene)
static

◆ PreSceneUpdates()

void Physics::PreSceneUpdates ( Physics::Scene & scene)
static

◆ RegisterDefaultGeometryLoader()

void Physics::RegisterDefaultGeometryLoader ( )

Register the compiled-in readers as the geometry loader.

A project that uses another format calls Physics::SetGeometryLoader() instead.

◆ RenderDebug()

void Physics::RenderDebug ( )

render a debug visualization of the level

◆ RenderMaterialsUI()

void Physics::RenderMaterialsUI ( )

◆ RenderUI()

void Physics::RenderUI ( Math::mat4 const & cameraViewTransform)

◆ ResolveShapeDensity()

float Physics::ResolveShapeDensity ( IndexT materialId)
static

◆ ResolveShapeMaterial()

PxMaterial * Physics::ResolveShapeMaterial ( IndexT materialId)
static

◆ SetActiveActorCallback()

void Physics::SetActiveActorCallback ( UpdateFunctionType callback,
IndexT sceneId )

called once per step for every actor PhysX reported active on that step

◆ SetDebugDrawInterface()

void Physics::SetDebugDrawInterface ( DebugDrawInterface const & drawInterface)

◆ SetEventCallback()

void Physics::SetEventCallback ( EventCallbackType callback,
IndexT sceneId )

◆ SetGeometryLoader()

void Physics::SetGeometryLoader ( const GeometryLoader & loader)

register the geometry loader to use

◆ SetOnSleepCallback()

void Physics::SetOnSleepCallback ( Util::Delegate< void(ActorId *id, SizeT num)> const & callback)

◆ SetOnWakeCallback()

void Physics::SetOnWakeCallback ( Util::Delegate< void(ActorId *id, SizeT num)> const & callback)

◆ SetPhysicsMaterial()

IndexT Physics::SetPhysicsMaterial ( Util::StringAtom name,
float staticFriction,
float dynamicFriction,
float restitution,
float density )

◆ Setup()

void Physics::Setup ( )

initialize the physics subsystem and create a default scene

◆ ShutDown()

void Physics::ShutDown ( )

close the physics subsystem

◆ Step() [1/2]

void Physics::Step ( Timing::Time delta)

perform a sync simulation step on every scene

◆ Step() [2/2]

void Physics::Step ( Timing::Time delta,
IndexT scene )

one sync simulation step of a single scene. Actor reads and writes have to happen outside of this

◆ UpdateDebugDrawingParameters()

void Physics::UpdateDebugDrawingParameters ( )

Variable Documentation

◆ actorLoader

Ptr<Physics::StreamActorPool> Physics::actorLoader

◆ actorPool

StreamActorPool * Physics::actorPool = nullptr

◆ cl_debug_draw_physics

Core::CVar* Physics::cl_debug_draw_physics = Core::CVarCreate(Core::CVarType::CVar_Int, "cl_debug_draw_physics", "0", "Set to 1 will enable physics debug drawing")

◆ cl_physics_draw_actor_axes

Core::CVar* Physics::cl_physics_draw_actor_axes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_actor_axes", "0", "Visualize actor axes. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_body_ang_velocity

Core::CVar* Physics::cl_physics_draw_body_ang_velocity = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_body_ang_velocity", "0", "Visualize the bodies angular velocity. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_body_axes

Core::CVar* Physics::cl_physics_draw_body_axes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_body_axes", "0", "Visualize a bodies axes. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_body_lin_velocity

Core::CVar* Physics::cl_physics_draw_body_lin_velocity = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_body_lin_velocity", "0", "Visualize the bodies linear velocity. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_body_mass_axes

Core::CVar* Physics::cl_physics_draw_body_mass_axes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_body_mass_axes", "0", "Visualize a body's mass axes. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_collision_aabbs

Core::CVar* Physics::cl_physics_draw_collision_aabbs = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_aabbs", "0", "Visualize bounds (AABBs in world space). Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_collision_axes

Core::CVar* Physics::cl_physics_draw_collision_axes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_axes", "0", "Shape axis visualization. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_collision_compounds

Core::CVar* Physics::cl_physics_draw_collision_compounds = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_compounds", "0", "Compound visualization (compound AABBs in world space). Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_collision_dynamic

Core::CVar* Physics::cl_physics_draw_collision_dynamic = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_dynamic", "0", "Dynamic pruning structures. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_collision_edges

Core::CVar* Physics::cl_physics_draw_collision_edges = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_edges", "0", "Active edges for meshes. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_collision_fnormals

Core::CVar* Physics::cl_physics_draw_collision_fnormals = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_fnormals", "0", "Mesh & convex face normals. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_collision_shapes

Core::CVar* Physics::cl_physics_draw_collision_shapes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_shapes", "1", "Shape visualization. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_collision_static

Core::CVar* Physics::cl_physics_draw_collision_static = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_collision_static", "0", "Static pruning structures. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_contact_error

Core::CVar* Physics::cl_physics_draw_contact_error = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_contact_error", "0", " Visualize contact errors. Will enable contact information. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_contact_force

Core::CVar* Physics::cl_physics_draw_contact_force = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_contact_force", "0", "Visualize Contact forces. Will enable contact information. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_contact_normal

Core::CVar* Physics::cl_physics_draw_contact_normal = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_contact_normal", "0", "Visualize contact normals. Will enable contact information. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_contact_point

Core::CVar* Physics::cl_physics_draw_contact_point = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_contact_point", "0", " Visualize contact points. Will enable contact information. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_cull_box

Core::CVar* Physics::cl_physics_draw_cull_box = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_cull_box", "0", "Visualize culling box. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_joint_limits

Core::CVar* Physics::cl_physics_draw_joint_limits = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_joint_limits", "0", "Visualize joint limits. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_joint_local_frames

Core::CVar* Physics::cl_physics_draw_joint_local_frames = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_joint_local_frames", "0", "Visualize joint local axes. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_mbp_regions

Core::CVar* Physics::cl_physics_draw_mbp_regions = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_mbp_regions", "0", "MBP regions. Needs cl_debug_draw_physics set to 1.")

◆ cl_physics_draw_scale

Core::CVar* Physics::cl_physics_draw_scale = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale", "1.0", "Visualization drawing scale.")

◆ cl_physics_draw_scale_lines

Core::CVar* Physics::cl_physics_draw_scale_lines = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale_lines", "2.0", "Line visualization drawing scale.")

◆ cl_physics_draw_scale_points

Core::CVar* Physics::cl_physics_draw_scale_points = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale_points", "2.0", "Point visualization drawing scale.")

◆ cl_physics_draw_scale_triangles

Core::CVar* Physics::cl_physics_draw_scale_triangles = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale_triangles", "2.0", "Triangle visualization drawing scale.")

◆ cl_physics_draw_world_axes

Core::CVar* Physics::cl_physics_draw_world_axes = Core::CVarCreate(Core::CVar_Int, "cl_physics_draw_world_axes", "0", "Visualize the world axes. Needs cl_debug_draw_physics set to 1.")

◆ controllerIdPool

Ids::IdGenerationPool Physics::controllerIdPool

◆ controllers

Util::Array<Character> Physics::controllers

◆ dstate

DebugState Physics::dstate

◆ geometryLoader

GeometryLoader Physics::geometryLoader
static

◆ state

PhysxState Physics::state