瀏覽代碼

Merge pull request #423 from tdev/material-ptrs

fixed pointer problems and guard in material files
SilentMike 12 年之前
父節點
當前提交
824944d7b5

+ 1 - 1
Engine/source/materials/matInstance.cpp

@@ -242,7 +242,7 @@ void MatInstance::construct()
 {
    mUserObject = NULL;
    mCurPass = -1;
-   mProcessedMaterial = false;
+   mProcessedMaterial = NULL;
    mVertexFormat = NULL;
    mMaxStages = 1;
    mActiveParameters = NULL;

+ 3 - 3
Engine/source/materials/processedMaterial.cpp

@@ -217,13 +217,13 @@ void ProcessedMaterial::_initPassStateBlock( RenderPassData *rpd, GFXStateBlockD
       _setBlendState( rpd->mBlendOp, result );
    }
 
-   if (mMaterial->isDoubleSided())
+   if (mMaterial && mMaterial->isDoubleSided())
    {
       result.cullDefined = true;
       result.cullMode = GFXCullNone;         
    }
 
-   if(mMaterial->mAlphaTest)
+   if(mMaterial && mMaterial->mAlphaTest)
    {
       result.alphaDefined = true;
       result.alphaTestEnable = mMaterial->mAlphaTest;
@@ -235,7 +235,7 @@ void ProcessedMaterial::_initPassStateBlock( RenderPassData *rpd, GFXStateBlockD
    NamedTexTarget *texTarget;
 
    U32 maxAnisotropy = 1;
-   if ( mMaterial->mUseAnisotropic[ rpd->mStageNum ] )
+   if (mMaterial &&  mMaterial->mUseAnisotropic[ rpd->mStageNum ] )
       maxAnisotropy = MATMGR->getDefaultAnisotropy();
 
    for( U32 i=0; i < rpd->mNumTex; i++ )

+ 1 - 1
Engine/source/materials/processedShaderMaterial.cpp

@@ -1256,7 +1256,7 @@ MaterialParameterHandle* ProcessedShaderMaterial::getMaterialParameterHandle(con
 /// This is here to deal with the differences between ProcessedCustomMaterials and ProcessedShaderMaterials.
 GFXShaderConstBuffer* ProcessedShaderMaterial::_getShaderConstBuffer( const U32 pass )
 {   
-   if (pass < mPasses.size())
+   if (mCurrentParams && pass < mPasses.size())
    {
       return static_cast<ShaderMaterialParameters*>(mCurrentParams)->getBuffer(pass);
    }