#include <OgreMovableObject.h>
Inheritance diagram for Ogre::MovableObject:
Public Types | |
typedef std::vector< ShadowRenderable * > | ShadowRenderableList |
typedef VectorIterator< ShadowRenderableList > | ShadowRenderableListIterator |
Public Methods | |
MovableObject () | |
Constructor. | |
virtual | ~MovableObject () |
Virtual destructor - read Scott Meyers if you don't know why this is needed. | |
virtual const String & | getName (void) const=0 |
Returns the name of this object. | |
virtual const String & | getMovableType (void) const=0 |
Returns the type name of this object. | |
virtual Node * | getParentNode (void) const |
Returns the node to which this object is attached. | |
virtual SceneNode * | getParentSceneNode (void) const |
Returns the scene node to which this object is attached. | |
virtual void | _notifyAttached (Node *parent, bool isTagPoint=false) |
Internal method called to notify the object that it has been attached to a node. | |
virtual bool | isAttached (void) const |
Returns true if this object is attached to a SceneNode or TagPoint. | |
virtual void | _notifyCurrentCamera (Camera *cam)=0 |
Internal method to notify the object of the camera to be used for the next rendering operation. | |
virtual const AxisAlignedBox & | getBoundingBox (void) const=0 |
Retrieves the local axis-aligned bounding box for this object. | |
virtual Real | getBoundingRadius (void) const=0 |
Retrieves the radius of the origin-centered bounding sphere for this object. | |
virtual const AxisAlignedBox & | getWorldBoundingBox (bool derive=false) const |
Retrieves the axis-aligned bounding box for this object in world coordinates. | |
virtual const Sphere & | getWorldBoundingSphere (bool derive=false) const |
Retrieves the worldspace bounding sphere for this object. | |
virtual void | _updateRenderQueue (RenderQueue *queue)=0 |
Internal method by which the movable object must add Renderable subclass instances to the rendering queue. | |
virtual void | setVisible (bool visible) |
Tells this object whether to be visible or not, if it has a renderable component. | |
virtual bool | isVisible (void) const |
Returns whether or not this object is supposed to be visible or not. | |
virtual void | setUserObject (UserDefinedObject *obj) |
Call this to associate your own custom user object instance with this MovableObject. | |
virtual UserDefinedObject * | getUserObject (void) |
Retrieves a pointer to a custom application object associated with this movable by an earlier call to setUserObject. | |
virtual void | setRenderQueueGroup (RenderQueueGroupID queueID) |
Sets the render queue group this entity will be rendered through. | |
virtual RenderQueueGroupID | getRenderQueueGroup (void) const |
Gets the queue group for this entity, see setRenderQueueGroup for full details. | |
virtual Matrix4 | _getParentNodeFullTransform (void) const |
return the full transformation of the parent sceneNode or the attachingPoint node | |
virtual void | setQueryFlags (unsigned long flags) |
Sets the query flags for this object. | |
virtual void | addQueryFlags (unsigned long flags) |
As setQueryFlags, except the flags passed as parameters are appended to the existing flags on this object. | |
virtual void | removeQueryFlags (unsigned long flags) |
As setQueryFlags, except the flags passed as parameters are removed from the existing flags on this object. | |
virtual unsigned long | getQueryFlags (void) const |
Returns the query flags relevant for this object. | |
EdgeData * | getEdgeList (void) |
Define a default implementation of method from ShadowCaster which implements no shadows. | |
ShadowRenderableListIterator | getShadowVolumeRenderableIterator (ShadowTechnique shadowTechnique, const Light *light, HardwareIndexBufferSharedPtr *indexBuffer, bool extrudeVertices, Real extrusionDist, unsigned long flags=0) |
Define a default implementation of method from ShadowCaster which implements no shadows. | |
ShadowRenderableListIterator | getLastShadowVolumeRenderableIterator (void) |
Return the last calculated shadow renderables. | |
const AxisAlignedBox & | getLightCapBounds (void) const |
Overridden member from ShadowCaster. | |
const AxisAlignedBox & | getDarkCapBounds (const Light &light, Real dirLightExtrusionDist) const |
Overridden member from ShadowCaster. | |
void | setCastShadows (bool enabled) |
Sets whether or not this object will cast shadows. | |
bool | getCastShadows (void) const |
Returns whether shadow casting is enabled for this object. | |
Real | getPointExtrusionDistance (const Light *l) const |
Get the distance to extrude for a point/spot light. | |
Static Public Methods | |
void | extrudeVertices (HardwareVertexBufferSharedPtr vertexBuffer, size_t originalVertexCount, const Vector4 &lightPos, Real extrudeDist) |
Utility method for extruding vertices based on a light. | |
Protected Methods | |
Real | getExtrusionDistance (const Vector3 &objectPos, const Light *light) const |
Helper moethod for calculating extrusion distance. | |
virtual void | updateEdgeListLightFacing (EdgeData *edgeData, const Vector4 &lightPos) |
Tells the caster to perform the tasks necessary to update the edge data's light listing. | |
virtual void | generateShadowVolume (EdgeData *edgeData, HardwareIndexBufferSharedPtr indexBuffer, const Light *light, ShadowRenderableList &shadowRenderables, unsigned long flags) |
Generates the indexes required to render a shadow volume into the index buffer which is passed in, and updates shadow renderables to use it. | |
virtual void | extrudeBounds (AxisAlignedBox &box, const Vector4 &lightPos, Real extrudeDist) const |
Utility method for extruding a bounding box. | |
Protected Attributes | |
Node * | mParentNode |
node to which this object is attached | |
bool | mParentIsTagPoint |
bool | mVisible |
Is this object visible? | |
UserDefinedObject * | mUserObject |
User defined object which is linked to this object. | |
RenderQueueGroupID | mRenderQueueID |
The render queue to use when rendering this object. | |
bool | mRenderQueueIDSet |
Flags whether the RenderQueue's default should be used. | |
unsigned long | mQueryFlags |
Flags determining whether this object is included / excluded from scene queries. | |
AxisAlignedBox | mWorldAABB |
Cached world AABB of this object. | |
Sphere | mWorldBoundingSphere |
AxisAlignedBox | mWorldDarkCapBounds |
World space AABB of this object's dark cap. | |
bool | mCastShadows |
Does this object cast shadows? |
Definition at line 44 of file OgreMovableObject.h.
|
Definition at line 125 of file OgreShadowCaster.h. |
|
Definition at line 126 of file OgreShadowCaster.h. Referenced by Ogre::Entity::getLastShadowVolumeRenderableIterator(). |
|
Constructor.
Definition at line 36 of file OgreMovableObject.cpp. References mCastShadows, mParentIsTagPoint, mParentNode, mQueryFlags, mRenderQueueID, mRenderQueueIDSet, mUserObject, mVisible, mWorldAABB, Ogre::RENDER_QUEUE_MAIN, and Ogre::AxisAlignedBox::setNull(). |
|
Virtual destructor - read Scott Meyers if you don't know why this is needed.
Definition at line 49 of file OgreMovableObject.cpp. |
|
return the full transformation of the parent sceneNode or the attachingPoint node
Definition at line 121 of file OgreMovableObject.cpp. References Ogre::Node::_getFullTransform(), and mParentNode. Referenced by Ogre::Entity::cacheBoneMatrices(), Ogre::TagPoint::getParentEntityTransform(), getWorldBoundingBox(), Ogre::SubEntity::getWorldTransforms(), Ogre::Entity::EntityShadowRenderable::getWorldTransforms(), and Ogre::BillboardSet::getWorldTransforms(). |
|
Internal method called to notify the object that it has been attached to a node.
Reimplemented in Ogre::Entity. Definition at line 69 of file OgreMovableObject.cpp. References mParentIsTagPoint, and mParentNode. Referenced by Ogre::SceneNode::attachObject(), Ogre::Entity::attachObjectImpl(), Ogre::SceneNode::detachAllObjects(), Ogre::SceneNode::detachObject(), Ogre::Entity::detachObjectImpl(), and Ogre::SceneNode::~SceneNode(). |
|
Internal method to notify the object of the camera to be used for the next rendering operation.
Implemented in Ogre::BillboardSet, Ogre::Entity, Ogre::Frustum, Ogre::Light, Ogre::MovablePlane, Ogre::SimpleRenderable, and Ogre::TerrainRenderable. Referenced by Ogre::OctreeNode::_addToRenderQueue(), and Ogre::BspSceneManager::processVisibleLeaf(). |
|
Internal method by which the movable object must add Renderable subclass instances to the rendering queue.
Implemented in Ogre::BillboardSet, Ogre::Entity, Ogre::Frustum, Ogre::Light, Ogre::MovablePlane, Ogre::SimpleRenderable, and Ogre::TerrainRenderable. Referenced by Ogre::BspSceneManager::processVisibleLeaf(). |
|
As setQueryFlags, except the flags passed as parameters are appended to the existing flags on this object.
Definition at line 185 of file OgreMovableObject.h. |
|
Utility method for extruding a bounding box.
Definition at line 275 of file OgreShadowCaster.cpp. References Ogre::AxisAlignedBox::getAllCorners(), Ogre::AxisAlignedBox::getMaximum(), Ogre::AxisAlignedBox::getMinimum(), Ogre::Vector3::makeCeil(), Ogre::Vector3::makeFloor(), Ogre::Vector3::normalise(), Ogre::Real, Ogre::AxisAlignedBox::setExtents(), Ogre::Vector4::w, Ogre::Vector4::x, Ogre::Vector3::x, Ogre::Vector4::y, Ogre::Vector3::y, Ogre::Vector4::z, and Ogre::Vector3::z. Referenced by getDarkCapBounds(). |
|
Utility method for extruding vertices based on a light.
Definition at line 236 of file OgreShadowCaster.cpp. References Ogre::Vector3::normalise(), Ogre::Real, Ogre::Vector4::w, Ogre::Vector3::x, Ogre::Vector4::x, Ogre::Vector3::y, Ogre::Vector4::y, Ogre::Vector3::z, and Ogre::Vector4::z. Referenced by Ogre::Entity::getShadowVolumeRenderableIterator(). |
|
Generates the indexes required to render a shadow volume into the index buffer which is passed in, and updates shadow renderables to use it.
Definition at line 37 of file OgreShadowCaster.cpp. References Ogre::EdgeData::Edge::degenerate, Ogre::EdgeData::edgeGroups, Ogre::EdgeData::EdgeGroup::edges, Ogre::ShadowRenderable::getLightCapRenderable(), Ogre::ShadowRenderable::getRenderOperationForUpdate(), Ogre::Light::getType(), Ogre::IndexData::indexCount, Ogre::RenderOperation::indexData, Ogre::IndexData::indexStart, Ogre::EdgeData::Triangle::lightFacing, Ogre::SRF_EXTRUDE_TO_INFINITY, Ogre::SRF_INCLUDE_DARK_CAP, Ogre::SRF_INCLUDE_LIGHT_CAP, Ogre::EdgeData::triangles, Ogre::EdgeData::Edge::triIndex, Ogre::VertexData::vertexCount, Ogre::EdgeData::EdgeGroup::vertexData, Ogre::EdgeData::EdgeGroup::vertexSet, Ogre::EdgeData::Triangle::vertexSet, Ogre::EdgeData::Triangle::vertIndex, and Ogre::EdgeData::Edge::vertIndex. Referenced by Ogre::Entity::getShadowVolumeRenderableIterator(). |
|
Retrieves the local axis-aligned bounding box for this object.
Implemented in Ogre::BillboardSet, Ogre::Entity, Ogre::Frustum, Ogre::Light, Ogre::MovablePlane, Ogre::SimpleRenderable, and Ogre::TerrainRenderable. Referenced by getWorldBoundingBox(). |
|
Retrieves the radius of the origin-centered bounding sphere for this object.
Implemented in Ogre::BillboardSet, Ogre::Camera, Ogre::Entity, Ogre::Frustum, Ogre::Light, Ogre::MovablePlane, Ogre::Rectangle2D, Ogre::WireBoundingBox, and Ogre::TerrainRenderable. Referenced by Ogre::BspIntersectionSceneQuery::execute(), getWorldBoundingSphere(), and Ogre::BspLevel::tagNodesWithMovable(). |
|
Returns whether shadow casting is enabled for this object.
Implements Ogre::ShadowCaster. Definition at line 231 of file OgreMovableObject.h. Referenced by Ogre::OctreeNode::_addToRenderQueue(), Ogre::SubEntity::getCastsShadows(), Ogre::SceneManager::prepareShadowTextures(), Ogre::BspSceneManager::processVisibleLeaf(), Ogre::SceneManager::ShadowCasterSceneQueryListener::queryResult(), Ogre::SceneManager::renderAdditiveStencilShadowedQueueGroupObjects(), Ogre::SceneManager::renderModulativeStencilShadowedQueueGroupObjects(), and Ogre::SceneManager::renderModulativeTextureShadowedQueueGroupObjects(). |
|
Overridden member from ShadowCaster.
Implements Ogre::ShadowCaster. Definition at line 162 of file OgreMovableObject.cpp. References Ogre::ShadowCaster::extrudeBounds(), Ogre::Light::getAs4DVector(), getLightCapBounds(), mWorldDarkCapBounds, and Ogre::Real. |
|
Define a default implementation of method from ShadowCaster which implements no shadows.
Implements Ogre::ShadowCaster. Reimplemented in Ogre::Entity. Definition at line 195 of file OgreMovableObject.h. |
|
Helper moethod for calculating extrusion distance.
Definition at line 321 of file OgreShadowCaster.cpp. References Ogre::Light::getAttenuationRange(), Ogre::Light::getDerivedPosition(), Ogre::Vector3::length(), and Ogre::Real. Referenced by getPointExtrusionDistance(). |
|
Return the last calculated shadow renderables.
Implements Ogre::ShadowCaster. Reimplemented in Ogre::Entity. Definition at line 206 of file OgreMovableObject.h. |
|
Overridden member from ShadowCaster.
Implements Ogre::ShadowCaster. Definition at line 156 of file OgreMovableObject.cpp. References getWorldBoundingBox(). Referenced by getDarkCapBounds(). |
|
Returns the type name of this object.
Implemented in Ogre::BillboardSet, Ogre::Camera, Ogre::Entity, Ogre::Frustum, Ogre::Light, Ogre::MovablePlane, Ogre::ParticleSystem, Ogre::SimpleRenderable, and Ogre::TerrainRenderable. |
|
Returns the name of this object.
Implemented in Ogre::BillboardSet, Ogre::Camera, Ogre::Entity, Ogre::Frustum, Ogre::Light, Ogre::MovablePlane, Ogre::SimpleRenderable, and Ogre::TerrainRenderable. Referenced by Ogre::SceneNode::attachObject(), Ogre::Entity::attachObjectImpl(), and Ogre::Entity::attachObjectToBone(). |
|
Returns the node to which this object is attached.
Definition at line 75 of file OgreMovableObject.cpp. References mParentNode. Referenced by Ogre::TagPoint::_updateFromParent(), Ogre::Entity::detachObjectImpl(), Ogre::BspIntersectionSceneQuery::execute(), Ogre::SubEntity::getSquaredViewDepth(), Ogre::Entity::EntityShadowRenderable::getWorldOrientation(), Ogre::Entity::EntityShadowRenderable::getWorldPosition(), Ogre::TagPoint::needUpdate(), Ogre::BspSceneManager::processVisibleLeaf(), and Ogre::SceneManager::ShadowCasterSceneQueryListener::queryResult(). |
|
Returns the scene node to which this object is attached.
Definition at line 80 of file OgreMovableObject.cpp. References Ogre::TagPoint::getParentEntity(). Referenced by Ogre::TerrainRenderable::getLights(), Ogre::TagPoint::getLights(), Ogre::SubEntity::getLights(), Ogre::SimpleRenderable::getLights(), and Ogre::BillboardSet::getLights(). |
|
Get the distance to extrude for a point/spot light.
Implements Ogre::ShadowCaster. Definition at line 172 of file OgreMovableObject.cpp. References Ogre::Node::_getDerivedPosition(), Ogre::ShadowCaster::getExtrusionDistance(), mParentNode, and Ogre::Real. |
|
Returns the query flags relevant for this object.
Definition at line 192 of file OgreMovableObject.h. Referenced by Ogre::OctreePlaneBoundedVolumeListSceneQuery::execute(), Ogre::OctreeSphereSceneQuery::execute(), Ogre::OctreeRaySceneQuery::execute(), Ogre::OctreeAxisAlignedBoxSceneQuery::execute(), Ogre::OctreeIntersectionSceneQuery::execute(), and Ogre::BspIntersectionSceneQuery::execute(). |
|
Gets the queue group for this entity, see setRenderQueueGroup for full details.
Definition at line 116 of file OgreMovableObject.cpp. References mRenderQueueID, and Ogre::RenderQueueGroupID. |
|
Define a default implementation of method from ShadowCaster which implements no shadows.
Implements Ogre::ShadowCaster. Reimplemented in Ogre::Entity. Definition at line 197 of file OgreMovableObject.h. References Ogre::Real, and Ogre::ShadowTechnique. |
|
Retrieves a pointer to a custom application object associated with this movable by an earlier call to setUserObject.
Definition at line 153 of file OgreMovableObject.h. |
|
Retrieves the axis-aligned bounding box for this object in world coordinates.
Implements Ogre::ShadowCaster. Definition at line 133 of file OgreMovableObject.cpp. References _getParentNodeFullTransform(), getBoundingBox(), mWorldAABB, and Ogre::AxisAlignedBox::transform(). Referenced by Ogre::OctreePlaneBoundedVolumeListSceneQuery::execute(), Ogre::OctreeSphereSceneQuery::execute(), Ogre::OctreeRaySceneQuery::execute(), Ogre::OctreeAxisAlignedBoxSceneQuery::execute(), Ogre::OctreeIntersectionSceneQuery::execute(), Ogre::BspIntersectionSceneQuery::execute(), getLightCapBounds(), Ogre::BspSceneManager::processVisibleLeaf(), and Ogre::SceneManager::ShadowCasterSceneQueryListener::queryResult(). |
|
Retrieves the worldspace bounding sphere for this object.
Definition at line 145 of file OgreMovableObject.cpp. References Ogre::Node::_getDerivedPosition(), getBoundingRadius(), mParentNode, mWorldBoundingSphere, Ogre::Sphere::setCenter(), and Ogre::Sphere::setRadius(). Referenced by Ogre::SceneManager::ShadowCasterSceneQueryListener::queryResult(). |
|
Returns true if this object is attached to a SceneNode or TagPoint.
Definition at line 93 of file OgreMovableObject.cpp. References mParentNode. Referenced by Ogre::Entity::attachObjectToBone(). |
|
Returns whether or not this object is supposed to be visible or not.
Definition at line 104 of file OgreMovableObject.cpp. References mVisible. Referenced by Ogre::OctreeNode::_addToRenderQueue(), Ogre::SceneManager::_populateLightList(), Ogre::BspSceneManager::processVisibleLeaf(), and Ogre::SceneManager::ShadowCasterSceneQueryListener::queryResult(). |
|
As setQueryFlags, except the flags passed as parameters are removed from the existing flags on this object.
Definition at line 189 of file OgreMovableObject.h. |
|
Sets whether or not this object will cast shadows.
Definition at line 229 of file OgreMovableObject.h. Referenced by Ogre::Entity::Entity(), Ogre::SceneManager::setSkyBox(), Ogre::SceneManager::setSkyDome(), and Ogre::SceneManager::setSkyPlane(). |
|
Sets the query flags for this object.
Definition at line 181 of file OgreMovableObject.h. |
|
Sets the render queue group this entity will be rendered through.
Reimplemented in Ogre::Entity. Definition at line 110 of file OgreMovableObject.cpp. References mRenderQueueID, mRenderQueueIDSet, and Ogre::RenderQueueGroupID. |
|
Call this to associate your own custom user object instance with this MovableObject.
Definition at line 149 of file OgreMovableObject.h. |
|
Tells this object whether to be visible or not, if it has a renderable component.
Reimplemented in Ogre::Light. Definition at line 99 of file OgreMovableObject.cpp. References mVisible. |
|
Tells the caster to perform the tasks necessary to update the edge data's light listing. Can be overridden if the subclass needs to do additional things.
Definition at line 31 of file OgreShadowCaster.cpp. References Ogre::EdgeData::updateTriangleLightFacing(). Referenced by Ogre::Entity::getShadowVolumeRenderableIterator(). |
|
Does this object cast shadows?
Definition at line 67 of file OgreMovableObject.h. Referenced by Ogre::BillboardSet::BillboardSet(), and MovableObject(). |
|
Definition at line 49 of file OgreMovableObject.h. Referenced by _notifyAttached(), and MovableObject(). |
|
|
Flags determining whether this object is included / excluded from scene queries.
Definition at line 59 of file OgreMovableObject.h. Referenced by MovableObject(), and Ogre::TerrainRenderable::TerrainRenderable(). |
|
The render queue to use when rendering this object.
Definition at line 55 of file OgreMovableObject.h. Referenced by Ogre::SimpleRenderable::_updateRenderQueue(), Ogre::Entity::_updateRenderQueue(), Ogre::BillboardSet::_updateRenderQueue(), getRenderQueueGroup(), MovableObject(), and setRenderQueueGroup(). |
|
Flags whether the RenderQueue's default should be used.
Definition at line 57 of file OgreMovableObject.h. Referenced by MovableObject(), and setRenderQueueGroup(). |
|
User defined object which is linked to this object.
Definition at line 53 of file OgreMovableObject.h. Referenced by MovableObject(). |
|
Is this object visible?
Definition at line 51 of file OgreMovableObject.h. Referenced by Ogre::Camera::Camera(), Ogre::Frustum::Frustum(), isVisible(), MovableObject(), and setVisible(). |
|
Cached world AABB of this object.
Definition at line 61 of file OgreMovableObject.h. Referenced by getWorldBoundingBox(), and MovableObject(). |
|
Definition at line 63 of file OgreMovableObject.h. Referenced by getWorldBoundingSphere(). |
|
World space AABB of this object's dark cap.
Definition at line 65 of file OgreMovableObject.h. Referenced by getDarkCapBounds(). |
Copyright © 2002-2003 by The OGRE Team
Last modified Sun Nov 28 19:51:17 2004