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 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 (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 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 (ostream &out, unsigned int indent=0) const |
Write a string representation of this instance to <out>. More... | |
![]() | |
TypedReferenceCount (const TypedReferenceCount ©) | |
void | operator= (const TypedReferenceCount ©) |
![]() | |
TypedObject (const TypedObject ©) | |
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... | |
void | operator= (const TypedObject ©) |
![]() | |
int | get_ref_count () const |
Returns the current reference count. More... | |
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 | 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... | |
void | weak_ref (WeakPointerToVoid *ptv) |
Adds the indicated PointerToVoid as a weak reference to this object. More... | |
void | weak_unref (WeakPointerToVoid *ptv) |
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 TypeHandle | get_class_type () |
static void | init_type () |
![]() | |
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 TypeHandle | get_class_type () |
static void | init_type () |
Static Public Attributes | |
static ConfigVariableDouble | _default_terminal_velocity |
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 29 of file physicsObject.h.
PhysicsObject::PhysicsObject | ( | ) |
Default Constructor.
Definition at line 28 of file physicsObject.cxx.
References LQuaternionf::ident_quat().
Referenced by make_copy().
PhysicsObject::PhysicsObject | ( | const PhysicsObject & | copy | ) |
copy constructor
Definition at line 47 of file physicsObject.cxx.
|
virtual |
Destructor.
Definition at line 57 of file physicsObject.cxx.
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 123 of file physicsObject.cxx.
References add_impulse(), add_torque(), LVecBase3f::is_nan(), LVecBase3f::length(), LVecBase3f::normalize(), and LQuaternionf::set_from_axis_angle().
Referenced by add_local_impact().
|
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 160 of file physicsObject.I.
References LVecBase3f::is_nan().
Referenced by add_impact().
|
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 102 of file physicsObject.cxx.
References add_impact(), LVecBase3f::is_nan(), and LQuaternionf::xform().
|
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 132 of file physicsObject.I.
References LVecBase3f::is_nan(), and LQuaternionf::xform().
|
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 118 of file physicsObject.I.
References LVecBase4f::is_nan(), and LQuaternionf::xform().
|
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 146 of file physicsObject.I.
References LVecBase4f::is_nan().
Referenced by add_impact().
|
inline |
Process Flag Query.
Definition at line 242 of file physicsObject.I.
|
inline |
Velocity Query over the last dt.
Definition at line 232 of file physicsObject.I.
Referenced by write().
|
virtual |
returns a transform matrix that represents the object's willingness to be forced.
Definition at line 169 of file physicsObject.cxx.
References LMatrix4f::ident_mat().
|
inline |
Get the position of the physics object at the start of the most recent do_physics.
Definition at line 212 of file physicsObject.I.
|
virtual |
returns a transform matrix to this object's local coordinate system.
Definition at line 153 of file physicsObject.cxx.
References LMatrix4f::is_nan(), and LMatrix4f::translate_mat().
Referenced by ActorNode::update_transform().
|
inline |
Get the mass in slugs (or kilograms).
Definition at line 191 of file physicsObject.I.
|
inline |
get current orientation.
Definition at line 284 of file physicsObject.I.
|
inline |
See set_oriented().
Definition at line 315 of file physicsObject.I.
|
inline |
Position Query.
Definition at line 201 of file physicsObject.I.
Referenced by LinearIntegrator::integrate(), and ParticleSystem::update().
|
inline |
get rotation per second.
Definition at line 294 of file physicsObject.I.
|
inline |
tv query
Definition at line 252 of file physicsObject.I.
|
inline |
Velocity Query per second.
Definition at line 222 of file physicsObject.I.
|
virtual |
dynamic copy.
Reimplemented in BaseParticle, PointParticle, ZSpinParticle, and OrientedParticle.
Definition at line 86 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 180 of file physicsObject.cxx.
|
inline |
set the orientation while clearing the rotation velocity.
Definition at line 71 of file physicsObject.I.
References LQuaternionf::ident_quat(), and LVecBase4f::is_nan().
|
inline |
use this to place an object in a completely new position, that has nothing to do with its last position.
Definition at line 57 of file physicsObject.I.
References LVecBase3f::is_nan().
|
inline |
Process Flag assignment.
Definition at line 171 of file physicsObject.I.
Referenced by ActorNode::ActorNode(), and BaseParticleFactory::populate_particle().
|
inline |
Last position assignment.
Definition at line 83 of file physicsObject.I.
Referenced by LinearIntegrator::integrate().
|
inline |
Set the mass in slugs (or kilograms).
Definition at line 21 of file physicsObject.I.
Referenced by BaseParticleFactory::populate_particle().
|
inline |
Set flag to determine whether this object should do any rotation or orientation calculations.
Optimization.
Definition at line 305 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 33 of file physicsObject.I.
References LVecBase3f::is_nan().
|
inline |
Piecewise position assignment.
Definition at line 44 of file physicsObject.I.
|
inline |
set rotation as a quaternion delta per second.
Definition at line 273 of file physicsObject.I.
References LVecBase4f::is_nan().
|
inline |
tv assignment
Definition at line 181 of file physicsObject.I.
Referenced by BaseParticleFactory::populate_particle().
|
inline |
Vector velocity assignment.
Definition at line 93 of file physicsObject.I.
References LVecBase3f::is_nan().
|
inline |
Piecewise velocity assignment.
Definition at line 104 of file physicsObject.I.
|
virtual |
Write a string representation of this instance to <out>.
Definition at line 193 of file physicsObject.cxx.
References LQuaternionf::get_hpr(), and get_implicit_velocity().
Referenced by ActorNode::write(), BaseParticle::write(), and Physical::write().