Ignore:
Timestamp:
05/28/07 16:30:37 (17 years ago)
Author:
szirmay
Message:
 
File:
1 edited

Legend:

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

    r2372 r2397  
    1919                                                                                                SceneBlendFactor passBlendingDEST, 
    2020                                                                                                bool createNewPasses, 
    21                                                                                                 int startTextureUnitID,                                                  
     21                                                                                                int startTextureUnitID, 
     22                                                                                                bool nearestLightsFromCamera, 
    2223                                                                                                Pass* pass, 
    2324                                                                                                OgreRenderable* parentRenderable, 
     
    4243        this->createNewPasses = createNewPasses; 
    4344        this->startTextureUnitID = startTextureUnitID; 
     45 
     46        this->nearestLightsFromCamera = nearestLightsFromCamera; 
    4447                                                         
    4548        if(createNewPasses) 
     
    8689{ 
    8790        LightList lights; 
     91        Vector3 center = OgreIlluminationManager::getSingleton().getMainCamera()->getWorldPosition(); 
     92        if(!nearestLightsFromCamera) 
     93                center = ((OgreSharedRuns*) sharedRuns)->getRootPosition(); 
    8894        Root::getSingleton()._getCurrentSceneManager()->_populateLightList( 
    89                                                 ((OgreSharedRuns*) sharedRuns)->getRootPosition(), 
     95                                                        center, 
    9096                                                        100000.0, 
    9197                                                        lights); 
     
    336342                f->startTextureUnitID =  StringConverter::parseInt(params); 
    337343        } 
     344        void parseNearestFromCamera(String& params, RenderTechniqueFactory* factory) 
     345        { 
     346                OgreDepthShadowReceiverRenderTechniqueFactory* f = (OgreDepthShadowReceiverRenderTechniqueFactory*) factory; 
     347                f->nearestLightsFromCamera = StringConverter::parseBool(params); 
     348        } 
    338349} 
    339350 
     
    358369        this->attributeParsers.insert(AttribParserList::value_type("new_passes", (ILLUM_ATTRIBUTE_PARSER) parseCreateNewPasses)); 
    359370        this->attributeParsers.insert(AttribParserList::value_type("start_tex_id", (ILLUM_ATTRIBUTE_PARSER) parseStartTexID));   
     371        this->attributeParsers.insert(AttribParserList::value_type("nearest_from_camera", (ILLUM_ATTRIBUTE_PARSER) parseNearestFromCamera));     
    360372} 
    361373 
     
    382394        createNewPasses = true; 
    383395        startTextureUnitID = 0; 
     396        nearestLightsFromCamera = true; 
    384397         
    385398        parseParams(params); 
     
    401414                                                                                                createNewPasses, 
    402415                                                                                                startTextureUnitID, 
     416                                                                                                nearestLightsFromCamera, 
    403417                                                                                                pass, 
    404418                                                                                                parentRenderable, 
     
    408422} 
    409423 
     424bool OgreDepthShadowReceiverRenderTechniqueFactory::needMaterialCopy(IllumTechniqueParams* params) 
     425{ 
     426        nearestLightsFromCamera = true; 
     427        parseParams(params); 
     428        if(nearestLightsFromCamera) 
     429                return false; 
     430        else 
     431                 return true; 
     432} 
     433 
Note: See TracChangeset for help on using the changeset viewer.