Panda3D
|
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. | |
PhysicsObject (const PhysicsObject ©) | |
copy constructor | |
virtual | ~PhysicsObject () |
Destructor. | |
virtual void | add_impact (const LPoint3 &offset_from_center_of_mass, const LVector3 &impulse) |
Adds an impulse and/or torque (i.e. | |
void | add_impulse (const LVector3 &impulse) |
Adds an impulse force (i.e. | |
virtual void | add_local_impact (const LPoint3 &offset_from_center_of_mass, const LVector3 &impulse) |
Adds an impulse and/or torque (i.e. | |
void | add_local_impulse (const LVector3 &impulse) |
Adds an impulse force (i.e. | |
void | add_local_torque (const LRotation &torque) |
Adds an torque force (i.e. | |
void | add_torque (const LRotation &torque) |
Adds an torque force (i.e. | |
virtual TypeHandle | force_init_type () |
bool | get_active () const |
LVector3 | get_implicit_velocity () const |
virtual LMatrix4 | get_inertial_tensor () const |
returns a transform matrix that represents the object's willingness to be forced. | |
LPoint3 | get_last_position () const |
virtual LMatrix4 | get_lcs () const |
returns a transform matrix to this object's local coordinate system. | |
PN_stdfloat | get_mass () const |
const std::string & | get_name () |
LOrientation | get_orientation () const |
bool | get_oriented () const |
LPoint3 | get_position () const |
LRotation | get_rotation () const |
PN_stdfloat | get_terminal_velocity () const |
virtual TypeHandle | get_type () const |
LVector3 | get_velocity () const |
virtual PhysicsObject * | make_copy () const |
dynamic copy. | |
const PhysicsObject & | operator= (const PhysicsObject &other) |
virtual void | output (std::ostream &out) const |
Write a string representation of this instance to <out>. | |
void | reset_orientation (const LOrientation &orientation) |
set the orientation while clearing the rotation velocity. | |
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. | |
void | set_active (bool flag) |
void | set_last_position (const LPoint3 &pos) |
void | set_mass (PN_stdfloat) |
void | set_name (const std::string &name) |
void | set_orientation (const LOrientation &orientation) |
void | set_oriented (bool flag) |
void | set_position (const LPoint3 &pos) |
void | set_position (PN_stdfloat x, PN_stdfloat y, PN_stdfloat z) |
void | set_rotation (const LRotation &rotation) |
void | set_terminal_velocity (PN_stdfloat tv) |
void | set_velocity (const LVector3 &vel) |
void | set_velocity (PN_stdfloat x, PN_stdfloat y, PN_stdfloat z) |
virtual void | write (std::ostream &out, int indent=0) const |
Write a string representation of this instance to <out>. | |
![]() | |
TypedReferenceCount (const TypedReferenceCount ©) | |
void | operator= (const TypedReferenceCount ©) |
![]() | |
TypedObject (const TypedObject ©)=default | |
TypedObject * | as_typed_object () |
Returns the object, upcast (if necessary) to a TypedObject pointer. | |
const TypedObject * | as_typed_object () const |
Returns the object, upcast (if necessary) to a TypedObject pointer. | |
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. | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. | |
TypedObject & | operator= (const TypedObject ©)=default |
![]() | |
void | operator delete (void *, void *) |
void | operator delete (void *ptr) |
void | operator delete[] (void *, void *) |
void | operator delete[] (void *ptr) |
void * | operator new (size_t size) |
void * | operator new (size_t size, void *ptr) |
void * | operator new[] (size_t size) |
void * | operator new[] (size_t size, void *ptr) |
![]() | |
int | get_ref_count () const |
WeakReferenceList * | get_weak_list () const |
Returns the WeakReferenceList associated with this ReferenceCount object. | |
bool | has_weak_list () const |
Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise. | |
void | local_object () |
This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack. | |
void | ref () const |
Explicitly increments the reference count. | |
bool | ref_if_nonzero () const |
Atomically increases the reference count of this object if it is not zero. | |
bool | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. | |
bool | test_ref_count_nonzero () const |
Does some easy checks to make sure that the reference count isn't zero, or completely bogus. | |
virtual bool | unref () const |
Explicitly decrements the reference count. | |
bool | unref_if_one () const |
Atomically decreases the reference count of this object if it is one. | |
WeakReferenceList * | weak_ref () |
Adds the indicated PointerToVoid as a weak reference to this object. | |
void | weak_unref () |
Removes the indicated PointerToVoid as a weak reference to this object. | |
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. | |
![]() | |
static TypeHandle | get_class_type () |
static void | init_type () |
Public Attributes | |
get_active | |
Process Flag Query. | |
get_implicit_velocity | |
Velocity Query over the last dt. | |
get_last_position | |
Get the position of the physics object at the start of the most recent do_physics. | |
get_mass | |
Get the mass in slugs (or kilograms). | |
get_orientation | |
get current orientation. | |
get_oriented | |
See set_oriented(). | |
get_position | |
Position Query. | |
get_rotation | |
get rotation per second. | |
get_terminal_velocity | |
tv query | |
get_velocity | |
Velocity Query per second. | |
set_active | |
Process Flag assignment. | |
set_last_position | |
Last position assignment. | |
set_mass | |
Set the mass in slugs (or kilograms). | |
set_orientation | |
set_oriented | |
Set flag to determine whether this object should do any rotation or orientation calculations. | |
set_position | |
Vector position assignment. | |
set_rotation | |
set rotation as a quaternion delta per second. | |
set_terminal_velocity | |
tv assignment | |
set_velocity | |
Vector velocity assignment. | |
![]() | |
get_type | |
![]() | |
get_ref_count | |
Returns the current reference count. | |
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 27 of file physicsObject.h.
typedef pvector<PT(PhysicsObject)> PhysicsObject::Vector |
Definition at line 29 of file physicsObject.h.
PhysicsObject::PhysicsObject | ( | ) |
PhysicsObject::PhysicsObject | ( | const PhysicsObject & | copy | ) |
copy constructor
Definition at line 41 of file physicsObject.cxx.
|
virtual |
Destructor.
Definition at line 49 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 103 of file physicsObject.cxx.
References add_impulse(), and add_torque().
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 127 of file physicsObject.I.
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 86 of file physicsObject.cxx.
References add_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 105 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 94 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 116 of file physicsObject.I.
Referenced by add_impact().
|
inlinevirtual |
Reimplemented from TypedReferenceCount.
Definition at line 144 of file physicsObject.h.
|
inlinestatic |
Definition at line 133 of file physicsObject.h.
|
virtual |
returns a transform matrix that represents the object's willingness to be forced.
Definition at line 144 of file physicsObject.cxx.
|
virtual |
returns a transform matrix to this object's local coordinate system.
Definition at line 130 of file physicsObject.cxx.
Referenced by ActorNode::update_transform().
|
inline |
Definition at line 94 of file physicsObject.h.
|
inlinevirtual |
Reimplemented from TypedReferenceCount.
Definition at line 141 of file physicsObject.h.
|
inlinestatic |
Definition at line 136 of file physicsObject.h.
|
virtual |
dynamic copy.
Reimplemented in OrientedParticle, PointParticle, ZSpinParticle, and BaseParticle.
Definition at line 74 of file physicsObject.cxx.
References PhysicsObject().
const PhysicsObject & PhysicsObject::operator= | ( | const PhysicsObject & | other | ) |
Definition at line 56 of file physicsObject.cxx.
|
virtual |
Write a string representation of this instance to <out>.
Reimplemented in BaseParticle, OrientedParticle, PointParticle, and ZSpinParticle.
Definition at line 152 of file physicsObject.cxx.
|
inline |
set the orientation while clearing the rotation velocity.
Definition at line 56 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 45 of file physicsObject.I.
|
inline |
Definition at line 91 of file physicsObject.h.
|
virtual |
Write a string representation of this instance to <out>.
Reimplemented in BaseParticle, OrientedParticle, PointParticle, and ZSpinParticle.
Definition at line 162 of file physicsObject.cxx.
References get_implicit_velocity, and indent().
Referenced by BaseParticle::write(), ActorNode::write(), and Physical::write().
|
static |
Definition at line 37 of file physicsObject.h.
|
inline |
Process Flag Query.
Definition at line 103 of file physicsObject.h.
|
inline |
Velocity Query over the last dt.
Definition at line 108 of file physicsObject.h.
Referenced by write().
|
inline |
Get the position of the physics object at the start of the most recent do_physics.
Definition at line 106 of file physicsObject.h.
|
inline |
Get the mass in slugs (or kilograms).
Definition at line 104 of file physicsObject.h.
|
inline |
get current orientation.
Definition at line 111 of file physicsObject.h.
|
inline |
See set_oriented().
Definition at line 110 of file physicsObject.h.
|
inline |
Position Query.
Definition at line 105 of file physicsObject.h.
Referenced by LinearIntegrator::integrate(), and ParticleSystem::update().
|
inline |
get rotation per second.
Definition at line 112 of file physicsObject.h.
|
inline |
tv query
Definition at line 109 of file physicsObject.h.
|
inline |
Velocity Query per second.
Definition at line 107 of file physicsObject.h.
|
inline |
Process Flag assignment.
Definition at line 103 of file physicsObject.h.
Referenced by ActorNode::ActorNode(), and BaseParticleFactory::populate_particle().
|
inline |
Last position assignment.
Definition at line 106 of file physicsObject.h.
Referenced by LinearIntegrator::integrate().
|
inline |
Set the mass in slugs (or kilograms).
Definition at line 104 of file physicsObject.h.
Referenced by BaseParticleFactory::populate_particle().
|
inline |
Definition at line 111 of file physicsObject.h.
|
inline |
Set flag to determine whether this object should do any rotation or orientation calculations.
Optimization.
Definition at line 110 of file physicsObject.h.
Referenced by OrientedParticle::OrientedParticle(), PointParticle::PointParticle(), and PointParticle::PointParticle().
|
inline |
Vector position assignment.
Piecewise position assignment.
This is also used as the center of mass.
Definition at line 105 of file physicsObject.h.
|
inline |
set rotation as a quaternion delta per second.
Definition at line 112 of file physicsObject.h.
|
inline |
tv assignment
Definition at line 109 of file physicsObject.h.
Referenced by BaseParticleFactory::populate_particle().
|
inline |
Vector velocity assignment.
Piecewise velocity assignment.
Definition at line 107 of file physicsObject.h.