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

PhysicsManager::PhysicsManager ( )

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.


Member Function Documentation

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


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