Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

OgreRefApp::ApplicationObject Class Reference

This object is the base class for all discrete objects in the application. More...

#include <OgreRefAppApplicationObject.h>

Inheritance diagram for OgreRefApp::ApplicationObject:

Inheritance graph
[legend]
List of all members.

Public Methods

 ApplicationObject (const String &name)
virtual ~ApplicationObject ()
virtual void setPosition (const Vector3 &vec)
 Sets the position of this object.

virtual void setPosition (Real x, Real y, Real z)
 Sets the position of this object.

virtual void setOrientation (const Quaternion &orientation)
 Sets the orientation of this object.

virtual const Vector3 & getPosition (void)
 Gets the current position of this object.

virtual const Quaternion & getOrientation (void)
 Gets the current orientation of this object.

virtual void _updateFromDynamics (void)
 Updates the position of this game object from the simulation.

virtual bool isCollisionEnabled (void)
 Returns whether or not this object is considered for collision.

virtual bool isDynamicsEnabled (void)
 Returns whether or not this object is physically simulated.

virtual void setDynamicsDisableThreshold (Real linearSq, Real angularSq, Real overTime)
 Sets the linear and angular velocity thresholds, below which the object will have it's dynamics automatically disabled for performance.

virtual void setCollisionEnabled (bool enabled)
virtual void setDynamicsEnabled (bool enabled, bool reEnableOnInteraction=false)
 Sets whether or not this object is physically simulated at this time.

virtual void setBounceParameters (Real restitutionValue, Real velocityThreshold)
 Sets the 'bounciness' of this object.

virtual Real getBounceRestitutionValue (void)
 Gets the cefficient of restitution (bounciness) for this object.

virtual Real getBounceVelocityThreshold (void)
 Gets the bounce velocity threshold for this object.

virtual void setSoftness (Real softness)
 Sets the softness of this object, which determines how much it is allowed to penetrate other objects.

virtual Real getSoftness (void)
 Gets the softness factor of this object.

virtual void setFriction (Real friction)
 Sets the Coulomb frictional coefficient for this object.

virtual Real getFriction (void)
 Gets the Coulomb frictional coefficient for this object.

virtual void addForce (const Vector3 &direction, const Vector3 &atPosition=Vector3::ZERO)
 Adds a linear force to this object, in object space, at the position indicated.

virtual void addForce (Real dir_x, Real dir_y, Real dir_z, Real pos_x=0, Real pos_y=0, Real pos_z=0)
 Adds a linear force to this object, in object space, at the position indicated.

virtual void addForceWorldSpace (const Vector3 &direction, const Vector3 &atPosition=Vector3::ZERO)
 Adds a linear force to this object, in world space, at the position indicated.

virtual void addForceWorldSpace (Real dir_x, Real dir_y, Real dir_z, Real pos_x, Real pos_y, Real pos_z)
 Adds a linear force to this object, in world space, at the position indicated.

virtual void addTorque (const Vector3 &direction)
 Adds rotational force to this object, in object space.

virtual void addTorque (Real x, Real y, Real z)
 Adds rotational force to this object, in object space.

virtual void addTorqueWorldSpace (const Vector3 &direction)
 Adds rotational force to this object, in world space.

virtual void addTorqueWorldSpace (Real x, Real y, Real z)
 Adds rotational force to this object, in world space.

virtual bool testCollide (ApplicationObject *otherObj)
 Tests to see if there is a detailed collision between this object and the object passed in.

virtual bool testCollide (SceneQuery::WorldFragment *wf)
 Tests to see if there is a detailed collision between this object and the world fragment passed in.

virtual void _notifyCollided (ApplicationObject *otherObj, const CollisionInfo &info)
 This method is called automatically if testCollide indicates a real collision.

virtual void _notifyCollided (SceneQuery::WorldFragment *wf, const CollisionInfo &info)
 This method is called automatically if testCollide indicates a real collision.

SceneNode * getSceneNode (void)
 Gets the SceneNode which is being used to represent this object's position in the OGRE world.

Entity * getEntity (void)
 Gets the Entity which is being used to represent this object in the OGRE world.

dBody * getOdeBody (void)
 Gets the ODE body used to represent this object's mass and current velocity.

void setMassSphere (Real density, Real radius)
 Set the mass parameters of this object to represent a sphere.

void setMassBox (Real density, const Vector3 &dimensions, const Quaternion &orientation=Quaternion::IDENTITY)
 Set the mass parameters of this object to represent a box.

void setMassCappedCylinder (Real density, Real length, Real width, const Quaternion &orientation=Quaternion::IDENTITY)
 Set the mass parameters of this object to represent a capped cylinder.

void setMassExpert (Real mass, const Vector3 center, const Matrix3 inertia)
 Sets the mass parameters manually, use only if you know how!

const dMass * getOdeMass (void)
 Gets the ODE mass parameters for this object.

void setLinearVelocity (const Vector3 &vel)
 Sets the current linear velocity of this object.

void setLinearVelocity (Real x, Real y, Real z)
 Sets the current linear velocity of this object.

const Vector3 & getLinearVelocity (void)
 Gets the current linear velocity of this object.

const Vector3 & getAngularVelocity (void)
 Gets the current angular velocity of this object.

void setAngularVelocity (const Vector3 &vel)
 Sets the current angular velocity of this object.

void setAngularVelocity (Real x, Real y, Real z)
 Sets the current angular velocity of this object.

virtual void translate (const Vector3 &d)
 Moves the object along it's local axes.

virtual void translate (Real x, Real y, Real z)
 Moves the object along it's local axes.

virtual void translateWorldSpace (const Vector3 &d)
 Moves the object along the world axes.

virtual void translateWorldSpace (Real x, Real y, Real z)
 Moves the object along the world axes.

virtual void roll (const Radian &angle)
 Rotate the object around the local Z-axis.

void roll (Real angleunits)
virtual void pitch (const Radian &angle)
 Rotate the object around the local X-axis.

void pitch (Real angleunits)
virtual void yaw (const Radian &angle)
 Rotate the object around the local Y-axis.

void yaw (Real angleunits)
virtual void rotate (const Vector3 &axis, const Radian &angle)
 Rotate the object around an arbitrary axis.

void rotate (const Vector3 &axis, Real angleunits)
virtual void rotate (const Quaternion &q)
 Rotate the object around an aritrary axis using a Quarternion.


Protected Types

typedef std::list< dGeom * > CollisionProxyList
 Collision proxies, must be set up if collision enabled.


Protected Methods

virtual void setUp (const String &name)=0
virtual void updateCollisionProxies (void)
 Internal method for updating the state of the collision proxies.

virtual bool testCollidePlaneBounds (SceneQuery::WorldFragment *wf)
 Internal method for testing the plane bounded region WorldFragment type.

virtual void setEntityQueryFlags (void)
 Internal method for updating the query mask.


Protected Attributes

SceneNode * mSceneNode
Entity * mEntity
dBody * mOdeBody
 Dynamics properties, must be set up by subclasses if dynamics enabled.

dMass mMass
 Mass parameters.

CollisionProxyList mCollisionProxies
bool mDynamicsEnabled
bool mReenableIfInteractedWith
bool mCollisionEnabled
Real mBounceCoeffRestitution
Real mBounceVelocityThreshold
Real mSoftness
Real mFriction
Real mLinearVelDisableThreshold
Real mAngularVelDisableThreshold
Real mDisableTime
Real mDisableTimeEnd

Detailed Description

This object is the base class for all discrete objects in the application.

Remarks:
This object holds a reference to the underlying OGRE entity / entities which comprise it, plus links to the additional properties required to make it work in the application world.
It extends the OGRE UserDefinedObject to allow reverse links from Ogre::Entity. Note that this class does not override the UserDefinedObject's getTypeId method because this class is abstract.

Definition at line 42 of file OgreRefAppApplicationObject.h.


Member Typedef Documentation

typedef std::list<dGeom*> OgreRefApp::ApplicationObject::CollisionProxyList [protected]
 

Collision proxies, must be set up if collision enabled.

Definition at line 56 of file OgreRefAppApplicationObject.h.


Constructor & Destructor Documentation

OgreRefApp::ApplicationObject::ApplicationObject const String &    name
 

Definition at line 36 of file OgreRefAppApplicationObject.cpp.

References mAngularVelDisableThreshold, mBounceCoeffRestitution, mBounceVelocityThreshold, mCollisionEnabled, mDisableTime, mDisableTimeEnd, mDynamicsEnabled, mEntity, mLinearVelDisableThreshold, mMass, mOdeBody, mReenableIfInteractedWith, mSceneNode, mSoftness, setFriction(), and Ogre::String.

OgreRefApp::ApplicationObject::~ApplicationObject   [virtual]
 

Definition at line 59 of file OgreRefAppApplicationObject.cpp.

References mCollisionProxies, mOdeBody, and mSceneNode.


Member Function Documentation

void OgreRefApp::ApplicationObject::_notifyCollided SceneQuery::WorldFragment *    wf,
const CollisionInfo   info
[virtual]
 

This method is called automatically if testCollide indicates a real collision.

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 538 of file OgreRefAppApplicationObject.cpp.

void OgreRefApp::ApplicationObject::_notifyCollided ApplicationObject *    otherObj,
const CollisionInfo   info
[virtual]
 

This method is called automatically if testCollide indicates a real collision.

Reimplemented in OgreRefApp::Box.

Definition at line 531 of file OgreRefAppApplicationObject.cpp.

Referenced by testCollide(), and testCollidePlaneBounds().

void OgreRefApp::ApplicationObject::_updateFromDynamics void    [virtual]
 

Updates the position of this game object from the simulation.

Definition at line 131 of file OgreRefAppApplicationObject.cpp.

References getAngularVelocity(), getLinearVelocity(), mAngularVelDisableThreshold, mDisableTime, mDisableTimeEnd, mDynamicsEnabled, mLinearVelDisableThreshold, mOdeBody, mSceneNode, Ogre::Real, setDynamicsEnabled(), and updateCollisionProxies().

void OgreRefApp::ApplicationObject::addForce Real    dir_x,
Real    dir_y,
Real    dir_z,
Real    pos_x = 0,
Real    pos_y = 0,
Real    pos_z = 0
[virtual]
 

Adds a linear force to this object, in object space, at the position indicated.

Remarks:
All forces are applied, then reset after World::applyDynamics is called.
Parameters:
dir_x, dir_y, dir_z  The force direction in object coordinates.
pos_x, pos_y, pos_z  The position at which the force is to be applied, in object coordinates.

Definition at line 245 of file OgreRefAppApplicationObject.cpp.

References mOdeBody, and Ogre::Real.

void OgreRefApp::ApplicationObject::addForce const Vector3 &    direction,
const Vector3 &    atPosition = Vector3::ZERO
[virtual]
 

Adds a linear force to this object, in object space, at the position indicated.

Remarks:
All forces are applied, then reset after World::applyDynamics is called.
Parameters:
direction  The force direction in object coordinates.
atPosition  The position at which the force is to be applied, in object coordinates.

Definition at line 239 of file OgreRefAppApplicationObject.cpp.

void OgreRefApp::ApplicationObject::addForceWorldSpace Real    dir_x,
Real    dir_y,
Real    dir_z,
Real    pos_x,
Real    pos_y,
Real    pos_z
[virtual]
 

Adds a linear force to this object, in world space, at the position indicated.

Remarks:
All forces are applied, then reset after World::applyDynamics is called.
Parameters:
dir_x, dir_y, dir_z  The force direction in world coordinates.
pos_x, pos_y, pos_z  The position at which the force is to be applied, in world coordinates.

Definition at line 260 of file OgreRefAppApplicationObject.cpp.

References mOdeBody, and Ogre::Real.

void OgreRefApp::ApplicationObject::addForceWorldSpace const Vector3 &    direction,
const Vector3 &    atPosition = Vector3::ZERO
[virtual]
 

Adds a linear force to this object, in world space, at the position indicated.

Remarks:
All forces are applied, then reset after World::applyDynamics is called.
Parameters:
direction  The force direction in world coordinates.
atPosition  The position at which the force is to be applied, in world coordinates.

Definition at line 254 of file OgreRefAppApplicationObject.cpp.

void OgreRefApp::ApplicationObject::addTorque Real    x,
Real    y,
Real    z
[virtual]
 

Adds rotational force to this object, in object space.

Remarks:
All forces are applied, then reset after World::applyDynamics is called.
Parameters:
x, y, z  The direction of the torque to apply, in object space.

Definition at line 273 of file OgreRefAppApplicationObject.cpp.

References mOdeBody, and Ogre::Real.

void OgreRefApp::ApplicationObject::addTorque const Vector3 &    direction [virtual]
 

Adds rotational force to this object, in object space.

Remarks:
All forces are applied, then reset after World::applyDynamics is called.
Parameters:
direction  The direction of the torque to apply, in object space.

Definition at line 268 of file OgreRefAppApplicationObject.cpp.

void OgreRefApp::ApplicationObject::addTorqueWorldSpace Real    x,
Real    y,
Real    z
[virtual]
 

Adds rotational force to this object, in world space.

Remarks:
All forces are applied, then reset after World::applyDynamics is called.
Parameters:
x, y, z  The direction of the torque to apply, in world space.

Definition at line 284 of file OgreRefAppApplicationObject.cpp.

References mOdeBody, and Ogre::Real.

void OgreRefApp::ApplicationObject::addTorqueWorldSpace const Vector3 &    direction [virtual]
 

Adds rotational force to this object, in world space.

Remarks:
All forces are applied, then reset after World::applyDynamics is called.
Parameters:
direction  The direction of the torque to apply, in world space.

Definition at line 279 of file OgreRefAppApplicationObject.cpp.

const Vector3 & OgreRefApp::ApplicationObject::getAngularVelocity void   
 

Gets the current angular velocity of this object.

Remarks:
Only applicable if dynamics are enabled for this object.
Returns:
Vector3 representing the angular velocity in units per second around each axis.

Definition at line 672 of file OgreRefAppApplicationObject.cpp.

References isDynamicsEnabled(), and mOdeBody.

Referenced by _updateFromDynamics().

Real OgreRefApp::ApplicationObject::getBounceRestitutionValue void    [virtual]
 

Gets the cefficient of restitution (bounciness) for this object.

Definition at line 552 of file OgreRefAppApplicationObject.cpp.

References mBounceCoeffRestitution, and Ogre::Real.

Referenced by testCollide(), and testCollidePlaneBounds().

Real OgreRefApp::ApplicationObject::getBounceVelocityThreshold void    [virtual]
 

Gets the bounce velocity threshold for this object.

Definition at line 557 of file OgreRefAppApplicationObject.cpp.

References mBounceVelocityThreshold, and Ogre::Real.

Referenced by testCollide(), and testCollidePlaneBounds().

Entity * OgreRefApp::ApplicationObject::getEntity void   
 

Gets the Entity which is being used to represent this object in the OGRE world.

Definition at line 295 of file OgreRefAppApplicationObject.cpp.

References mEntity.

Real OgreRefApp::ApplicationObject::getFriction void    [virtual]
 

Gets the Coulomb frictional coefficient for this object.

Definition at line 584 of file OgreRefAppApplicationObject.cpp.

References mFriction, and Ogre::Real.

Referenced by testCollide(), and testCollidePlaneBounds().

const Vector3 & OgreRefApp::ApplicationObject::getLinearVelocity void   
 

Gets the current linear velocity of this object.

Remarks:
Only applicable if dynamics are enabled for this object.
Returns:
Vector3 representing the velocity in units per second.

Definition at line 658 of file OgreRefAppApplicationObject.cpp.

References isDynamicsEnabled(), and mOdeBody.

Referenced by _updateFromDynamics().

dBody * OgreRefApp::ApplicationObject::getOdeBody void   
 

Gets the ODE body used to represent this object's mass and current velocity.

Definition at line 300 of file OgreRefAppApplicationObject.cpp.

References isDynamicsEnabled(), and mOdeBody.

Referenced by OgreRefApp::Joint::setAttachments(), testCollide(), and testCollidePlaneBounds().

const dMass * OgreRefApp::ApplicationObject::getOdeMass void   
 

Gets the ODE mass parameters for this object.

Definition at line 638 of file OgreRefAppApplicationObject.cpp.

References mMass.

const Quaternion & OgreRefApp::ApplicationObject::getOrientation void    [virtual]
 

Gets the current orientation of this object.

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 118 of file OgreRefAppApplicationObject.cpp.

References mSceneNode.

Referenced by rotate(), and setDynamicsEnabled().

const Vector3 & OgreRefApp::ApplicationObject::getPosition void    [virtual]
 

Gets the current position of this object.

Definition at line 113 of file OgreRefAppApplicationObject.cpp.

References mSceneNode.

Referenced by setDynamicsEnabled(), and translateWorldSpace().

SceneNode * OgreRefApp::ApplicationObject::getSceneNode void   
 

Gets the SceneNode which is being used to represent this object's position in the OGRE world.

Definition at line 290 of file OgreRefAppApplicationObject.cpp.

References mSceneNode.

Real OgreRefApp::ApplicationObject::getSoftness void    [virtual]
 

Gets the softness factor of this object.

Definition at line 567 of file OgreRefAppApplicationObject.cpp.

References mSoftness, and Ogre::Real.

Referenced by testCollide(), and testCollidePlaneBounds().

bool OgreRefApp::ApplicationObject::isCollisionEnabled void    [virtual]
 

Returns whether or not this object is considered for collision.

Definition at line 193 of file OgreRefAppApplicationObject.cpp.

References mCollisionEnabled.

bool OgreRefApp::ApplicationObject::isDynamicsEnabled void    [virtual]
 

Returns whether or not this object is physically simulated.

Remarks:
Objects which are not physically simulated only move when their SceneNode is manually altered.

Definition at line 198 of file OgreRefAppApplicationObject.cpp.

References mDynamicsEnabled, and mReenableIfInteractedWith.

Referenced by getAngularVelocity(), getLinearVelocity(), getOdeBody(), setAngularVelocity(), setLinearVelocity(), setOrientation(), setPosition(), testCollide(), and testCollidePlaneBounds().

void OgreRefApp::ApplicationObject::pitch Real    angleunits
 

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 418 of file OgreRefAppApplicationObject.h.

References Ogre::Real.

void OgreRefApp::ApplicationObject::pitch const Radian &    angle [virtual]
 

Rotate the object around the local X-axis.

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 727 of file OgreRefAppApplicationObject.cpp.

References rotate().

void OgreRefApp::ApplicationObject::roll Real    angleunits
 

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 409 of file OgreRefAppApplicationObject.h.

References Ogre::Real.

void OgreRefApp::ApplicationObject::roll const Radian &    angle [virtual]
 

Rotate the object around the local Z-axis.

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 722 of file OgreRefAppApplicationObject.cpp.

References rotate().

void OgreRefApp::ApplicationObject::rotate const Quaternion &    q [virtual]
 

Rotate the object around an aritrary axis using a Quarternion.

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 744 of file OgreRefAppApplicationObject.cpp.

References getOrientation(), and setOrientation().

void OgreRefApp::ApplicationObject::rotate const Vector3 &    axis,
Real    angleunits
 

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 436 of file OgreRefAppApplicationObject.h.

References Ogre::Real.

void OgreRefApp::ApplicationObject::rotate const Vector3 &    axis,
const Radian &    angle
[virtual]
 

Rotate the object around an arbitrary axis.

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 737 of file OgreRefAppApplicationObject.cpp.

Referenced by pitch(), roll(), and yaw().

void OgreRefApp::ApplicationObject::setAngularVelocity Real    x,
Real    y,
Real    z
 

Sets the current angular velocity of this object.

Remarks:
Only applicable if dynamics are enabled for this object. This method is useful for starting an object off rather than applying forces to get it there.

Definition at line 690 of file OgreRefAppApplicationObject.cpp.

References isDynamicsEnabled(), mOdeBody, Ogre::Real, and setDynamicsEnabled().

void OgreRefApp::ApplicationObject::setAngularVelocity const Vector3 &    vel
 

Sets the current angular velocity of this object.

Remarks:
Only applicable if dynamics are enabled for this object. This method is useful for starting an object off rather than applying forces to get it there.

Definition at line 685 of file OgreRefAppApplicationObject.cpp.

void OgreRefApp::ApplicationObject::setBounceParameters Real    restitutionValue,
Real    velocityThreshold
[virtual]
 

Sets the 'bounciness' of this object.

Remarks:
Only applies if this object has both collision and dynamics enabled. When 2 movable objects collide, the greatest bounce parameters from both objects apply, so even a non-bouncy object can bounce if it hits a bouncy surface.
Parameters:
restitutionValue  Coeeficient of restitution (0 for no bounce, 1 for perfect bounciness)
velocityThreshold  Velocity below which no bounce will occur; this is a dampening value to ensure small velocities do not cause bounce.

Definition at line 545 of file OgreRefAppApplicationObject.cpp.

References mBounceCoeffRestitution, mBounceVelocityThreshold, and Ogre::Real.

Referenced by OgreRefApp::OgreHead::setUp(), OgreRefApp::Box::setUp(), and OgreRefApp::Ball::setUp().

void OgreRefApp::ApplicationObject::setCollisionEnabled bool    enabled [virtual]
 

Definition at line 203 of file OgreRefAppApplicationObject.cpp.

References mCollisionEnabled, and setEntityQueryFlags().

void OgreRefApp::ApplicationObject::setDynamicsDisableThreshold Real    linearSq,
Real    angularSq,
Real    overTime
[virtual]
 

Sets the linear and angular velocity thresholds, below which the object will have it's dynamics automatically disabled for performance.

Remarks:
These thresholds are used to speed up the simulation and to make it more stable, by turning off dynamics for objects that appear to be at rest. Otherwise, objects which are supposedly stationary can jitter when involved in large stacks, and can consume unnecessary CPU time. Note that if another object interacts with the disabled object, it will automatically reenable itself.

If you never want to disable dynamics automatically for this object, just set all the values to 0.

Parameters:
linearSq  The squared linear velocity magnitude threshold
angularSq  The squared angular velocity magnitude threshold
overTime  The number of seconds over which the values must continue to be under this threshold for the dynamics to be disabled. This is to catch cases where the object almost stops moving because of a boundary condition, but would speed up again later (e.g. box teetering on an edge).

Definition at line 123 of file OgreRefAppApplicationObject.cpp.

References mAngularVelDisableThreshold, mDisableTime, mLinearVelDisableThreshold, and Ogre::Real.

void OgreRefApp::ApplicationObject::setDynamicsEnabled bool    enabled,
bool    reEnableOnInteraction = false
[virtual]
 

Sets whether or not this object is physically simulated at this time.

Remarks:
Objects which are not physically simulated only move when their SceneNode is manually altered. Objects which are physically simulated must set up an ODE body as part of their setUp method.

You can also use this to temporarily turn off simulation on an object, such that it is not simulated until some other object which IS simulated comes in contact with it, or is attached to it with a joint.

Parameters:
enabled  Specifies whether dynamics is enabled
reEnableOnInteraction  If set to true, this object will reenable if some other dynamically simulated object interacts with it

Definition at line 209 of file OgreRefAppApplicationObject.cpp.

References getOrientation(), getPosition(), mDynamicsEnabled, mOdeBody, and mReenableIfInteractedWith.

Referenced by _updateFromDynamics(), setAngularVelocity(), and setLinearVelocity().

void OgreRefApp::ApplicationObject::setEntityQueryFlags void    [protected, virtual]
 

Internal method for updating the query mask.

Definition at line 749 of file OgreRefAppApplicationObject.cpp.

References mCollisionEnabled, and mEntity.

Referenced by setCollisionEnabled().

void OgreRefApp::ApplicationObject::setFriction Real    friction [virtual]
 

Sets the Coulomb frictional coefficient for this object.

Remarks:
This coefficient affects how much an object will slip when it comes into contact with another object.
Parameters:
friction  The Coulomb friction coefficient, valid from 0 to Math::POS_INFINITY. 0 means no friction, Math::POS_INFINITY means infinite friction ie no slippage. Note that friction between these 2 bounds is more CPU intensive so use with caution.

Definition at line 572 of file OgreRefAppApplicationObject.cpp.

References mFriction, and Ogre::Real.

Referenced by ApplicationObject(), OgreRefApp::OgreHead::setUp(), OgreRefApp::Box::setUp(), and OgreRefApp::Ball::setUp().

void OgreRefApp::ApplicationObject::setLinearVelocity Real    x,
Real    y,
Real    z
 

Sets the current linear velocity of this object.

Remarks:
Only applicable if dynamics are enabled for this object. This method is useful for starting an object off at a particular speed rather than applying forces to get it there.

Definition at line 648 of file OgreRefAppApplicationObject.cpp.

References isDynamicsEnabled(), mOdeBody, Ogre::Real, and setDynamicsEnabled().

void OgreRefApp::ApplicationObject::setLinearVelocity const Vector3 &    vel
 

Sets the current linear velocity of this object.

Remarks:
Only applicable if dynamics are enabled for this object. This method is useful for starting an object off at a particular speed rather than applying forces to get it there.

Definition at line 643 of file OgreRefAppApplicationObject.cpp.

void OgreRefApp::ApplicationObject::setMassBox Real    density,
const Vector3 &    dimensions,
const Quaternion &    orientation = Quaternion::IDENTITY
 

Set the mass parameters of this object to represent a box.

Remarks:
This method sets the mass and inertia properties of this object such that it is like a box.
Parameters:
density  Density of the box in Kg/m^3
dimensions  Width, height and depth of the box.
orientation  Optional orientation of the box.

Definition at line 595 of file OgreRefAppApplicationObject.cpp.

References mMass, mOdeBody, OgreRefApp::OgreToOde(), and Ogre::Real.

Referenced by OgreRefApp::Box::setUp().

void OgreRefApp::ApplicationObject::setMassCappedCylinder Real    density,
Real    length,
Real    width,
const Quaternion &    orientation = Quaternion::IDENTITY
 

Set the mass parameters of this object to represent a capped cylinder.

Remarks:
This method sets the mass and inertia properties of this object such that it is like a capped cylinder, by default lying along the Z-axis.
Parameters:
density  Density of the cylinder in Kg/m^3
length  Length of the cylinder
width  Width of the cylinder
orientation  Optional orientation if you wish the cylinder to lay along a different axis from Z.

Definition at line 611 of file OgreRefAppApplicationObject.cpp.

References mMass, mOdeBody, OgreRefApp::OgreToOde(), and Ogre::Real.

void OgreRefApp::ApplicationObject::setMassExpert Real    mass,
const Vector3    center,
const Matrix3    inertia
 

Sets the mass parameters manually, use only if you know how!

Parameters:
mass  Mass in Kg
center  The center of gravity
inertia  The inertia matrix describing distribution of the mass around the body.

Definition at line 625 of file OgreRefAppApplicationObject.cpp.

References mMass, mOdeBody, OgreRefApp::OgreToOde(), and Ogre::Real.

void OgreRefApp::ApplicationObject::setMassSphere Real    density,
Real    radius
 

Set the mass parameters of this object to represent a sphere.

Remarks:
This method sets the mass and inertia properties of this object such that it is like a sphere, ie center of gravity at the origin and an even distribution of mass in all directions.
Parameters:
density  Density of the sphere in Kg/m^3
radius  of the sphere mass

Definition at line 589 of file OgreRefAppApplicationObject.cpp.

References mMass, mOdeBody, and Ogre::Real.

Referenced by OgreRefApp::OgreHead::setUp(), and OgreRefApp::Ball::setUp().

void OgreRefApp::ApplicationObject::setOrientation const Quaternion &    orientation [virtual]
 

Sets the orientation of this object.

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 102 of file OgreRefAppApplicationObject.cpp.

References isDynamicsEnabled(), mOdeBody, mSceneNode, and updateCollisionProxies().

Referenced by OgreRefApp::World::createBall(), OgreRefApp::World::createBox(), OgreRefApp::World::createOgreHead(), OgreRefApp::World::createPlane(), and rotate().

void OgreRefApp::ApplicationObject::setPosition Real    x,
Real    y,
Real    z
[virtual]
 

Sets the position of this object.

Definition at line 94 of file OgreRefAppApplicationObject.cpp.

References isDynamicsEnabled(), mOdeBody, mSceneNode, Ogre::Real, and updateCollisionProxies().

void OgreRefApp::ApplicationObject::setPosition const Vector3 &    vec [virtual]
 

Sets the position of this object.

Definition at line 89 of file OgreRefAppApplicationObject.cpp.

Referenced by OgreRefApp::World::createBall(), OgreRefApp::World::createBox(), OgreRefApp::World::createCamera(), OgreRefApp::World::createOgreHead(), OgreRefApp::World::createPlane(), and translateWorldSpace().

void OgreRefApp::ApplicationObject::setSoftness Real    softness [virtual]
 

Sets the softness of this object, which determines how much it is allowed to penetrate other objects.

Remarks:
This parameter only has meaning if collision and dynamics are enabled for this object.
Parameters:
softness  Softness factor (0 is completely hard). Softness will be combined from both objects involved in a collision to determine how much they will penetrate.

Definition at line 562 of file OgreRefAppApplicationObject.cpp.

References mSoftness, and Ogre::Real.

Referenced by OgreRefApp::OgreHead::setUp(), OgreRefApp::Box::setUp(), and OgreRefApp::Ball::setUp().

virtual void OgreRefApp::ApplicationObject::setUp const String &    name [protected, pure virtual]
 

Implemented in OgreRefApp::Ball, OgreRefApp::Box, OgreRefApp::CollideCamera, OgreRefApp::OgreHead, and OgreRefApp::FinitePlane.

bool OgreRefApp::ApplicationObject::testCollide SceneQuery::WorldFragment *    wf [virtual]
 

Tests to see if there is a detailed collision between this object and the world fragment passed in.

Remarks:
If there is a collision, the object will be notified and if dynamics are enabled on this object, physics will be applied automatically.
Returns:
true if collision occurred

Definition at line 425 of file OgreRefAppApplicationObject.cpp.

References testCollidePlaneBounds().

bool OgreRefApp::ApplicationObject::testCollide ApplicationObject *    otherObj [virtual]
 

Tests to see if there is a detailed collision between this object and the object passed in.

Remarks:
If there is a collision, both objects will be notified and if dynamics are enabled on these objects, physics will be applied automatically.
Returns:
true if collision occurred

Definition at line 336 of file OgreRefAppApplicationObject.cpp.

References _notifyCollided(), getBounceRestitutionValue(), getBounceVelocityThreshold(), getFriction(), getOdeBody(), getSoftness(), isDynamicsEnabled(), mCollisionProxies, OgreRefApp::ApplicationObject::CollisionInfo::normal, OgreRefApp::ApplicationObject::CollisionInfo::penetrationDepth, OgreRefApp::ApplicationObject::CollisionInfo::position, and Ogre::Real.

Referenced by OgreRefApp::World::_applyCollision().

bool OgreRefApp::ApplicationObject::testCollidePlaneBounds SceneQuery::WorldFragment *    wf [protected, virtual]
 

Internal method for testing the plane bounded region WorldFragment type.

Definition at line 441 of file OgreRefAppApplicationObject.cpp.

References _notifyCollided(), getBounceRestitutionValue(), getBounceVelocityThreshold(), getFriction(), getOdeBody(), getSoftness(), isDynamicsEnabled(), mCollisionProxies, OgreRefApp::ApplicationObject::CollisionInfo::normal, OgreRefApp::ApplicationObject::CollisionInfo::penetrationDepth, OgreRefApp::ApplicationObject::CollisionInfo::position, and Ogre::Real.

Referenced by testCollide().

void OgreRefApp::ApplicationObject::translate Real    x,
Real    y,
Real    z
[virtual]
 

Moves the object along it's local axes.

This method moves the object by the supplied vector along the local axes of the obect.

Parameters:
x, y  z Real x, y and z values representing the translation.

Definition at line 707 of file OgreRefAppApplicationObject.cpp.

References Ogre::Real, and translate().

void OgreRefApp::ApplicationObject::translate const Vector3 &    d [virtual]
 

Moves the object along it's local axes.

This method moves the object by the supplied vector along the local axes of the obect.

Parameters:
d  Vector with x,y,z values representing the translation.

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 700 of file OgreRefAppApplicationObject.cpp.

References mSceneNode, and translateWorldSpace().

Referenced by translate().

void OgreRefApp::ApplicationObject::translateWorldSpace Real    x,
Real    y,
Real    z
[virtual]
 

Moves the object along the world axes.

This method moves the object by the supplied vector along the local axes of the obect.

Parameters:
x, y  z Real x, y and z values representing the translation.

Definition at line 717 of file OgreRefAppApplicationObject.cpp.

References Ogre::Real, and translateWorldSpace().

void OgreRefApp::ApplicationObject::translateWorldSpace const Vector3 &    d [virtual]
 

Moves the object along the world axes.

This method moves the object by the supplied vector along the world axes.

Parameters:
d  Vector with x,y,z values representing the translation.

Definition at line 712 of file OgreRefAppApplicationObject.cpp.

References getPosition(), and setPosition().

Referenced by OgreRefApp::CollideCamera::_notifyCollided(), OgreRefApp::CollideCamera::translate(), translate(), and translateWorldSpace().

void OgreRefApp::ApplicationObject::updateCollisionProxies void    [protected, virtual]
 

Internal method for updating the state of the collision proxies.

Definition at line 313 of file OgreRefAppApplicationObject.cpp.

References mCollisionProxies, and mSceneNode.

Referenced by _updateFromDynamics(), setOrientation(), setPosition(), OgreRefApp::FinitePlane::setUp(), OgreRefApp::OgreHead::setUp(), OgreRefApp::CollideCamera::setUp(), OgreRefApp::Box::setUp(), and OgreRefApp::Ball::setUp().

void OgreRefApp::ApplicationObject::yaw Real    angleunits
 

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 427 of file OgreRefAppApplicationObject.h.

References Ogre::Real.

void OgreRefApp::ApplicationObject::yaw const Radian &    angle [virtual]
 

Rotate the object around the local Y-axis.

Reimplemented in OgreRefApp::CollideCamera.

Definition at line 732 of file OgreRefAppApplicationObject.cpp.

References rotate().


Member Data Documentation

Real OgreRefApp::ApplicationObject::mAngularVelDisableThreshold [protected]
 

Definition at line 69 of file OgreRefAppApplicationObject.h.

Referenced by _updateFromDynamics(), ApplicationObject(), and setDynamicsDisableThreshold().

Real OgreRefApp::ApplicationObject::mBounceCoeffRestitution [protected]
 

Definition at line 64 of file OgreRefAppApplicationObject.h.

Referenced by ApplicationObject(), getBounceRestitutionValue(), and setBounceParameters().

Real OgreRefApp::ApplicationObject::mBounceVelocityThreshold [protected]
 

Definition at line 65 of file OgreRefAppApplicationObject.h.

Referenced by ApplicationObject(), getBounceVelocityThreshold(), and setBounceParameters().

bool OgreRefApp::ApplicationObject::mCollisionEnabled [protected]
 

Definition at line 62 of file OgreRefAppApplicationObject.h.

Referenced by ApplicationObject(), isCollisionEnabled(), setCollisionEnabled(), and setEntityQueryFlags().

CollisionProxyList OgreRefApp::ApplicationObject::mCollisionProxies [protected]
 

Definition at line 57 of file OgreRefAppApplicationObject.h.

Referenced by OgreRefApp::CollideCamera::nearDistChanged(), OgreRefApp::FinitePlane::setUp(), OgreRefApp::OgreHead::setUp(), OgreRefApp::CollideCamera::setUp(), OgreRefApp::Box::setUp(), OgreRefApp::Ball::setUp(), testCollide(), testCollidePlaneBounds(), updateCollisionProxies(), and ~ApplicationObject().

Real OgreRefApp::ApplicationObject::mDisableTime [protected]
 

Definition at line 70 of file OgreRefAppApplicationObject.h.

Referenced by _updateFromDynamics(), ApplicationObject(), and setDynamicsDisableThreshold().

Real OgreRefApp::ApplicationObject::mDisableTimeEnd [protected]
 

Definition at line 71 of file OgreRefAppApplicationObject.h.

Referenced by _updateFromDynamics(), and ApplicationObject().

bool OgreRefApp::ApplicationObject::mDynamicsEnabled [protected]
 

Definition at line 60 of file OgreRefAppApplicationObject.h.

Referenced by _updateFromDynamics(), ApplicationObject(), isDynamicsEnabled(), and setDynamicsEnabled().

Entity* OgreRefApp::ApplicationObject::mEntity [protected]
 

Definition at line 47 of file OgreRefAppApplicationObject.h.

Referenced by ApplicationObject(), getEntity(), setEntityQueryFlags(), OgreRefApp::FinitePlane::setUp(), OgreRefApp::OgreHead::setUp(), OgreRefApp::Box::setUp(), and OgreRefApp::Ball::setUp().

Real OgreRefApp::ApplicationObject::mFriction [protected]
 

Definition at line 67 of file OgreRefAppApplicationObject.h.

Referenced by getFriction(), and setFriction().

Real OgreRefApp::ApplicationObject::mLinearVelDisableThreshold [protected]
 

Definition at line 68 of file OgreRefAppApplicationObject.h.

Referenced by _updateFromDynamics(), ApplicationObject(), and setDynamicsDisableThreshold().

dMass OgreRefApp::ApplicationObject::mMass [protected]
 

Mass parameters.

Definition at line 52 of file OgreRefAppApplicationObject.h.

Referenced by ApplicationObject(), getOdeMass(), setMassBox(), setMassCappedCylinder(), setMassExpert(), and setMassSphere().

dBody* OgreRefApp::ApplicationObject::mOdeBody [protected]
 

Dynamics properties, must be set up by subclasses if dynamics enabled.

Definition at line 50 of file OgreRefAppApplicationObject.h.

Referenced by _updateFromDynamics(), addForce(), addForceWorldSpace(), addTorque(), addTorqueWorldSpace(), ApplicationObject(), getAngularVelocity(), getLinearVelocity(), getOdeBody(), setAngularVelocity(), setDynamicsEnabled(), setLinearVelocity(), setMassBox(), setMassCappedCylinder(), setMassExpert(), setMassSphere(), setOrientation(), setPosition(), OgreRefApp::OgreHead::setUp(), OgreRefApp::Box::setUp(), OgreRefApp::Ball::setUp(), and ~ApplicationObject().

bool OgreRefApp::ApplicationObject::mReenableIfInteractedWith [protected]
 

Definition at line 61 of file OgreRefAppApplicationObject.h.

Referenced by ApplicationObject(), isDynamicsEnabled(), and setDynamicsEnabled().

SceneNode* OgreRefApp::ApplicationObject::mSceneNode [protected]
 

Definition at line 46 of file OgreRefAppApplicationObject.h.

Referenced by _updateFromDynamics(), ApplicationObject(), getOrientation(), getPosition(), getSceneNode(), setOrientation(), setPosition(), OgreRefApp::FinitePlane::setUp(), OgreRefApp::OgreHead::setUp(), OgreRefApp::CollideCamera::setUp(), OgreRefApp::Box::setUp(), OgreRefApp::Ball::setUp(), translate(), updateCollisionProxies(), and ~ApplicationObject().

Real OgreRefApp::ApplicationObject::mSoftness [protected]
 

Definition at line 66 of file OgreRefAppApplicationObject.h.

Referenced by ApplicationObject(), getSoftness(), and setSoftness().


The documentation for this class was generated from the following files:

Copyright © 2002-2003 by The OGRE Team
Last modified Sun Nov 28 19:51:55 2004