Ignore:
Timestamp:
05/08/07 14:37:19 (18 years ago)
Author:
szirmay
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/OgreRenderingRun.cpp

    r2333 r2355  
    1313private: 
    1414        String materialName; 
     15        String triggerName; 
    1516        std::map<Renderable*, String>* visibleObjects; 
    1617public: 
    1718     
    18         MaterialSetVisitor(String& materialName, std::map<Renderable*, String>* visibleObjects) 
     19        MaterialSetVisitor(String& materialName, std::map<Renderable*, String>* visibleObjects, String trigger = "") 
    1920        { 
    2021                this->materialName = materialName; 
     
    2930                { 
    3031                        (*visibleObjects)[rend] = rend->getMaterial().getPointer()->getName(); 
    31                         rend->setMaterialName(materialName); 
     32                        String materialToSet = materialName; 
     33                        if(triggerName != "")//we have a trigger here 
     34                        { 
     35                                String triggeredMaterial =  
     36                                        ((OgreTechniqueGroup*)rend->getRenderTechniqueGroup()) 
     37                                                ->getMaterialNameForTrigger(triggerName); 
     38                                if(triggeredMaterial != "")//a trigger is associated 
     39                                        materialToSet = triggeredMaterial; 
     40                        }                                
     41                        rend->setMaterialName(materialToSet); 
    3242                } 
    3343        } 
     
    4050                { 
    4151                        (*visibleObjects)[rend] = rend->getMaterial().getPointer()->getName(); 
    42                         rend->setMaterialName(materialName); 
     52                        String materialToSet = materialName; 
     53                        if(triggerName != "")//we have a trigger here 
     54                        { 
     55                                String triggeredMaterial =  
     56                                        ((OgreTechniqueGroup*)rend->getRenderTechniqueGroup()) 
     57                                                ->getMaterialNameForTrigger(triggerName); 
     58                                if(triggeredMaterial != "")//a trigger is associated 
     59                                        materialToSet = triggeredMaterial; 
     60                        }                                
     61                        rend->setMaterialName(materialToSet); 
    4362                } 
    4463        } 
     
    127146} 
    128147 
    129 void OgreRenderingRun::setMaterialForRenderables(String& materialName, RenderQueue* rq,  bool solidsonly) 
     148void OgreRenderingRun::setMaterialForRenderables(String& materialName, RenderQueue* rq,  bool solidsonly, String triggerName) 
    130149{ 
    131150        SceneManager* sm = Ogre::Root::getSingleton()._getCurrentSceneManager(); 
     
    144163                        const QueuedRenderableCollection& solids = pPriorityGrp->getSolidsBasic(); 
    145164                        const QueuedRenderableCollection& transparents = pPriorityGrp->getTransparents(); 
    146                         MaterialSetVisitor visitor(materialName, &visibleObjects);       
     165                        MaterialSetVisitor visitor(materialName, &visibleObjects, triggerName);  
    147166                        solids.acceptVisitor(&visitor, QueuedRenderableCollection::OM_PASS_GROUP); 
    148167                        if(!solidsonly) 
     
    166185} 
    167186 
    168 void OgreRenderingRun::setMaterialForVisibles(String& materialName, Camera* cam, bool shadowcastersonly, bool solidsonly) 
     187void OgreRenderingRun::setMaterialForVisibles(String& materialName, Camera* cam, bool shadowcastersonly, bool solidsonly, String triggerName) 
    169188{ 
    170189        SceneManager* sm = Ogre::Root::getSingleton()._getCurrentSceneManager(); 
     
    183202        sm->_findVisibleObjects(cam, shadowcastersonly); 
    184203         
    185         setMaterialForRenderables(materialName, sm->getRenderQueue(), solidsonly); 
     204        setMaterialForRenderables(materialName, sm->getRenderQueue(), solidsonly, triggerName); 
    186205} 
    187206 
Note: See TracChangeset for help on using the changeset viewer.