Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Stokes <mogurijin@gmail.com>2013-07-16 02:35:09 +0400
committerMitchell Stokes <mogurijin@gmail.com>2013-07-16 02:35:09 +0400
commitefc4b08094e520afd6598a13c8b586df4abcc45a (patch)
treee8e9a00380249b6a5919bcfcc158186f344277ca /source/gameengine/Converter/BL_BlenderDataConversion.cpp
parent19dee5e413453cc4a2a98c17aaf39f00e04f7619 (diff)
BGE: Fix for [#36023] "Objects of added scene are lit by lights of current scene" reported by Raf Colson (raco).
The material caching now keeps a cache per scene. Before materials from different scenes were sharing the same cache.
Diffstat (limited to 'source/gameengine/Converter/BL_BlenderDataConversion.cpp')
-rw-r--r--source/gameengine/Converter/BL_BlenderDataConversion.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index ad16c96dc70..4890db193eb 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -890,8 +890,8 @@ static bool ConvertMaterial(
static RAS_MaterialBucket *material_from_mesh(Material *ma, MFace *mface, MTFace *tface, MCol *mcol, MTF_localLayer *layers, int lightlayer, unsigned int *rgb, MT_Point2 uvs[4][RAS_TexVert::MAX_UNIT], const char *tfaceName, KX_Scene* scene, KX_BlenderSceneConverter *converter)
{
- RAS_IPolyMaterial* polymat = converter->FindCachedPolyMaterial(ma);
- BL_Material* bl_mat = converter->FindCachedBlenderMaterial(ma);
+ RAS_IPolyMaterial* polymat = converter->FindCachedPolyMaterial(scene, ma);
+ BL_Material* bl_mat = converter->FindCachedBlenderMaterial(scene, ma);
KX_BlenderMaterial* kx_blmat = NULL;
KX_PolygonMaterial* kx_polymat = NULL;
@@ -907,7 +907,7 @@ static RAS_MaterialBucket *material_from_mesh(Material *ma, MFace *mface, MTFace
converter->GetGLSLMaterials());
if (ma && (ma->mode & MA_FACETEXTURE) == 0)
- converter->CacheBlenderMaterial(ma, bl_mat);
+ converter->CacheBlenderMaterial(scene, ma, bl_mat);
}
const bool use_vcol = GetMaterialUseVColor(ma, bl_mat->glslmat);
@@ -923,7 +923,7 @@ static RAS_MaterialBucket *material_from_mesh(Material *ma, MFace *mface, MTFace
kx_blmat->Initialize(scene, bl_mat, (ma?&ma->game:NULL), lightlayer);
polymat = static_cast<RAS_IPolyMaterial*>(kx_blmat);
if (ma && (ma->mode & MA_FACETEXTURE) == 0)
- converter->CachePolyMaterial(ma, polymat);
+ converter->CachePolyMaterial(scene, ma, polymat);
}
}
else {
@@ -1052,7 +1052,7 @@ static RAS_MaterialBucket *material_from_mesh(Material *ma, MFace *mface, MTFace
polymat->m_shininess = 35.0;
}
- converter->CachePolyMaterial(ma, polymat);
+ converter->CachePolyMaterial(scene, ma, polymat);
}
}