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

Definition of the Joint class and closely related code. More...

#include <memory>
#include <utility>
#include <typeinfo>
#include <type_traits>
#include <playrho/BodyID.hpp>
#include <playrho/LimitState.hpp>
#include <playrho/Real.hpp>
#include <playrho/Span.hpp>
#include <playrho/Templates.hpp>
#include <playrho/TypeInfo.hpp>
#include <playrho/Units.hpp>
#include <playrho/Vector2.hpp>
#include <playrho/d2/UnitVec.hpp>
#include <playrho/d2/detail/JointConcept.hpp>
#include <playrho/d2/detail/JointModel.hpp>
Include dependency graph for Joint.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  playrho::d2::detail::IsValidJointType< T, class >
 An "is valid joint type" trait. More...
 
struct  playrho::d2::detail::IsValidJointType< T, std::void_t< decltype(GetBodyA(std::declval< T >())), decltype(GetBodyB(std::declval< T >())), decltype(GetCollideConnected(std::declval< T >())), decltype(ShiftOrigin(std::declval< T & >(), std::declval< Length2 >())), decltype(InitVelocity(std::declval< T & >(), std::declval< const Span< BodyConstraint > & >(), std::declval< StepConf >(), std::declval< ConstraintSolverConf >())), decltype(SolveVelocity(std::declval< T & >(), std::declval< const Span< BodyConstraint > & >(), std::declval< StepConf >())), decltype(SolvePosition(std::declval< T >(), std::declval< const Span< BodyConstraint > & >(), std::declval< ConstraintSolverConf >())), decltype(std::declval< T >()==std::declval< T >()), decltype(Joint{std::declval< T >()})> >
 An "is valid joint type" trait. More...
 
class  playrho::d2::Joint
 A joint-like constraint on one or more bodies. More...
 

Namespaces

 playrho
 
 playrho::d2
 
 playrho::d2::detail
 

Functions

BodyConstraint & playrho::d2::At (const Span< BodyConstraint > &container, BodyID key)
 Provides referenced access to the identified element of the given container.
 
void playrho::d2::EnableLimit (Joint &object, bool value)
 Enables the specified joint's limit property if it supports one. More...
 
void playrho::d2::EnableMotor (Joint &object, bool value)
 Enables the specified joint's motor property if it supports one. More...
 
Angle playrho::d2::GetAngularLowerLimit (const Joint &object)
 
RotInertia playrho::d2::GetAngularMass (const Joint &object)
 Gets the given joint's angular mass. More...
 
AngularMomentum playrho::d2::GetAngularMotorImpulse (const Joint &object)
 Gets the angular motor impulse of the joint if it has this property. More...
 
Angle playrho::d2::GetAngularOffset (const Joint &object)
 Gets the angular offset property of the specified joint if its type has one. More...
 
AngularMomentum playrho::d2::GetAngularReaction (const Joint &object)
 
Angle playrho::d2::GetAngularUpperLimit (const Joint &object)
 Gets the upper joint limit. More...
 
BodyID playrho::d2::GetBodyA (const Joint &object) noexcept
 Gets the first body attached to this joint.
 
BodyID playrho::d2::GetBodyB (const Joint &object) noexcept
 Gets the second body attached to this joint.
 
bool playrho::d2::GetCollideConnected (const Joint &object) noexcept
 Gets collide connected. More...
 
Real playrho::d2::GetDampingRatio (const Joint &object)
 Gets the given joint's damping ratio property if it has one. More...
 
Frequency playrho::d2::GetFrequency (const Joint &object)
 Gets the frequency of the joint if it has this property. More...
 
Length2 playrho::d2::GetGroundAnchorA (const Joint &object)
 
Length2 playrho::d2::GetGroundAnchorB (const Joint &object)
 
Length playrho::d2::GetLength (const Joint &object)
 Gets the length property of the specified joint if its type has one. More...
 
LimitState playrho::d2::GetLimitState (const Joint &object)
 
Length playrho::d2::GetLinearLowerLimit (const Joint &object)
 
Momentum playrho::d2::GetLinearMotorImpulse (const Joint &object)
 
Length2 playrho::d2::GetLinearOffset (const Joint &object)
 Gets the linear offset property of the specified joint if its type has one. More...
 
Momentum2 playrho::d2::GetLinearReaction (const Joint &object)
 
Length playrho::d2::GetLinearUpperLimit (const Joint &object)
 
Length2 playrho::d2::GetLocalAnchorA (const Joint &object)
 
Length2 playrho::d2::GetLocalAnchorB (const Joint &object)
 
UnitVec playrho::d2::GetLocalXAxisA (const Joint &object)
 Gets the given joint's local X axis A if its type supports that. More...
 
UnitVec playrho::d2::GetLocalYAxisA (const Joint &object)
 Gets the given joint's local Y axis A if its type supports that. More...
 
Force playrho::d2::GetMaxForce (const Joint &object)
 Gets the given joint's max force if its type supports that. More...
 
Force playrho::d2::GetMaxMotorForce (const Joint &object)
 Gets the given joint's max motor force if its type supports that. More...
 
Torque playrho::d2::GetMaxMotorTorque (const Joint &object)
 Gets the given joint's max motor torque if its type supports that. More...
 
Torque playrho::d2::GetMaxTorque (const Joint &object)
 Gets the given joint's max torque if its type supports that. More...
 
AngularVelocity playrho::d2::GetMotorSpeed (const Joint &object)
 Gets the given joint's motor speed if its type supports that. More...
 
Torque playrho::d2::GetMotorTorque (const Joint &joint, Frequency inv_dt)
 Gets the current motor torque for the given joint given the inverse time step. More...
 
Real playrho::d2::GetRatio (const Joint &object)
 Gets the given joint's ratio property if it has one. More...
 
Angle playrho::d2::GetReferenceAngle (const Joint &object)
 Gets the reference angle of the joint if it has one. More...
 
Length2 playrho::d2::GetTarget (const Joint &object)
 Gets the given joint's target property if it has one. More...
 
TypeID playrho::d2::GetType (const Joint &object) noexcept
 Gets the identifier of the type of data this can be casted to.
 
void playrho::d2::InitVelocity (Joint &object, const Span< BodyConstraint > &bodies, const StepConf &step, const ConstraintSolverConf &conf)
 Initializes velocity constraint data based on the given solver data. More...
 
auto playrho::d2::IsDestroyed (const Joint &object) noexcept -> bool
 Gets whether the given entity is in the is-destroyed state.
 
bool playrho::d2::IsLimitEnabled (const Joint &object)
 Gets the specified joint's limit property if it supports one. More...
 
bool playrho::d2::IsMotorEnabled (const Joint &object)
 Gets the specified joint's motor property value if it supports one. More...
 
bool playrho::d2::operator!= (const Joint &lhs, const Joint &rhs) noexcept
 Inequality operator for joint comparisons.
 
bool playrho::d2::operator== (const Joint &lhs, const Joint &rhs) noexcept
 Equality operator for joint comparisons.
 
void playrho::d2::SetAngularLimits (Joint &object, Angle lower, Angle upper)
 Sets the joint limits. More...
 
void playrho::d2::SetAngularOffset (Joint &object, Angle value)
 Sets the angular offset property of the specified joint if its type has one. More...
 
void playrho::d2::SetFrequency (Joint &object, Frequency value)
 Sets the frequency of the joint if it has this property. More...
 
void playrho::d2::SetLinearLimits (Joint &object, Length lower, Length upper)
 
void playrho::d2::SetLinearOffset (Joint &object, const Length2 &value)
 Sets the linear offset property of the specified joint if its type has one. More...
 
void playrho::d2::SetMaxMotorForce (Joint &object, Force value)
 Sets the given joint's max motor force if its type supports that. More...
 
void playrho::d2::SetMaxMotorTorque (Joint &object, Torque value)
 Sets the given joint's max motor torque if its type supports that. More...
 
void playrho::d2::SetMotorSpeed (Joint &object, AngularVelocity value)
 Sets the given joint's motor speed if its type supports that. More...
 
void playrho::d2::SetTarget (Joint &object, const Length2 &value)
 Sets the given joint's target property if it has one. More...
 
bool playrho::d2::ShiftOrigin (Joint &object, const Length2 &value) noexcept
 Shifts the origin for any points stored in world coordinates. More...
 
bool playrho::d2::SolvePosition (const Joint &object, const Span< BodyConstraint > &bodies, const ConstraintSolverConf &conf)
 Solves the position constraint. More...
 
bool playrho::d2::SolveVelocity (Joint &object, const Span< BodyConstraint > &bodies, const StepConf &step)
 Solves velocity constraint. More...
 
template<typename T >
playrho::d2::TypeCast (const Joint &value)
 Converts the given joint into its current configuration value. More...
 
template<typename T >
std::add_pointer_t< std::add_const_t< T > > playrho::d2::TypeCast (const Joint *value) noexcept
 Converts the given joint into its current configuration value. More...
 
template<typename T >
playrho::d2::TypeCast (Joint &&value)
 Converts the given joint into its current configuration value. More...
 
template<typename T >
playrho::d2::TypeCast (Joint &value)
 Converts the given joint into its current configuration value. More...
 
template<typename T >
std::add_pointer_t< T > playrho::d2::TypeCast (Joint *value) noexcept
 Converts the given joint into its current configuration value. More...
 

Variables

template<class T >
constexpr bool playrho::d2::IsValidJointTypeV = detail::IsValidJointType<T>::value
 Boolean value for whether the specified type is a valid joint type. More...
 

Detailed Description

Definition of the Joint class and closely related code.