fixed pointer problems and guard in material files

This commit is contained in:
Thomas Fischer 2013-06-30 17:47:43 +02:00
parent 95ef5ec226
commit 688e54cb43
3 changed files with 5 additions and 5 deletions

View file

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

View file

@ -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++ )

View file

@ -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);
}