Panda3D
Public Types | Public Member Functions | Static Public Attributes | Friends
PhysicsManager Class Reference

Physics don't get much higher-level than this. More...

#include "physicsManager.h"

List of all members.

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

Detailed Description

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.


Constructor & Destructor Documentation

Default Constructor.

NOTE: EulerIntegrator is the standard default.

Definition at line 31 of file physicsManager.cxx.

Simple Destructor.

Definition at line 43 of file physicsManager.cxx.


Member Function Documentation

Adds a global angular force to the physics manager.

Definition at line 90 of file physicsManager.I.

Adds a global linear force to the physics manager.

Definition at line 37 of file physicsManager.I.

Hooks an angular integrator into the manager.

Definition at line 156 of file physicsManager.I.

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().

Registers a physicalnode with the manager.

Definition at line 67 of file physicsManager.I.

References attach_physical().

Referenced by attach_physicalnode().

Please call attach_physical_node instead.

Definition at line 53 of file physicsManager.I.

References attach_physical_node().

Resets the physics manager force vector.

Definition at line 105 of file physicsManager.I.

Resets the physics manager force vector.

Definition at line 80 of file physicsManager.I.

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.

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.

takes an angular force out of the physics list

Definition at line 90 of file physicsManager.cxx.

takes a linear force out of the physics list

Definition at line 71 of file physicsManager.cxx.

takes a physical out of the object list

Definition at line 109 of file physicsManager.cxx.

Referenced by remove_physical_node(), and Physical::~Physical().

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().


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations