|
Nebula
|
Diverse functions for manipulating physics actors.
Implements a resource loader for physics actors.
Physics::DebugUI.
callback interfaces for PhysX
Classes | |
| struct | Actor |
| class | ActorContext |
| struct | ActorId |
| struct | ActorInfo |
| struct | ActorResourceId |
| struct | Aggregate |
| class | AggregateContext |
| struct | AggregateId |
| struct | AggregateInfo |
| struct | AggregateResourceId |
| class | Allocator |
| struct | BodyInfo |
| struct | Character |
| class | CharacterContext |
| struct | CharacterCreateInfo |
| struct | CharacterId |
| struct | Constraint |
| struct | ConstraintId |
| struct | ConstraintInfo |
| struct | ConstraintResourceId |
| struct | ContactEvent |
| struct | DebugDrawInterface |
| struct | DebugState |
| class | ErrorCallback |
| struct | Material |
| 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 | ShapeHandle |
| 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 | PhysicsIdType { ActorIdType , MeshIdType } |
| enum | ActorType { Static , Kinematic , Dynamic } |
| enum | CharacterCollisionBits { Sides = 0 , Up = 1 , Down = 2 , CharacterCollisionBitsMax } |
Functions | |
| 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 () |
| static void | CollectModified (Physics::Scene &scene) |
| static void | PreSceneUpdates (Physics::Scene &scene) |
| static void | PostSceneUpdates (Physics::Scene &scene) |
| static PxShape * | GetShapeCopy (PxShape *shape, Math::vec3 const &scale) |
| static physx::PxGeometryHolder | CreateMeshFromResource (MeshTopology type, Util::StringAtom resource, int primGroup) |
| 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) |
| void | RenderDebug () |
| render a debug visualization of the level | |
| 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 | Update (Timing::Time delta) |
| perform sync simulation step(s) | |
| void | BeginSimulating (Timing::Time delta, IndexT scene) |
| explicit calls to simulate and fetch results. Do not mix with Update! | |
| void | EndSimulating (IndexT scene) |
| void | FlushSimulation (IndexT scene) |
| this will block until simulation has ended for cleanups e.g. | |
| 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", "1.0", "Point visualization drawing scale.") |
| Core::CVar * | cl_physics_draw_scale_lines = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale_lines", "1.0", "Line visualization drawing scale.") |
| Core::CVar * | cl_physics_draw_scale_triangles = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale_triangles", "1.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 |
| PhysxState | state |
| StreamActorPool * | actorPool = nullptr |
| using Physics::EventCallbackType = void (*) (const Util::Array<ContactEvent>&) |
| using Physics::UpdateFunctionType = void (*) (const Actor&) |
| enum Physics::ActorType |
| Physics::__ImplementInterfaceSingleton | ( | Physics::VisualDebugger | ) |
|
static |
|
static |
|
static |
| void Physics::ApplyBounds | ( | PxBounds3 const & | box | ) |
| void Physics::BeginSimulating | ( | Timing::Time | delta, |
| IndexT | scene ) |
explicit calls to simulate and fetch results. Do not mix with Update!
| bool Physics::CheckAndResetModified | ( | Core::CVar * | cvar | ) |
|
static |
| ActorId Physics::CreateActorInstance | ( | Physics::ActorResourceId | id, |
| Math::transform const & | trans, | ||
| Physics::ActorType | type, | ||
| uint64_t | userData, | ||
| IndexT | scene ) |
|
static |
|
static |
| IndexT Physics::CreateScene | ( | ) |
| void Physics::DebugVisualizeScene | ( | PxScene * | scene | ) |
| void Physics::DestroyActorInstance | ( | Physics::ActorId | id | ) |
| void Physics::DestroyScene | ( | IndexT | sceneId | ) |
| void Physics::DrawPhysicsDebug | ( | ) |
| void Physics::EnableDebugDrawing | ( | bool | enabled | ) |
| void Physics::EndSimulating | ( | IndexT | scene | ) |
| void Physics::FlushSimulation | ( | IndexT | scene | ) |
this will block until simulation has ended for cleanups e.g.
| SizeT Physics::GetNrMaterials | ( | ) |
| Physics::Scene & Physics::GetScene | ( | IndexT | idx | ) |
|
static |
| void Physics::LoadMaterialTable | ( | const IO::URI & | materialTable | ) |
| IndexT Physics::LookupMaterial | ( | Util::StringAtom | name | ) |
|
static |
|
static |
| void Physics::RenderDebug | ( | ) |
render a debug visualization of the level
| void Physics::RenderMaterialsUI | ( | ) |
| void Physics::RenderUI | ( | Math::mat4 const & | cameraViewTransform | ) |
| void Physics::SetActiveActorCallback | ( | UpdateFunctionType | callback, |
| IndexT | sceneId ) |
| void Physics::SetDebugDrawInterface | ( | DebugDrawInterface const & | drawInterface | ) |
| void Physics::SetEventCallback | ( | EventCallbackType | callback, |
| IndexT | sceneId ) |
| void Physics::SetOnSleepCallback | ( | Util::Delegate< void(ActorId *id, SizeT num)> const & | callback | ) |
| void Physics::SetOnWakeCallback | ( | Util::Delegate< void(ActorId *id, SizeT num)> const & | callback | ) |
| IndexT Physics::SetPhysicsMaterial | ( | Util::StringAtom | name, |
| float | staticFriction, | ||
| float | dynamicFriction, | ||
| float | restitution, | ||
| float | density ) |
| void Physics::Setup | ( | ) |
initialize the physics subsystem and create a default scene
| void Physics::ShutDown | ( | ) |
close the physics subsystem
| void Physics::Update | ( | Timing::Time | delta | ) |
perform sync simulation step(s)
| void Physics::UpdateDebugDrawingParameters | ( | ) |
| StreamActorPool * Physics::actorPool = nullptr |
| 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") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| 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.") |
| Core::CVar* Physics::cl_physics_draw_scale = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale", "1.0", "Visualization drawing scale.") |
| Core::CVar* Physics::cl_physics_draw_scale_lines = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale_lines", "1.0", "Line visualization drawing scale.") |
| Core::CVar* Physics::cl_physics_draw_scale_points = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale_points", "1.0", "Point visualization drawing scale.") |
| Core::CVar* Physics::cl_physics_draw_scale_triangles = Core::CVarCreate(Core::CVar_Float, "cl_physics_draw_scale_triangles", "1.0", "Triangle visualization drawing scale.") |
| 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.") |
| Ids::IdGenerationPool Physics::controllerIdPool |
| Util::Array<Character> Physics::controllers |
| DebugState Physics::dstate |
| PhysxState Physics::state |