MCPcopy Create free account
hub / github.com/OpenDungeons/OpenDungeons / rrCreateCreature

Method rrCreateCreature

source/render/RenderManager.cpp:787–812  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

785}
786
787void RenderManager::rrCreateCreature(Creature* curCreature)
788{
789 const std::string& meshName = curCreature->getDefinition()->getMeshName();
790
791 // Load the mesh for the creature
792 std::string creatureName = curCreature->getOgreNamePrefix() + curCreature->getName();
793 Ogre::Entity* ent = mSceneManager->createEntity(creatureName, meshName);
794 Ogre::MeshPtr meshPtr = ent->getMesh();
795 unsigned short src, dest;
796 if (!meshPtr->suggestTangentVectorBuildParams(Ogre::VES_TANGENT, src, dest))
797 {
798 meshPtr->buildTangentVectors(Ogre::VES_TANGENT, src, dest);
799 }
800
801 Ogre::SceneNode* node = mCreatureSceneNode->createChildSceneNode(creatureName + "_node");
802 curCreature->setEntityNode(node);
803 node->setPosition(curCreature->getPosition());
804 node->attachObject(ent);
805 curCreature->setParentSceneNode(node->getParentSceneNode());
806
807 Ogre::Camera* cam = mViewport->getCamera();
808 CreatureOverlayStatus* creatureOverlay = new CreatureOverlayStatus(curCreature, ent, cam);
809 curCreature->setOverlayStatus(creatureOverlay);
810
811 creatureOverlay->displayHealthOverlay(mCreatureTextOverlayDisplayed ? -1.0 : 0.0);
812}
813
814void RenderManager::rrDestroyCreature(Creature* curCreature)
815{

Callers 1

createMeshLocalMethod · 0.80

Calls 9

getDefinitionMethod · 0.80
setEntityNodeMethod · 0.80
setParentSceneNodeMethod · 0.80
getParentSceneNodeMethod · 0.80
getCameraMethod · 0.80
setOverlayStatusMethod · 0.80
displayHealthOverlayMethod · 0.80
getOgreNamePrefixMethod · 0.45
setPositionMethod · 0.45

Tested by

no test coverage detected