#include "Ogre.h" #include "OgreEffectWrapper.h" #include "managedogrerendertexturepass.h" #include "SEMFinalRenderingRun.h" SEMFinalRenderingRun::SEMFinalRenderingRun(Entity* entity,RenderTarget* backBuffer,const String& textureName) { Root* mRoot=Root::getSingletonPtr(); OgreAssert(mRoot!=NULL,"Root is not yet generated, rendering will fail."); this->entity=entity; this->backBuffer=backBuffer; semFinalRenderingRunPass=new SEMFinalRenderingRunPass(mRoot); semFinalRenderingRunPass->addRenderTarget(backBuffer); semFinalRenderingRunPass->changeTexture(textureName,0); } void SEMFinalRenderingRun::setEnvMapPostition(Vector3 envMapPosition){ semFinalRenderingRunPass->setEnvMapPostition(envMapPostion); } void SEMFinalRenderingRun::setSpecularColor(float specularColor){ semFinalRenderingRunPass->setSpecularColor(specularColor); } void SEMFinalRenderingRun::setShininess(float shininess){ semFinalRenderingRunPass->setShininess(shininess); } SEMFinalRenderingRun::~SEMFinalRenderingRun(void) { } void SEMFinalRenderingRun::update(void){ if(entity->isVisible()){ SceneManager::EntityIterator entityIterator=mSceneMgr->getEntityIterator(); while(entityIterator.hasMoreElements()){ Entity* entityTemp=entityIterator.getNext(); entityVisibilityList.push_back(entityTemp->isVisible()); entityTemp->setVisible(false); } entity->setVisible(true); semFinalRenderingRunPass->update(); SceneManager::EntityIterator entityIterator=mSceneMgr->getEntityIterator(); int elementNumber=0; while(entityIterator.hasMoreElements()){ Entity* entity=entityIterator.getNext(); entity->setVisible(entityVisibilityList.at(elementNumber)); elementNumber++; } entityVisibilityList.clear(); } }