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:
authorBenoit Bolsee <benoit.bolsee@online.be>2009-04-29 14:06:38 +0400
committerBenoit Bolsee <benoit.bolsee@online.be>2009-04-29 14:06:38 +0400
commitf004c36e41023b8a4ffa386226589b19c92eb971 (patch)
tree17921d31c7d6587c2c03861ec4f9edaa21b1707b /source/gameengine/Ketsji/KX_BlenderMaterial.cpp
parent2d78dcfb610381a5056eed5f59dd57aa50e444c3 (diff)
BGE: speed up mesh conversion by avoiding allocation/deallocation of material object on each face. The speed up is minor on optimized builds but considerable on less optimized builds, good for debugging large scene.
Diffstat (limited to 'source/gameengine/Ketsji/KX_BlenderMaterial.cpp')
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.cpp50
1 files changed, 30 insertions, 20 deletions
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
index 9f11ea11819..70907db608a 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
@@ -43,16 +43,30 @@ BL_BlenderShader *KX_BlenderMaterial::mLastBlenderShader = NULL;
//static PyObject *gTextureDict = 0;
KX_BlenderMaterial::KX_BlenderMaterial(
- KX_Scene *scene,
- BL_Material *data,
- bool skin,
- int lightlayer,
PyTypeObject *T
)
: PyObjectPlus(T),
- RAS_IPolyMaterial(
- STR_String( data->texname[0] ),
- STR_String( data->matname ), // needed for physics!
+ RAS_IPolyMaterial(),
+ mMaterial(NULL),
+ mShader(0),
+ mBlenderShader(0),
+ mScene(NULL),
+ mUserDefBlend(0),
+ mModified(0),
+ mConstructed(false),
+ mPass(0)
+{
+}
+
+void KX_BlenderMaterial::Initialize(
+ KX_Scene *scene,
+ BL_Material *data,
+ bool skin,
+ int lightlayer)
+{
+ RAS_IPolyMaterial::Initialize(
+ data->texname[0],
+ data->matname,
data->materialindex,
data->tile,
data->tilexrep[0],
@@ -62,17 +76,15 @@ KX_BlenderMaterial::KX_BlenderMaterial(
((data->ras_mode &ALPHA)!=0),
((data->ras_mode &ZSORT)!=0),
lightlayer
- ),
- mMaterial(data),
- mShader(0),
- mBlenderShader(0),
- mScene(scene),
- mUserDefBlend(0),
- mModified(0),
- mConstructed(false),
- mPass(0)
-
-{
+ );
+ mMaterial = data;
+ mShader = 0;
+ mBlenderShader = 0;
+ mScene = scene;
+ mUserDefBlend = 0;
+ mModified = 0;
+ mConstructed = false;
+ mPass = 0;
// --------------------------------
// RAS_IPolyMaterial variables...
m_flag |= RAS_BLENDERMAT;
@@ -96,7 +108,6 @@ KX_BlenderMaterial::KX_BlenderMaterial(
);
}
m_multimode += mMaterial->IdMode+ (mMaterial->ras_mode & ~(COLLIDER|USE_LIGHT));
-
}
KX_BlenderMaterial::~KX_BlenderMaterial()
@@ -107,7 +118,6 @@ KX_BlenderMaterial::~KX_BlenderMaterial()
OnExit();
}
-
MTFace* KX_BlenderMaterial::GetMTFace(void) const
{
// fonts on polys