A body on which physics will be applied. More...
#include "physicsObject.h"
Public Types | |
typedef pvector< PT(PhysicsObject)> | Vector |
Public Member Functions | |
PhysicsObject () | |
Default Constructor. More... | |
PhysicsObject (const PhysicsObject ©) | |
copy constructor More... | |
virtual | ~PhysicsObject () |
Destructor. More... | |
virtual void | add_impact (const LPoint3 &offset_from_center_of_mass, const LVector3 &impulse) |
Adds an impulse and/or torque (i.e. More... | |
void | add_impulse (const LVector3 &impulse) |
Adds an impulse force (i.e. More... | |
virtual void | add_local_impact (const LPoint3 &offset_from_center_of_mass, const LVector3 &impulse) |
Adds an impulse and/or torque (i.e. More... | |
void | add_local_impulse (const LVector3 &impulse) |
Adds an impulse force (i.e. More... | |
void | add_local_torque (const LRotation &torque) |
Adds an torque force (i.e. More... | |
void | add_torque (const LRotation &torque) |
Adds an torque force (i.e. More... | |
virtual TypeHandle | force_init_type () |
bool | get_active () const |
Process Flag Query. More... | |
LVector3 | get_implicit_velocity () const |
Velocity Query over the last dt. More... | |
virtual LMatrix4 | get_inertial_tensor () const |
returns a transform matrix that represents the object's willingness to be forced. More... | |
LPoint3 | get_last_position () const |
Get the position of the physics object at the start of the most recent do_physics. More... | |
virtual LMatrix4 | get_lcs () const |
returns a transform matrix to this object's local coordinate system. More... | |
PN_stdfloat | get_mass () const |
Get the mass in slugs (or kilograms). More... | |
const std::string & | get_name () |
LOrientation | get_orientation () const |
get current orientation. More... | |
bool | get_oriented () const |
See set_oriented(). More... | |
LPoint3 | get_position () const |
Position Query. More... | |
LRotation | get_rotation () const |
get rotation per second. More... | |
PN_stdfloat | get_terminal_velocity () const |
tv query More... | |
virtual TypeHandle | get_type () const |
LVector3 | get_velocity () const |
Velocity Query per second. More... | |
virtual PhysicsObject * | make_copy () const |
dynamic copy. More... | |
const PhysicsObject & | operator= (const PhysicsObject &other) |
virtual void | output (std::ostream &out) const |
Write a string representation of this instance to <out>. More... | |
void | reset_orientation (const LOrientation &orientation) |
set the orientation while clearing the rotation velocity. More... | |
void | reset_position (const LPoint3 &pos) |
use this to place an object in a completely new position, that has nothing to do with its last position. More... | |
void | set_active (bool flag) |
Process Flag assignment. More... | |
void | set_last_position (const LPoint3 &pos) |
Last position assignment. More... | |
void | set_mass (PN_stdfloat) |
Set the mass in slugs (or kilograms). More... | |
void | set_name (const std::string &name) |
void | set_orientation (const LOrientation &orientation) |
void | set_oriented (bool flag) |
Set flag to determine whether this object should do any rotation or orientation calculations. More... | |
void | set_position (const LPoint3 &pos) |
Vector position assignment. More... | |
void | set_position (PN_stdfloat x, PN_stdfloat y, PN_stdfloat z) |
Piecewise position assignment. More... | |
void | set_rotation (const LRotation &rotation) |
set rotation as a quaternion delta per second. More... | |
void | set_terminal_velocity (PN_stdfloat tv) |
tv assignment More... | |
void | set_velocity (const LVector3 &vel) |
Vector velocity assignment. More... | |
void | set_velocity (PN_stdfloat x, PN_stdfloat y, PN_stdfloat z) |
Piecewise velocity assignment. More... | |
virtual void | write (std::ostream &out, int indent=0) const |
Write a string representation of this instance to <out>. More... | |
Public Member Functions inherited from TypedReferenceCount | |
TypedReferenceCount (const TypedReferenceCount ©) | |
void | operator= (const TypedReferenceCount ©) |
Public Member Functions inherited from TypedObject | |
TypedObject (const TypedObject ©)=default | |
TypedObject * | as_typed_object () |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
const TypedObject * | as_typed_object () const |
Returns the object, upcast (if necessary) to a TypedObject pointer. More... | |
int | get_best_parent_from_Set (const std::set< int > &) const |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More... | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. More... | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. More... | |
TypedObject & | operator= (const TypedObject ©)=default |
Public Member Functions inherited from ReferenceCount | |
int | get_ref_count () const |
WeakReferenceList * | get_weak_list () const |
Returns the WeakReferenceList associated with this ReferenceCount object. More... | |
bool | has_weak_list () const |
Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise. More... | |
void | local_object () |
This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack. More... | |
void | ref () const |
Explicitly increments the reference count. More... | |
bool | ref_if_nonzero () const |
Atomically increases the reference count of this object if it is not zero. More... | |
bool | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. More... | |
bool | test_ref_count_nonzero () const |
Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More... | |
virtual bool | unref () const |
Explicitly decrements the reference count. More... | |
WeakReferenceList * | weak_ref () |
Adds the indicated PointerToVoid as a weak reference to this object. More... | |
void | weak_unref () |
Removes the indicated PointerToVoid as a weak reference to this object. More... | |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static void | init_type () |
Static Public Member Functions inherited from TypedReferenceCount | |
static TypeHandle | get_class_type () |
static void | init_type () |
Static Public Member Functions inherited from TypedObject | |
static TypeHandle | get_class_type () |
static void | init_type () |
This function is declared non-inline to work around a compiler bug in g++ 2.96. More... | |
Static Public Member Functions inherited from ReferenceCount | |
static TypeHandle | get_class_type () |
static void | init_type () |
Static Public Attributes | |
static ConfigVariableDouble | _default_terminal_velocity |
Additional Inherited Members | |
Public Attributes inherited from TypedObject | |
get_type | |
Public Attributes inherited from ReferenceCount | |
get_ref_count | |
Returns the current reference count. More... | |
A body on which physics will be applied.
If you're looking to add physical motion to your class, do NOT derive from this. Derive from Physical instead.
Definition at line 27 of file physicsObject.h.
PhysicsObject::PhysicsObject | ( | ) |
PhysicsObject::PhysicsObject | ( | const PhysicsObject & | copy | ) |
copy constructor
Definition at line 42 of file physicsObject.cxx.
|
virtual |
Destructor.
Definition at line 50 of file physicsObject.cxx.
|
virtual |
Adds an impulse and/or torque (i.e.
an instantanious change in velocity) based on how well the offset and impulse align with the center of mass (aka position). If you wanted to immitate this function you could work out the impulse and torque and call add_impulse and add_torque respectively. offset and force are in global (or parent) coordinates.
Definition at line 104 of file physicsObject.cxx.
|
inline |
Adds an impulse force (i.e.
an instantanious change in velocity). This is a quicker way to get the velocity, add a vector to it and set that value to be the new velocity.
Definition at line 128 of file physicsObject.I.
|
virtual |
Adds an impulse and/or torque (i.e.
an instantanious change in velocity) based on how well the offset and impulse align with the center of mass (aka position). If you wanted to immitate this function you could work out the impulse and torque and call add_impulse and add_torque respectively. offset and force are in local coordinates.
Definition at line 87 of file physicsObject.cxx.
|
inline |
Adds an impulse force (i.e.
an instantanious change in velocity). This is a quicker way to get the velocity, add a vector to it and set that value to be the new velocity.
Definition at line 106 of file physicsObject.I.
|
inline |
Adds an torque force (i.e.
an instantanious change in velocity). This is a quicker way to get the angular velocity, add a vector to it and set that value to be the new angular velocity.
Definition at line 95 of file physicsObject.I.
|
inline |
Adds an torque force (i.e.
an instantanious change in velocity). This is a quicker way to get the angular velocity, add a vector to it and set that value to be the new angular velocity.
Definition at line 117 of file physicsObject.I.
|
inline |
Process Flag Query.
Definition at line 194 of file physicsObject.I.
|
inline |
Velocity Query over the last dt.
Definition at line 186 of file physicsObject.I.
Referenced by write().
|
virtual |
returns a transform matrix that represents the object's willingness to be forced.
Definition at line 145 of file physicsObject.cxx.
|
inline |
Get the position of the physics object at the start of the most recent do_physics.
Definition at line 170 of file physicsObject.I.
|
virtual |
returns a transform matrix to this object's local coordinate system.
Definition at line 131 of file physicsObject.cxx.
Referenced by ActorNode::update_transform().
|
inline |
Get the mass in slugs (or kilograms).
Definition at line 153 of file physicsObject.I.
|
inline |
get current orientation.
Definition at line 228 of file physicsObject.I.
|
inline |
See set_oriented().
Definition at line 253 of file physicsObject.I.
|
inline |
Position Query.
Definition at line 161 of file physicsObject.I.
Referenced by LinearIntegrator::integrate(), and ParticleSystem::update().
|
inline |
get rotation per second.
Definition at line 236 of file physicsObject.I.
|
inline |
tv query
Definition at line 202 of file physicsObject.I.
|
inline |
Velocity Query per second.
Definition at line 178 of file physicsObject.I.
|
virtual |
dynamic copy.
Reimplemented in BaseParticle, PointParticle, ZSpinParticle, and OrientedParticle.
Definition at line 75 of file physicsObject.cxx.
References PhysicsObject().
|
virtual |
Write a string representation of this instance to <out>.
Reimplemented in ZSpinParticle, BaseParticle, OrientedParticle, and PointParticle.
Definition at line 153 of file physicsObject.cxx.
|
inline |
set the orientation while clearing the rotation velocity.
Definition at line 57 of file physicsObject.I.
|
inline |
use this to place an object in a completely new position, that has nothing to do with its last position.
Definition at line 46 of file physicsObject.I.
|
inline |
Process Flag assignment.
Definition at line 137 of file physicsObject.I.
Referenced by ActorNode::ActorNode().
|
inline |
Last position assignment.
Definition at line 67 of file physicsObject.I.
Referenced by LinearIntegrator::integrate().
|
inline |
Set the mass in slugs (or kilograms).
Definition at line 18 of file physicsObject.I.
|
inline |
Set flag to determine whether this object should do any rotation or orientation calculations.
Optimization.
Definition at line 245 of file physicsObject.I.
Referenced by OrientedParticle::OrientedParticle(), and PointParticle::PointParticle().
|
inline |
Vector position assignment.
This is also used as the center of mass.
Definition at line 27 of file physicsObject.I.
|
inline |
Piecewise position assignment.
Definition at line 36 of file physicsObject.I.
|
inline |
set rotation as a quaternion delta per second.
Definition at line 219 of file physicsObject.I.
|
inline |
tv assignment
Definition at line 145 of file physicsObject.I.
|
inline |
Vector velocity assignment.
Definition at line 75 of file physicsObject.I.
|
inline |
Piecewise velocity assignment.
Definition at line 84 of file physicsObject.I.
|
virtual |
Write a string representation of this instance to <out>.
Reimplemented in ZSpinParticle, BaseParticle, OrientedParticle, and PointParticle.
Definition at line 163 of file physicsObject.cxx.
References get_implicit_velocity(), and indent().
Referenced by ActorNode::write(), BaseParticle::write(), and Physical::write().