# Physical

from pandac.PandaModules import Physical

Class : Physical
Description : Defines a set of physically modeled attributes. If you want physics applied to your class, derive it from this.

## Inheritance:

Physical: TypedReferenceCount
TypedReferenceCount: TypedObject ReferenceCount
TypedObject: MemoryBase
MemoryBase:
ReferenceCount: MemoryBase

## Methods of Physical:

Physical (Constructor)
addAngularForce
addLinearForce
addPhysicsObject
clearAngularForces
clearLinearForces
clearPhysicsObjects
getAngularForce
getClassType
getLinearForce
getNumAngularForces
getNumLinearForces
getObjects
getPhysBody
getPhysicalNode
getPhysicalNodePath
getPhysicsManager
getViscosity
output
removeAngularForce
removeLinearForce
setViscosity
write
writeAngularForces
writeLinearForces
writePhysicsObjects

## Methods of TypedReferenceCount:

getClassType

## Methods of TypedObject:

getClassType
getType
getTypeIndex
isExactType
isOfType

## Methods of ReferenceCount:

getClassType
getRefCount
ref
testRefCountIntegrity
testRefCountNonzero
unref

Physical Physical::Physical(int total_objects = (1), bool pre_alloc = (0)); Description : Default Constructor The idea here is that most physicals will NOT be collections of sets (i.e. particle systems and whatever else). Because of this, the default constructor, unless otherwise specified, will automatically allocate and initialize one PhysicalObject. This makes it easier for high-level work. pre-alloc is ONLY for multiple-object physicals, and if true, fills the physics_object vector with dead nodes, pre-allocating for the speed end of the speed-vs-overhead deal. Description : copy constructor (note- does deep copy of pn's) but does NOT attach itself to its template's physicsmanager.

addAngularForce void Physical::add_angular_force(AngularForce *f); Description : Adds an angular force to the force list

addLinearForce void Physical::add_linear_force(LinearForce *f); Description : Adds a linear force to the force list

addPhysicsObject void Physical::add_physics_object(PhysicsObject *po); Description : Adds an object to the physics object vector

clearAngularForces void Physical::clear_angular_forces(void); Description : Erases the angular force list

clearLinearForces void Physical::clear_linear_forces(void); Description : Erases the linear force list

clearPhysicsObjects void Physical::clear_physics_objects(void); Description : Erases the object list

getAngularForce PointerTo< AngularForce > Physical::get_angular_force(int index) const; Undocumented function.

getClassType static TypeHandle Physical::get_class_type(void); Undocumented function.

getLinearForce PointerTo< LinearForce > Physical::get_linear_force(int index) const; Undocumented function.

getNumAngularForces int Physical::get_num_angular_forces(void) const; Undocumented function.

getNumLinearForces int Physical::get_num_linear_forces(void) const; Undocumented function.

getObjects PhysicsObjectCollection const Physical::get_objects(void) const; Undocumented function.

getPhysBody PhysicsObject *Physical::get_phys_body(void) const; Undocumented function.

getPhysicalNode PhysicalNode *Physical::get_physical_node(void) const; helpers

getPhysicalNodePath NodePath Physical::get_physical_node_path(void) const; Undocumented function.

getPhysicsManager PhysicsManager *Physical::get_physics_manager(void) const; helpers

getViscosity float Physical::get_viscosity(void) const; Description : Get the local viscosity.

output virtual void Physical::output(ostream &out = (cout)) const; Description : Write a string representation of this instance to <out>.

removeAngularForce void Physical::remove_angular_force(AngularForce *f); Description : removes an angular force from the force list

removeLinearForce void Physical::remove_linear_force(LinearForce *f); Description : removes a linear force from the force list

setViscosity void Physical::set_viscosity(float viscosity); Description : Set the local viscosity.

write virtual void Physical::write(ostream &out = (cout), unsigned int indent = (0)) const; Description : Write a string representation of this instance to <out>.

writeAngularForces virtual void Physical::write_angular_forces(ostream &out = (cout), unsigned int indent = (0)) const; Description : Write a string representation of this instance to <out>.

writeLinearForces virtual void Physical::write_linear_forces(ostream &out = (cout), unsigned int indent = (0)) const; Description : Write a string representation of this instance to <out>.

writePhysicsObjects virtual void Physical::write_physics_objects(ostream &out = (cout), unsigned int indent = (0)) const; Description : Write a string representation of this instance to <out>.

getClassType static TypeHandle TypedReferenceCount::get_class_type(void); Undocumented function.

getClassType static TypeHandle TypedObject::get_class_type(void); Undocumented function.

getType virtual TypeHandle TypedObject::get_type(void) const = 0; Derived classes should override this function to return get_class_type().

getTypeIndex int TypedObject::get_type_index(void) const; Description: Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. This is equivalent to get_type().get_index().

isExactType bool TypedObject::is_exact_type(TypeHandle handle) const; Description: Returns true if the current object is the indicated type exactly.

isOfType bool TypedObject::is_of_type(TypeHandle handle) const; Description: Returns true if the current object is or derives from the indicated type.

getClassType static TypeHandle ReferenceCount::get_class_type(void); Undocumented function.

getRefCount int ReferenceCount::get_ref_count(void) const; Description: Returns the current reference count.

ref void ReferenceCount::ref(void) const; Description: Explicitly increments the reference count. User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.

testRefCountIntegrity bool ReferenceCount::test_ref_count_integrity(void) const; Description: Does some easy checks to make sure that the reference count isn't completely bogus. Returns true if ok, false otherwise.

testRefCountNonzero bool ReferenceCount::test_ref_count_nonzero(void) const; Description: Does some easy checks to make sure that the reference count isn't zero, or completely bogus. Returns true if ok, false otherwise.

unref bool ReferenceCount::unref(void) const; Description: Explicitly decrements the reference count. Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic; plus, we don't have a virtual destructor anyway.) However, see the helper function unref_delete(). User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is true if the new reference count is nonzero, false if it is zero.