Panda3D
|
Physics don't get much higher-level than this. More...
#include "physicsManager.h"
Public Types | |
typedef pvector< PT(AngularForce)> | AngularForceVector |
typedef pvector< PT(LinearForce)> | LinearForceVector |
typedef pvector< Physical * > | PhysicalsVector |
Public Member Functions | |
PhysicsManager () | |
Default Constructor. | |
virtual | ~PhysicsManager () |
Simple Destructor. | |
void | add_angular_force (AngularForce *f) |
Adds a global angular force to the physics manager. | |
void | add_linear_force (LinearForce *f) |
Adds a global linear force to the physics manager. | |
void | attach_angular_integrator (AngularIntegrator *i) |
Hooks an angular integrator into the manager. | |
void | attach_linear_integrator (LinearIntegrator *i) |
Hooks a linear integrator into the manager. | |
void | attach_physical (Physical *p) |
Registers a Physical class with the manager. | |
void | attach_physical_node (PhysicalNode *p) |
Registers a physicalnode with the manager. | |
void | attach_physicalnode (PhysicalNode *p) |
Please call attach_physical_node instead. | |
void | clear_angular_forces () |
Resets the physics manager force vector. | |
void | clear_linear_forces () |
Resets the physics manager force vector. | |
void | clear_physicals () |
Resets the physics manager objects vector. | |
virtual void | debug_output (ostream &out, unsigned int indent=0) const |
Write a string representation of this instance to <out>. | |
void | do_physics (PN_stdfloat dt) |
This is the main high-level API call. | |
void | do_physics (PN_stdfloat dt, Physical *p) |
This is the main high-level API call. | |
PN_stdfloat | get_viscosity () const |
Get the global viscosity. | |
void | init_random_seed () |
One-time config function, sets up the random seed used by the physics and particle systems. | |
virtual void | output (ostream &out) const |
Write a string representation of this instance to <out>. | |
void | remove_angular_force (AngularForce *f) |
takes an angular force out of the physics list | |
void | remove_linear_force (LinearForce *f) |
takes a linear force out of the physics list | |
void | remove_physical (Physical *p) |
takes a physical out of the object list | |
void | remove_physical_node (PhysicalNode *p) |
Removes a physicalnode from the manager. | |
void | set_viscosity (PN_stdfloat viscosity) |
Set the global viscosity. | |
virtual void | write (ostream &out, unsigned int indent=0) const |
Write a string representation of this instance to <out>. | |
virtual void | write_angular_forces (ostream &out, unsigned int indent=0) const |
Write a string representation of this instance to <out>. | |
virtual void | write_linear_forces (ostream &out, unsigned int indent=0) const |
Write a string representation of this instance to <out>. | |
virtual void | write_physicals (ostream &out, unsigned int indent=0) const |
Write a string representation of this instance to <out>. | |
Static Public Attributes | |
static ConfigVariableInt | _random_seed |
Friends | |
class | Physical |
Physics don't get much higher-level than this.
Attach as many Physicals (particle systems, etc..) as you want, pick an integrator and go.
Definition at line 39 of file physicsManager.h.
Default Constructor.
NOTE: EulerIntegrator is the standard default.
Definition at line 31 of file physicsManager.cxx.
PhysicsManager::~PhysicsManager | ( | ) | [virtual] |
Simple Destructor.
Definition at line 43 of file physicsManager.cxx.
void PhysicsManager::add_angular_force | ( | AngularForce * | f | ) | [inline] |
Adds a global angular force to the physics manager.
Definition at line 90 of file physicsManager.I.
void PhysicsManager::add_linear_force | ( | LinearForce * | f | ) | [inline] |
Adds a global linear force to the physics manager.
Definition at line 37 of file physicsManager.I.
void PhysicsManager::attach_angular_integrator | ( | AngularIntegrator * | i | ) | [inline] |
Hooks an angular integrator into the manager.
Definition at line 156 of file physicsManager.I.
void PhysicsManager::attach_linear_integrator | ( | LinearIntegrator * | i | ) | [inline] |
Hooks a linear integrator into the manager.
Definition at line 145 of file physicsManager.I.
void PhysicsManager::attach_physical | ( | Physical * | p | ) | [inline] |
Registers a Physical class with the manager.
Definition at line 21 of file physicsManager.I.
Referenced by attach_physical_node().
void PhysicsManager::attach_physical_node | ( | PhysicalNode * | p | ) | [inline] |
Registers a physicalnode with the manager.
Definition at line 67 of file physicsManager.I.
References attach_physical().
Referenced by attach_physicalnode().
void PhysicsManager::attach_physicalnode | ( | PhysicalNode * | p | ) | [inline] |
Please call attach_physical_node instead.
Definition at line 53 of file physicsManager.I.
References attach_physical_node().
void PhysicsManager::clear_angular_forces | ( | ) | [inline] |
Resets the physics manager force vector.
Definition at line 105 of file physicsManager.I.
void PhysicsManager::clear_linear_forces | ( | ) | [inline] |
Resets the physics manager force vector.
Definition at line 80 of file physicsManager.I.
void PhysicsManager::clear_physicals | ( | ) | [inline] |
Resets the physics manager objects vector.
Definition at line 115 of file physicsManager.I.
void PhysicsManager::debug_output | ( | ostream & | out, |
unsigned int | indent = 0 |
||
) | const [virtual] |
Write a string representation of this instance to <out>.
Definition at line 315 of file physicsManager.cxx.
void PhysicsManager::do_physics | ( | PN_stdfloat | dt | ) |
This is the main high-level API call.
Performs integration on every attached Physical.
Definition at line 142 of file physicsManager.cxx.
References TypedObject::is_of_type(), and ActorNode::update_transform().
void PhysicsManager::do_physics | ( | PN_stdfloat | dt, |
Physical * | physical | ||
) |
This is the main high-level API call.
Performs integration on a single physical. Make sure its associated forces are active.
Definition at line 178 of file physicsManager.cxx.
References TypedObject::is_of_type(), and ActorNode::update_transform().
PN_stdfloat PhysicsManager::get_viscosity | ( | ) | const [inline] |
Get the global viscosity.
Definition at line 135 of file physicsManager.I.
void PhysicsManager::init_random_seed | ( | ) |
One-time config function, sets up the random seed used by the physics and particle systems.
For synchronizing across distributed computers
Definition at line 59 of file physicsManager.cxx.
void PhysicsManager::output | ( | ostream & | out | ) | const [virtual] |
Write a string representation of this instance to <out>.
Definition at line 208 of file physicsManager.cxx.
void PhysicsManager::remove_angular_force | ( | AngularForce * | f | ) |
takes an angular force out of the physics list
Definition at line 90 of file physicsManager.cxx.
void PhysicsManager::remove_linear_force | ( | LinearForce * | f | ) |
takes a linear force out of the physics list
Definition at line 71 of file physicsManager.cxx.
void PhysicsManager::remove_physical | ( | Physical * | p | ) |
takes a physical out of the object list
Definition at line 109 of file physicsManager.cxx.
Referenced by remove_physical_node(), and Physical::~Physical().
void PhysicsManager::remove_physical_node | ( | PhysicalNode * | p | ) |
Removes a physicalnode from the manager.
Definition at line 128 of file physicsManager.cxx.
References remove_physical().
void PhysicsManager::set_viscosity | ( | PN_stdfloat | viscosity | ) | [inline] |
Set the global viscosity.
Definition at line 125 of file physicsManager.I.
void PhysicsManager::write | ( | ostream & | out, |
unsigned int | indent = 0 |
||
) | const [virtual] |
Write a string representation of this instance to <out>.
Definition at line 282 of file physicsManager.cxx.
References write_angular_forces(), write_linear_forces(), and write_physicals().
void PhysicsManager::write_angular_forces | ( | ostream & | out, |
unsigned int | indent = 0 |
||
) | const [virtual] |
Write a string representation of this instance to <out>.
Definition at line 263 of file physicsManager.cxx.
Referenced by write().
void PhysicsManager::write_linear_forces | ( | ostream & | out, |
unsigned int | indent = 0 |
||
) | const [virtual] |
Write a string representation of this instance to <out>.
Definition at line 244 of file physicsManager.cxx.
Referenced by write().
void PhysicsManager::write_physicals | ( | ostream & | out, |
unsigned int | indent = 0 |
||
) | const [virtual] |
Write a string representation of this instance to <out>.
Definition at line 221 of file physicsManager.cxx.
Referenced by write().