PlayRho  2.0.0
An interactive physics engine & library.
AabbTreeWorld.hpp File Reference

Declarations of the AabbTreeWorld class. More...

#include <cstdint>
#include <map>
#include <optional>
#include <tuple>
#include <type_traits>
#include <utility>
#include <vector>
#include <playrho/BodyID.hpp>
#include <playrho/BodyShapeFunction.hpp>
#include <playrho/Contact.hpp>
#include <playrho/Contactable.hpp>
#include <playrho/ContactFunction.hpp>
#include <playrho/ContactID.hpp>
#include <playrho/ContactKey.hpp>
#include <playrho/JointFunction.hpp>
#include <playrho/JointID.hpp>
#include <playrho/Interval.hpp>
#include <playrho/Island.hpp>
#include <playrho/IslandStats.hpp>
#include <playrho/KeyedContactID.hpp>
#include <playrho/ObjectPool.hpp>
#include <playrho/Positive.hpp>
#include <playrho/Real.hpp>
#include <playrho/Settings.hpp>
#include <playrho/ShapeFunction.hpp>
#include <playrho/ShapeID.hpp>
#include <playrho/Span.hpp>
#include <playrho/StepStats.hpp>
#include <playrho/Units.hpp>
#include <playrho/Vector2.hpp>
#include <playrho/ZeroToUnderOne.hpp>
#include <playrho/pmr/MemoryResource.hpp>
#include <playrho/pmr/PoolMemoryResource.hpp>
#include <playrho/pmr/StatsResource.hpp>
#include <playrho/d2/Body.hpp>
#include <playrho/d2/BodyConstraint.hpp>
#include <playrho/d2/ContactImpulsesFunction.hpp>
#include <playrho/d2/ContactManifoldFunction.hpp>
#include <playrho/d2/DynamicTree.hpp>
#include <playrho/d2/Joint.hpp>
#include <playrho/d2/Shape.hpp>
#include <playrho/d2/Transformation.hpp>
#include <playrho/d2/WorldConf.hpp>
Include dependency graph for AabbTreeWorld.hpp:

Classes

class  playrho::d2::AabbTreeWorld
 An AABB dynamic-tree based world implementation. More...
 

Namespaces

 playrho
 
 playrho::d2
 

Typedefs

using playrho::d2::BodyContactIDs = std::vector< std::tuple< ContactKey, ContactID > >
 Container type for Body associated contact information.
 
using playrho::d2::BodyIDs = std::vector< BodyID >
 Body IDs container type.
 
using playrho::d2::BodyJointIDs = std::vector< std::pair< BodyID, JointID > >
 Body joint IDs container type.
 
using playrho::d2::BodyShapeIDs = std::vector< std::pair< BodyID, ShapeID > >
 Body shape IDs container type.
 
using playrho::d2::JointIDs = std::vector< JointID >
 Joint IDs container type. More...
 
using playrho::d2::KeyedContactIDs = std::vector< KeyedContactID >
 Keyed contact IDs container type.
 
using playrho::d2::ProxyIDs = std::vector< DynamicTree::Size >
 Proxy container type alias.
 

Functions

void playrho::d2::Attach (AabbTreeWorld &world, BodyID id, ShapeID shapeID)
 Associates a validly identified shape with the validly identified body. More...
 
BodyID playrho::d2::CreateBody (AabbTreeWorld &world, const BodyConf &def)
 Creates a body within the world that's a copy of the given one.
 
bool playrho::d2::Detach (AabbTreeWorld &world, BodyID id, ShapeID shapeID)
 Disassociates a validly identified shape from the validly identified body. More...
 
const std::vector< ShapeID > & playrho::d2::GetShapes (const AabbTreeWorld &world, BodyID id)
 Disassociates all of the associated shape from the validly identified body. More...
 
ContactID playrho::d2::GetSoonestContact (const Span< const KeyedContactID > &ids, const Span< const Contact > &contacts) noexcept
 Gets the identifier of the contact with the lowest time of impact. More...
 
AabbTreeWorld Listener Non-Member Functions
void playrho::d2::SetBeginContactListener (AabbTreeWorld &world, ContactFunction listener) noexcept
 Register a begin contact event listener.
 
void playrho::d2::SetDetachListener (AabbTreeWorld &world, BodyShapeFunction listener) noexcept
 Registers a detach listener for shapes detaching from bodies.
 
void playrho::d2::SetEndContactListener (AabbTreeWorld &world, ContactFunction listener) noexcept
 Register an end contact event listener.
 
void playrho::d2::SetJointDestructionListener (AabbTreeWorld &world, JointFunction listener) noexcept
 Register a destruction listener for joints. More...
 
void playrho::d2::SetPostSolveContactListener (AabbTreeWorld &world, ContactImpulsesFunction listener) noexcept
 Register a post-solve contact event listener.
 
void playrho::d2::SetPreSolveContactListener (AabbTreeWorld &world, ContactManifoldFunction listener) noexcept
 Register a pre-solve contact event listener.
 
void playrho::d2::SetShapeDestructionListener (AabbTreeWorld &world, ShapeFunction listener) noexcept
 Registers a destruction listener for shapes. More...
 
AabbTreeWorld Miscellaneous Non-Member Functions
void playrho::d2::Clear (AabbTreeWorld &world) noexcept
 Clears this world. More...
 
const BodyShapeIDs & playrho::d2::GetFixturesForProxies (const AabbTreeWorld &world) noexcept
 Gets the fixtures-for-proxies for this world. More...
 
Frequency playrho::d2::GetInvDeltaTime (const AabbTreeWorld &world) noexcept
 Gets the inverse delta time. More...
 
const ProxyIDs & playrho::d2::GetProxies (const AabbTreeWorld &world) noexcept
 Gets the dynamic tree leaves queued for finding new contacts.
 
std::optional< pmr::StatsResource::Stats > playrho::d2::GetResourceStats (const AabbTreeWorld &world) noexcept
 Gets the resource statistics of the specified world.
 
bool playrho::d2::GetSubStepping (const AabbTreeWorld &world) noexcept
 Gets whether or not sub-stepping is enabled. More...
 
const DynamicTree & playrho::d2::GetTree (const AabbTreeWorld &world) noexcept
 Gets access to the broad-phase dynamic tree information.
 
Interval< Positive< Length > > playrho::d2::GetVertexRadiusInterval (const AabbTreeWorld &world) noexcept
 Gets the vertex radius interval allowable for the given world. More...
 
bool playrho::d2::IsLocked (const AabbTreeWorld &world) noexcept
 Is the world locked (in the middle of a time step).
 
bool playrho::d2::IsStepComplete (const AabbTreeWorld &world) noexcept
 Whether or not "step" is complete. More...
 
bool playrho::d2::operator!= (const AabbTreeWorld &lhs, const AabbTreeWorld &rhs)
 Inequality operator for world comparisons.
 
bool playrho::d2::operator== (const AabbTreeWorld &lhs, const AabbTreeWorld &rhs)
 Equality operator for world comparisons.
 
void playrho::d2::SetSubStepping (AabbTreeWorld &world, bool flag) noexcept
 Enables/disables single stepped continuous physics. More...
 
void playrho::d2::ShiftOrigin (AabbTreeWorld &world, const Length2 &newOrigin)
 Shifts the world origin. More...
 
StepStats playrho::d2::Step (AabbTreeWorld &world, const StepConf &conf)
 Steps the world simulation according to the given configuration. More...
 
AabbTreeWorld Body Member Functions

Member functions relating to bodies.

BodyID playrho::d2::CreateBody (AabbTreeWorld &world, Body body=Body{})
 Creates a rigid body that's a copy of the given one. More...
 
void playrho::d2::Destroy (AabbTreeWorld &world, BodyID id)
 Destroys the identified body. More...
 
const BodyIDs & playrho::d2::GetBodies (const AabbTreeWorld &world) noexcept
 Gets a container of valid world body identifiers for this constant world. More...
 
const BodyIDs & playrho::d2::GetBodiesForProxies (const AabbTreeWorld &world) noexcept
 Gets the bodies-for-proxies container for this world. More...
 
const Body & playrho::d2::GetBody (const AabbTreeWorld &world, BodyID id)
 Gets the identified body. More...
 
BodyCounter playrho::d2::GetBodyRange (const AabbTreeWorld &world) noexcept
 Gets the extent of the currently valid body range. More...
 
const BodyContactIDs & playrho::d2::GetContacts (const AabbTreeWorld &world, BodyID id)
 Gets the contacts associated with the identified body. More...
 
const BodyJointIDs & playrho::d2::GetJoints (const AabbTreeWorld &world, BodyID id)
 
const ProxyIDs & playrho::d2::GetProxies (const AabbTreeWorld &world, BodyID id)
 Gets the proxies for the identified body. More...
 
auto playrho::d2::IsDestroyed (const AabbTreeWorld &world, BodyID id) -> bool
 Gets whether the given identifier is to a body that's been destroyed. More...
 
void playrho::d2::SetBody (AabbTreeWorld &world, BodyID id, Body value)
 Sets the identified body. More...
 
AabbTreeWorld Joint Member Functions

Member functions relating to joints.

JointID playrho::d2::CreateJoint (AabbTreeWorld &world, Joint def)
 Creates a joint to constrain one or more bodies. More...
 
void playrho::d2::Destroy (AabbTreeWorld &world, JointID id)
 Destroys a joint. More...
 
const Joint & playrho::d2::GetJoint (const AabbTreeWorld &world, JointID id)
 Gets the identified joint. More...
 
JointCounter playrho::d2::GetJointRange (const AabbTreeWorld &world) noexcept
 Gets the extent of the currently valid joint range. More...
 
const JointIDs & playrho::d2::GetJoints (const AabbTreeWorld &world) noexcept
 Gets the container of joint IDs of the given world. More...
 
auto playrho::d2::IsDestroyed (const AabbTreeWorld &world, JointID id) -> bool
 Gets whether the given identifier is to a joint that's been destroyed. More...
 
void playrho::d2::SetJoint (AabbTreeWorld &world, JointID id, Joint def)
 Sets the identified joint. More...
 
AabbTreeWorld Shape Member Functions

Member functions relating to shapes.

ShapeID playrho::d2::CreateShape (AabbTreeWorld &world, Shape def)
 Creates an identifiable copy of the given shape within this world. More...
 
void playrho::d2::Destroy (AabbTreeWorld &world, ShapeID id)
 Destroys the identified shape removing any body associations with it first. More...
 
const Shape & playrho::d2::GetShape (const AabbTreeWorld &world, ShapeID id)
 Gets the identified shape. More...
 
ShapeCounter playrho::d2::GetShapeRange (const AabbTreeWorld &world) noexcept
 Gets the extent of the currently valid shape range. More...
 
auto playrho::d2::IsDestroyed (const AabbTreeWorld &world, ShapeID id) -> bool
 Gets whether the given identifier is to a shape that's been destroyed. More...
 
void playrho::d2::SetShape (AabbTreeWorld &world, ShapeID id, Shape def)
 Sets the value of the identified shape. More...
 
AabbTreeWorld Contact Member Functions

Member functions relating to contacts.

const Contact & playrho::d2::GetContact (const AabbTreeWorld &world, ContactID id)
 Gets the identified contact. More...
 
ContactCounter playrho::d2::GetContactRange (const AabbTreeWorld &world) noexcept
 Gets the extent of the currently valid contact range. More...
 
KeyedContactIDs playrho::d2::GetContacts (const AabbTreeWorld &world)
 Gets a container of valid world contact identifiers. More...
 
const Manifold & playrho::d2::GetManifold (const AabbTreeWorld &world, ContactID id)
 Gets the identified manifold. More...
 
auto playrho::d2::IsDestroyed (const AabbTreeWorld &world, ContactID id) -> bool
 Gets whether the given identifier is to a contact that's been destroyed. More...
 
void playrho::d2::SetContact (AabbTreeWorld &world, ContactID id, Contact value)
 Sets the identified contact's state. More...
 
void playrho::d2::SetManifold (AabbTreeWorld &world, ContactID id, const Manifold &value)
 Sets the identified manifold. More...
 

Detailed Description

Declarations of the AabbTreeWorld class.