Bicameral Engine
GPU-resident engine for a magic-research open-world game
Loading...
Searching...
No Matches
bicameral::sim::PhysicsWorld Class Reference

#include <physics_world.h>

Collaboration diagram for bicameral::sim::PhysicsWorld:
[legend]

Public Member Functions

 PhysicsWorld (const PhysicsScene &scene, const physics::PxParameters &parameters)
void Step ()
uint32_t Push (const physics::PxVec3 &origin, const physics::PxVec3 &direction, uint32_t impulseMillinewtonSeconds)
const std::vector< PhysicsBody > & Bodies () const
const PhysicsStepStats & Stats () const
const std::map< std::pair< uint32_t, uint32_t >, PhysicsManifold > & Manifolds () const
uint64_t Tick () const
uint64_t StateHash () const

Private Member Functions

void Substep ()
void UpdateActivity ()
void UpdateContacts ()
void UpdateBetas ()
void WarmStart ()
void InitializeBodies ()
void Linearize ()
void ColorBodies ()
std::vector< std::vector< uint32_t > > DynamicNeighbors () const
std::vector< uint32_t > ChooseLocalMaxima (const std::vector< std::vector< uint32_t > > &neighbors) const
void AssignSmallestColor (uint32_t index, const std::vector< uint32_t > &neighbors)
void RecollideMidStep ()
void SolveColor (int32_t color, int64_t alphaQ16)
void SolveBody (uint32_t index, int64_t alphaQ16)
void RecordSystemBits (const physics::PxBodySystem &system)
void UpdateDuals (int64_t alphaQ16)
void RecordPointBits (const PhysicsContactPoint &point)
void UpdateVelocities ()
void Finish ()

Private Attributes

PhysicsScene m_scene
physics::PxParameters m_parameters
int64_t m_rate = 0
std::vector< PhysicsBody > m_bodies
std::map< std::pair< uint32_t, uint32_t >, PhysicsManifold > m_manifolds
std::vector< std::vector< std::pair< const PhysicsManifold *, bool > > > m_bodyManifolds
int32_t m_colorCount = 0
uint64_t m_tick = 0
PhysicsStepStats m_stats

Detailed Description

Definition at line 50 of file physics_world.h.

Constructor & Destructor Documentation

◆ PhysicsWorld()

bicameral::sim::PhysicsWorld::PhysicsWorld ( const PhysicsScene & scene,
const physics::PxParameters & parameters )

Definition at line 42 of file physics_world.cpp.

References bicameral::sim::PhysicsScene::bodies, m_bodies, m_bodyManifolds, m_parameters, m_rate, m_scene, and bicameral::sim::MakePhysicsBody().

Here is the call graph for this function:

Member Function Documentation

◆ AssignSmallestColor()

void bicameral::sim::PhysicsWorld::AssignSmallestColor ( uint32_t index,
const std::vector< uint32_t > & neighbors )
private

Definition at line 216 of file physics_world.cpp.

References m_bodies, and m_colorCount.

Referenced by ColorBodies().

Here is the caller graph for this function:

◆ Bodies()

const std::vector< PhysicsBody > & bicameral::sim::PhysicsWorld::Bodies ( ) const
inlinenodiscard

Definition at line 61 of file physics_world.h.

References m_bodies.

◆ ChooseLocalMaxima()

std::vector< uint32_t > bicameral::sim::PhysicsWorld::ChooseLocalMaxima ( const std::vector< std::vector< uint32_t > > & neighbors) const
nodiscardprivate

Definition at line 198 of file physics_world.cpp.

References m_bodies.

Referenced by ColorBodies().

Here is the caller graph for this function:

◆ ColorBodies()

void bicameral::sim::PhysicsWorld::ColorBodies ( )
private

Definition at line 164 of file physics_world.cpp.

References AssignSmallestColor(), ChooseLocalMaxima(), DynamicNeighbors(), m_colorCount, and m_stats.

Referenced by Substep().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DynamicNeighbors()

std::vector< std::vector< uint32_t > > bicameral::sim::PhysicsWorld::DynamicNeighbors ( ) const
nodiscardprivate

Definition at line 184 of file physics_world.cpp.

References m_bodies, and m_manifolds.

Referenced by ColorBodies().

Here is the caller graph for this function:

◆ Finish()

void bicameral::sim::PhysicsWorld::Finish ( )
private

Definition at line 301 of file physics_world.cpp.

References m_bodies.

Referenced by Substep().

Here is the caller graph for this function:

◆ InitializeBodies()

void bicameral::sim::PhysicsWorld::InitializeBodies ( )
private

Definition at line 153 of file physics_world.cpp.

References m_bodies, and m_rate.

Referenced by Substep().

Here is the caller graph for this function:

◆ Linearize()

void bicameral::sim::PhysicsWorld::Linearize ( )
private

Definition at line 158 of file physics_world.cpp.

References m_bodies, and m_manifolds.

Referenced by Substep().

Here is the caller graph for this function:

◆ Manifolds()

const std::map< std::pair< uint32_t, uint32_t >, PhysicsManifold > & bicameral::sim::PhysicsWorld::Manifolds ( ) const
inlinenodiscard

Definition at line 63 of file physics_world.h.

References m_manifolds.

◆ Push()

uint32_t bicameral::sim::PhysicsWorld::Push ( const physics::PxVec3 & origin,
const physics::PxVec3 & direction,
uint32_t impulseMillinewtonSeconds )

Definition at line 307 of file physics_world.cpp.

References m_bodies, and m_rate.

Referenced by bicameral::frame::anonymous_namespace{frame_loop.cpp}::PushFromCommand().

Here is the caller graph for this function:

◆ RecollideMidStep()

void bicameral::sim::PhysicsWorld::RecollideMidStep ( )
private

Definition at line 226 of file physics_world.cpp.

References m_bodies, m_manifolds, m_parameters, and m_stats.

Referenced by Substep().

Here is the caller graph for this function:

◆ RecordPointBits()

void bicameral::sim::PhysicsWorld::RecordPointBits ( const PhysicsContactPoint & point)
private

Definition at line 289 of file physics_world.cpp.

References m_stats.

Referenced by UpdateDuals().

Here is the caller graph for this function:

◆ RecordSystemBits()

void bicameral::sim::PhysicsWorld::RecordSystemBits ( const physics::PxBodySystem & system)
private

Definition at line 267 of file physics_world.cpp.

References m_stats.

Referenced by SolveBody().

Here is the caller graph for this function:

◆ SolveBody()

void bicameral::sim::PhysicsWorld::SolveBody ( uint32_t index,
int64_t alphaQ16 )
private

Definition at line 242 of file physics_world.cpp.

References m_bodies, m_bodyManifolds, m_parameters, m_stats, and RecordSystemBits().

Referenced by SolveColor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SolveColor()

void bicameral::sim::PhysicsWorld::SolveColor ( int32_t color,
int64_t alphaQ16 )
private

Definition at line 235 of file physics_world.cpp.

References m_bodies, and SolveBody().

Referenced by Substep().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StateHash()

uint64_t bicameral::sim::PhysicsWorld::StateHash ( ) const
nodiscard

Definition at line 328 of file physics_world.cpp.

References m_bodies, and m_tick.

◆ Stats()

const PhysicsStepStats & bicameral::sim::PhysicsWorld::Stats ( ) const
inlinenodiscard

Definition at line 62 of file physics_world.h.

References m_stats.

◆ Step()

void bicameral::sim::PhysicsWorld::Step ( )

Definition at line 50 of file physics_world.cpp.

References m_parameters, m_stats, m_tick, Substep(), and UpdateActivity().

Here is the call graph for this function:

◆ Substep()

void bicameral::sim::PhysicsWorld::Substep ( )
private

Definition at line 59 of file physics_world.cpp.

References ColorBodies(), Finish(), InitializeBodies(), Linearize(), m_colorCount, m_parameters, RecollideMidStep(), SolveColor(), UpdateContacts(), UpdateDuals(), UpdateVelocities(), and WarmStart().

Referenced by Step().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Tick()

uint64_t bicameral::sim::PhysicsWorld::Tick ( ) const
inlinenodiscard

Definition at line 66 of file physics_world.h.

References m_tick.

◆ UpdateActivity()

void bicameral::sim::PhysicsWorld::UpdateActivity ( )
private

Definition at line 86 of file physics_world.cpp.

References m_bodies, and m_tick.

Referenced by Step().

Here is the caller graph for this function:

◆ UpdateBetas()

void bicameral::sim::PhysicsWorld::UpdateBetas ( )
private

Definition at line 130 of file physics_world.cpp.

References m_bodies, m_manifolds, and m_parameters.

Referenced by UpdateContacts().

Here is the caller graph for this function:

◆ UpdateContacts()

void bicameral::sim::PhysicsWorld::UpdateContacts ( )
private

Definition at line 92 of file physics_world.cpp.

References m_bodies, m_bodyManifolds, m_manifolds, m_parameters, m_rate, m_scene, m_stats, and UpdateBetas().

Referenced by Substep().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateDuals()

void bicameral::sim::PhysicsWorld::UpdateDuals ( int64_t alphaQ16)
private

Definition at line 275 of file physics_world.cpp.

References m_bodies, m_manifolds, m_parameters, and RecordPointBits().

Referenced by Substep().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateVelocities()

void bicameral::sim::PhysicsWorld::UpdateVelocities ( )
private

Definition at line 296 of file physics_world.cpp.

References m_bodies, and m_rate.

Referenced by Substep().

Here is the caller graph for this function:

◆ WarmStart()

void bicameral::sim::PhysicsWorld::WarmStart ( )
private

Definition at line 148 of file physics_world.cpp.

References m_manifolds, and m_parameters.

Referenced by Substep().

Here is the caller graph for this function:

Member Data Documentation

◆ m_bodies

◆ m_bodyManifolds

std::vector<std::vector<std::pair<const PhysicsManifold*, bool> > > bicameral::sim::PhysicsWorld::m_bodyManifolds
private

Definition at line 99 of file physics_world.h.

Referenced by PhysicsWorld(), SolveBody(), and UpdateContacts().

◆ m_colorCount

int32_t bicameral::sim::PhysicsWorld::m_colorCount = 0
private

Definition at line 100 of file physics_world.h.

Referenced by AssignSmallestColor(), ColorBodies(), and Substep().

◆ m_manifolds

std::map<std::pair<uint32_t, uint32_t>, PhysicsManifold> bicameral::sim::PhysicsWorld::m_manifolds
private

◆ m_parameters

physics::PxParameters bicameral::sim::PhysicsWorld::m_parameters
private

◆ m_rate

int64_t bicameral::sim::PhysicsWorld::m_rate = 0
private

◆ m_scene

PhysicsScene bicameral::sim::PhysicsWorld::m_scene
private

Definition at line 93 of file physics_world.h.

Referenced by PhysicsWorld(), and UpdateContacts().

◆ m_stats

PhysicsStepStats bicameral::sim::PhysicsWorld::m_stats
private

◆ m_tick

uint64_t bicameral::sim::PhysicsWorld::m_tick = 0
private

Definition at line 101 of file physics_world.h.

Referenced by StateHash(), Step(), Tick(), and UpdateActivity().


The documentation for this class was generated from the following files: