Sirikata
|
Base class for objects represented in Ogre as a mesh. More...
#include <Entity.hpp>
Public Types | |
typedef std::map< int, std::pair< String, Ogre::MaterialPtr > > | ReplacedMaterialMap |
Public Member Functions | |
Entity (OgreRenderer *scene, const String &name) | |
virtual | ~Entity () |
virtual BoundingSphere3f | bounds ()=0 |
virtual void | tick (const Time &t, const Duration &deltaTime) |
virtual bool | isDynamic () const |
virtual bool | isMobile () const =0 |
void | removeFromScene (bool *mobileVal=NULL) |
void | addToScene (Ogre::SceneNode *newParent=NULL) |
OgreRenderer * | getScene () const |
Ogre::SceneNode * | getSceneNode () |
Ogre::Entity * | getOgreEntity () |
Ogre::BillboardSet * | getOgreBillboard () const |
void | setOgrePosition (const Vector3d &pos) |
void | setOgreOrientation (const Quaternion &orient) |
Vector3d | getOgrePosition () |
Quaternion | getOgreOrientation () |
float | getRadius () |
void | setSelected (bool selected) |
std::string | ogreMovableName () const |
const String & | id () const |
void | setVisible (bool vis) |
void | setAnimation (const String &name, bool *checkVisible=NULL) |
const std::vector< String > | getAnimationList () |
void | bindTexture (const std::string &textureName, const String &objId) |
void | unbindTexture (const std::string &textureName) |
void | loadEmpty () |
'Load' an empty mesh, i.e. | |
void | loadMesh (Mesh::MeshdataPtr meshdata, const String &meshname, const std::set< String > &animations) |
Load the mesh and use it for this entity. | |
void | loadBillboard (Mesh::BillboardPtr bboard, const String &bbtexname) |
Load the billboard and use it for this entity. | |
void | loadFailed () |
Notify this entity (and it's listeners in turn) that loading of the asset it depends on has failed. | |
void | unload () |
Static Public Member Functions | |
static Entity * | fromMovableObject (Ogre::MovableObject *obj) |
static std::string | ogreMeshName (const String &name) |
Protected Types | |
typedef std::vector < Ogre::Light * > | LightList |
Protected Member Functions | |
void | fixTextures () |
void | init (Ogre::MovableObject *obj) |
void | beginLoad () |
void | unloadMesh () |
void | unloadBillboard () |
void | setDynamic (bool isStatic) |
void | checkDynamic () |
void | updateScale (float scale) |
void | updateVisibility () |
void | setIsAggregate (bool isAgg) |
Protected Attributes | |
OgreRenderer *const | mScene |
String | mName |
Ogre::MovableObject * | mOgreObject |
Ogre::SceneNode * | mSceneNode |
std::list< Entity * >::iterator | mMovingIter |
ReplacedMaterialMap | mReplacedMaterials |
TextureBindingsMap | mTextureBindings |
LightList | mLights |
bool | mVisible |
bool | mIsAggregate |
float | mAggregateRadius |
Vector3d | mAggregateOffset |
Ogre::AnimationState * | mCurrentAnimation |
String | mInitialAnimationName |
String | mMeshName |
std::set< String > | mAnimationList |
bool | mMeshLoaded |
Base class for objects represented in Ogre as a mesh.
typedef std::vector<Ogre::Light*> Sirikata::Graphics::Entity::LightList [protected] |
typedef std::map<int, std::pair<String, Ogre::MaterialPtr> > Sirikata::Graphics::Entity::ReplacedMaterialMap |
Sirikata::Graphics::Entity::Entity | ( | OgreRenderer * | scene, |
const String & | name | ||
) |
References addToScene(), mName, Sirikata::Graphics::OgreRenderer::mSceneEntities, mSceneNode, and unload().
Sirikata::Graphics::Entity::~Entity | ( | ) | [virtual] |
void Sirikata::Graphics::Entity::addToScene | ( | Ogre::SceneNode * | newParent = NULL | ) |
References checkDynamic(), Sirikata::Graphics::OgreRenderer::getSceneManager(), mScene, mSceneNode, and removeFromScene().
Referenced by Entity().
void Sirikata::Graphics::Entity::beginLoad | ( | ) | [protected] |
References isMobile(), mAnimationList, mCurrentAnimation, setAnimation(), setDynamic(), and unload().
Referenced by loadBillboard(), loadEmpty(), and loadMesh().
void Sirikata::Graphics::Entity::bindTexture | ( | const std::string & | textureName, |
const String & | objId | ||
) |
References fixTextures(), and mTextureBindings.
virtual BoundingSphere3f Sirikata::Graphics::Entity::bounds | ( | ) | [pure virtual] |
Implemented in Sirikata::Graphics::ProxyEntity.
Referenced by Sirikata::Graphics::OgreSystem::axis(), and getRadius().
void Sirikata::Graphics::Entity::checkDynamic | ( | ) | [protected] |
References isDynamic(), and setDynamic().
Referenced by addToScene(), Sirikata::Graphics::ProxyEntity::initializeToProxy(), Sirikata::Graphics::ProxyEntity::iUpdateLocation(), setAnimation(), and tick().
void Sirikata::Graphics::Entity::fixTextures | ( | ) | [protected] |
References Sirikata::Logging::detailed, Sirikata::Logging::fatal, Sirikata::Graphics::forEachTexture(), getOgreEntity(), id(), mReplacedMaterials, mTextureBindings, and SILOG.
Referenced by bindTexture(), loadBillboard(), loadMesh(), and unbindTexture().
Entity * Sirikata::Graphics::Entity::fromMovableObject | ( | Ogre::MovableObject * | obj | ) | [static] |
Reimplemented in Sirikata::Graphics::ProxyEntity.
const std::vector< String > Sirikata::Graphics::Entity::getAnimationList | ( | ) |
References mAnimationList.
Referenced by Sirikata::Graphics::OgreSystem::getAnimationList().
Ogre::BillboardSet * Sirikata::Graphics::Entity::getOgreBillboard | ( | ) | const |
References mOgreObject.
Referenced by unload(), and unloadBillboard().
Ogre::Entity * Sirikata::Graphics::Entity::getOgreEntity | ( | ) |
References mOgreObject.
Referenced by fixTextures(), setAnimation(), unload(), unloadMesh(), and ~Entity().
Quaternion Sirikata::Graphics::Entity::getOgreOrientation | ( | ) |
References Sirikata::Graphics::fromOgre(), and mSceneNode.
Vector3d Sirikata::Graphics::Entity::getOgrePosition | ( | ) |
References Sirikata::Graphics::fromOgre(), Sirikata::Graphics::OgreRenderer::getOffset(), mScene, and mSceneNode.
Referenced by Sirikata::Graphics::OgreSystem::iOnCreateProxy(), loadMesh(), and setSelected().
float Sirikata::Graphics::Entity::getRadius | ( | ) |
References bounds(), and mAggregateRadius.
Referenced by init(), and setSelected().
OgreRenderer* Sirikata::Graphics::Entity::getScene | ( | ) | const [inline] |
Referenced by Sirikata::Graphics::ProxyEntity::iHandleDestroyTimeout(), Sirikata::Graphics::ProxyEntity::iOnSetIsAggregate(), Sirikata::Graphics::ProxyEntity::iOnSetMesh(), Sirikata::Graphics::ProxyEntity::iOnSetScale(), Sirikata::Graphics::ProxyEntity::iValidated(), loadBillboard(), loadMesh(), setOgrePosition(), Sirikata::Graphics::ProxyEntity::tryDelete(), unloadBillboard(), unloadMesh(), and ~Entity().
Ogre::SceneNode* Sirikata::Graphics::Entity::getSceneNode | ( | ) | [inline] |
const String& Sirikata::Graphics::Entity::id | ( | ) | const [inline] |
void Sirikata::Graphics::Entity::init | ( | Ogre::MovableObject * | obj | ) | [protected] |
References getRadius(), mOgreObject, mSceneNode, obj, updateScale(), and updateVisibility().
Referenced by loadBillboard(), loadMesh(), unloadBillboard(), unloadMesh(), and ~Entity().
bool Sirikata::Graphics::Entity::isDynamic | ( | ) | const [virtual] |
Reimplemented in Sirikata::Graphics::ProxyEntity.
References mCurrentAnimation.
Referenced by checkDynamic().
virtual bool Sirikata::Graphics::Entity::isMobile | ( | ) | const [pure virtual] |
Implemented in Sirikata::Graphics::ProxyEntity.
Referenced by beginLoad(), and setAnimation().
void Sirikata::Graphics::Entity::loadBillboard | ( | Mesh::BillboardPtr | bboard, |
const String & | bbtexname | ||
) |
Load the billboard and use it for this entity.
bbname | the name (ID) of the billboard to use for this entity |
References beginLoad(), Sirikata::Logging::detailed, Sirikata::Graphics::EntityListener::entityLoaded(), Sirikata::Logging::error, Sirikata::Mesh::Billboard::FACING_CAMERA, Sirikata::Mesh::Billboard::FACING_FIXED, fixTextures(), getScene(), Sirikata::Graphics::OgreRenderer::getSceneManager(), init(), Sirikata::Provider< EntityListener * >::notify(), ogreMovableName(), and SILOG.
Referenced by Sirikata::Graphics::PriorityDownloadPlanner::finishLoadAsset().
void Sirikata::Graphics::Entity::loadEmpty | ( | ) |
'Load' an empty mesh, i.e.
hide the object because it has no mesh.
References beginLoad(), and mMeshLoaded.
Referenced by Sirikata::Graphics::PriorityDownloadPlanner::requestAssetForObject().
void Sirikata::Graphics::Entity::loadFailed | ( | ) |
Notify this entity (and it's listeners in turn) that loading of the asset it depends on has failed.
References Sirikata::Graphics::EntityListener::entityLoaded(), and Sirikata::Provider< EntityListener * >::notify().
Referenced by Sirikata::Graphics::PriorityDownloadPlanner::finishLoadAsset().
void Sirikata::Graphics::Entity::loadMesh | ( | Mesh::MeshdataPtr | meshdata, |
const String & | meshname, | ||
const std::set< String > & | animations | ||
) |
Load the mesh and use it for this entity.
meshname | the name (ID) of the mesh to use for this entity |
References beginLoad(), Sirikata::Mesh::ComputeBounds(), Sirikata::SHA256::computeDigest(), Sirikata::Logging::detailed, Sirikata::Graphics::EntityListener::entityLoaded(), Sirikata::Logging::error, fixTextures(), getOgrePosition(), getScene(), Sirikata::Graphics::OgreRenderer::getSceneManager(), init(), mAggregateOffset, mAggregateRadius, mAnimationList, mInitialAnimationName, mIsAggregate, mMeshLoaded, mMeshName, Sirikata::Provider< EntityListener * >::notify(), ogreMovableName(), Sirikata::SHA256::rawData(), setAnimation(), setOgrePosition(), SILOG, and updateScale().
Referenced by Sirikata::Graphics::PriorityDownloadPlanner::finishLoadAsset().
std::string Sirikata::Graphics::Entity::ogreMeshName | ( | const String & | name | ) | [static] |
References name().
Referenced by ogreMovableName().
std::string Sirikata::Graphics::Entity::ogreMovableName | ( | ) | const |
References ogreMeshName().
Referenced by loadBillboard(), and loadMesh().
void Sirikata::Graphics::Entity::removeFromScene | ( | bool * | mobileVal = NULL | ) |
References mSceneNode, setAnimation(), and setDynamic().
Referenced by addToScene(), ~Entity(), and Sirikata::Graphics::ProxyEntity::~ProxyEntity().
void Sirikata::Graphics::Entity::setAnimation | ( | const String & | name, |
bool * | checkVisible = NULL |
||
) |
References checkDynamic(), Sirikata::Logging::error, getOgreEntity(), isMobile(), mAnimationList, mCurrentAnimation, mInitialAnimationName, mMeshLoaded, mOgreObject, name(), setDynamic(), and SILOG.
Referenced by beginLoad(), loadMesh(), removeFromScene(), Sirikata::Graphics::OgreSystem::startAnimation(), and Sirikata::Graphics::OgreSystem::stopAnimation().
void Sirikata::Graphics::Entity::setDynamic | ( | bool | isStatic | ) | [protected] |
References Sirikata::Logging::detailed, Sirikata::Graphics::OgreRenderer::mMovingEntities, mMovingIter, mScene, and SILOG.
Referenced by beginLoad(), checkDynamic(), removeFromScene(), and setAnimation().
void Sirikata::Graphics::Entity::setIsAggregate | ( | bool | isAgg | ) | [protected] |
References mIsAggregate.
Referenced by Sirikata::Graphics::ProxyEntity::initializeToProxy(), and Sirikata::Graphics::ProxyEntity::iOnSetIsAggregate().
void Sirikata::Graphics::Entity::setOgreOrientation | ( | const Quaternion & | orient | ) |
References mSceneNode, and Sirikata::Graphics::toOgre().
Referenced by Sirikata::Graphics::ProxyEntity::extrapolateLocation(), and Sirikata::Graphics::ProxyEntity::iUpdateLocation().
void Sirikata::Graphics::Entity::setOgrePosition | ( | const Vector3d & | pos | ) |
References getScene(), mAggregateOffset, mSceneNode, and Sirikata::Graphics::toOgre().
Referenced by Sirikata::Graphics::ProxyEntity::extrapolateLocation(), Sirikata::Graphics::ProxyEntity::iUpdateLocation(), and loadMesh().
void Sirikata::Graphics::Entity::setSelected | ( | bool | selected | ) |
References Sirikata::Logging::detailed, getOgrePosition(), getRadius(), mMeshName, mSceneNode, and SILOG.
void Sirikata::Graphics::Entity::setVisible | ( | bool | vis | ) |
References mVisible, and updateVisibility().
Referenced by Sirikata::Graphics::OgreSystem::visible().
Reimplemented in Sirikata::Graphics::ProxyEntity.
References checkDynamic(), and mCurrentAnimation.
void Sirikata::Graphics::Entity::unbindTexture | ( | const std::string & | textureName | ) |
References fixTextures(), and mTextureBindings.
void Sirikata::Graphics::Entity::unload | ( | ) |
References getOgreBillboard(), getOgreEntity(), unloadBillboard(), and unloadMesh().
Referenced by beginLoad(), Entity(), and Sirikata::Graphics::PriorityDownloadPlanner::unrequestAssetForObject().
void Sirikata::Graphics::Entity::unloadBillboard | ( | ) | [protected] |
References getOgreBillboard(), getScene(), Sirikata::Graphics::OgreRenderer::getSceneManager(), init(), mOgreObject, and mReplacedMaterials.
Referenced by unload().
void Sirikata::Graphics::Entity::unloadMesh | ( | ) | [protected] |
References getOgreEntity(), getScene(), Sirikata::Graphics::OgreRenderer::getSceneManager(), init(), mMeshLoaded, mOgreObject, and mReplacedMaterials.
Referenced by unload().
void Sirikata::Graphics::Entity::updateScale | ( | float | scale | ) | [protected] |
References mOgreObject, and mSceneNode.
Referenced by init(), Sirikata::Graphics::ProxyEntity::iOnSetScale(), Sirikata::Graphics::ProxyEntity::iUpdateLocation(), and loadMesh().
void Sirikata::Graphics::Entity::updateVisibility | ( | ) | [protected] |
References mSceneNode, and mVisible.
Referenced by init(), and setVisible().
Vector3d Sirikata::Graphics::Entity::mAggregateOffset [protected] |
Referenced by loadMesh(), and setOgrePosition().
float Sirikata::Graphics::Entity::mAggregateRadius [protected] |
Referenced by getRadius(), and loadMesh().
std::set<String> Sirikata::Graphics::Entity::mAnimationList [protected] |
Referenced by beginLoad(), getAnimationList(), loadMesh(), and setAnimation().
Ogre::AnimationState* Sirikata::Graphics::Entity::mCurrentAnimation [protected] |
Referenced by beginLoad(), isDynamic(), setAnimation(), and tick().
String Sirikata::Graphics::Entity::mInitialAnimationName [protected] |
Referenced by loadMesh(), and setAnimation().
bool Sirikata::Graphics::Entity::mIsAggregate [protected] |
Referenced by loadMesh(), and setIsAggregate().
LightList Sirikata::Graphics::Entity::mLights [protected] |
bool Sirikata::Graphics::Entity::mMeshLoaded [protected] |
Referenced by loadEmpty(), loadMesh(), setAnimation(), and unloadMesh().
String Sirikata::Graphics::Entity::mMeshName [protected] |
Referenced by loadMesh(), and setSelected().
std::list<Entity*>::iterator Sirikata::Graphics::Entity::mMovingIter [protected] |
Referenced by setDynamic(), and ~Entity().
String Sirikata::Graphics::Entity::mName [protected] |
Ogre::MovableObject* Sirikata::Graphics::Entity::mOgreObject [protected] |
Referenced by getOgreBillboard(), getOgreEntity(), init(), setAnimation(), unloadBillboard(), unloadMesh(), and updateScale().
Referenced by fixTextures(), unloadBillboard(), and unloadMesh().
OgreRenderer* const Sirikata::Graphics::Entity::mScene [protected] |
Referenced by addToScene(), Sirikata::Graphics::ProxyEntity::destroyed(), getOgrePosition(), Sirikata::Graphics::ProxyEntity::handleDestroyTimeout(), Sirikata::Graphics::ProxyEntity::invalidated(), Sirikata::Graphics::ProxyEntity::onSetIsAggregate(), Sirikata::Graphics::ProxyEntity::onSetMesh(), Sirikata::Graphics::ProxyEntity::onSetScale(), Sirikata::Graphics::ProxyEntity::ProxyEntity(), setDynamic(), Sirikata::Graphics::ProxyEntity::updateLocation(), Sirikata::Graphics::ProxyEntity::validated(), and ~Entity().
Ogre::SceneNode* Sirikata::Graphics::Entity::mSceneNode [protected] |
Referenced by bindTexture(), fixTextures(), and unbindTexture().
bool Sirikata::Graphics::Entity::mVisible [protected] |
Referenced by setVisible(), and updateVisibility().