SimpleEntityVisualization::SimpleEntityVisualization(EmberEntity& entity, Ogre::SceneNode* sceneNode) : mEntity(entity), mSceneNode(sceneNode), mErisEntityBoundingBox(OGRE_NEW Ogre::OOBBWireBoundingBox()), mBboxConnection(entity.observe("bbox", sigc::mem_fun(*this, &SimpleEntityVisualization::entity_BboxChanged))), mScaleConnection(entity.observe("scale", sigc::mem_fun(*this, &SimpleEntityVisualization::entity_BboxChanged))) { mVelocityArrowEntity = sceneNode->getCreator()->createEntity("common/primitives/model/arrow.mesh"); mVelocitySceneNode = sceneNode->getParentSceneNode()->createChildSceneNode(); mVelocitySceneNode->attachObject(mVelocityArrowEntity); mVelocitySceneNode->setScale(0.5, 0.5, 0.5); try { auto materialPtr = Ogre::MaterialManager::getSingleton().getByName(BboxMaterialName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); if (materialPtr) { mErisEntityBoundingBox->setMaterial(materialPtr); } } catch (const std::exception& ex) { S_LOG_FAILURE("Error when setting Ogre material for bounding box."); OGRE_DELETE mErisEntityBoundingBox; mErisEntityBoundingBox = nullptr; throw Exception("Error when setting Ogre material for bounding box."); } mSceneNode->attachObject(mErisEntityBoundingBox); mErisEntityBoundingBox->setVisible(true); updateBbox(); updatePositionAndOrientation(); mEntity.Moved.connect(sigc::mem_fun(*this, &SimpleEntityVisualization::entity_Moved)); }
SimpleEntityVisualization::SimpleEntityVisualization(EmberEntity& entity, Ogre::SceneNode* sceneNode) : mEntity(entity), mSceneNode(sceneNode), mErisEntityBoundingBox(OGRE_NEW Ogre::OOBBWireBoundingBox()), mBboxConnection(entity.observe("bbox", sigc::mem_fun(*this, &SimpleEntityVisualization::entity_BboxChanged))) { try { mErisEntityBoundingBox->setMaterial(BboxMaterialName); } catch (const std::exception& ex) { S_LOG_FAILURE("Error when setting Ogre material for bounding box."); OGRE_DELETE mErisEntityBoundingBox; mErisEntityBoundingBox = 0; throw Exception("Error when setting Ogre material for bounding box."); } mSceneNode->attachObject(mErisEntityBoundingBox); mErisEntityBoundingBox->setVisible(true); updateBbox(); updatePositionAndOrientation(); mEntity.Moved.connect(sigc::mem_fun(*this, &SimpleEntityVisualization::entity_Moved)); }