diff options
author | Benoit Bolsee <benoit.bolsee@online.be> | 2009-04-29 14:06:38 +0400 |
---|---|---|
committer | Benoit Bolsee <benoit.bolsee@online.be> | 2009-04-29 14:06:38 +0400 |
commit | f004c36e41023b8a4ffa386226589b19c92eb971 (patch) | |
tree | 17921d31c7d6587c2c03861ec4f9edaa21b1707b /source/gameengine/Ketsji/KX_BlenderMaterial.cpp | |
parent | 2d78dcfb610381a5056eed5f59dd57aa50e444c3 (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.cpp | 50 |
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 |