svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r22701:22704
[blender.git] / source / gameengine / Converter / BL_SkinMeshObject.h
index c21fb64204bb2720dc0bb983f5daabf8a011b814..838c6c3cb9506aa3b22fc5597425352fe9583835 100644 (file)
 #ifdef WIN32
 #pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning
 #endif //WIN32
 #ifdef WIN32
 #pragma warning (disable:4786) // get rid of stupid stl-visual compiler debug warning
 #endif //WIN32
-#include "MEM_guardedalloc.h"
+
 #include "RAS_MeshObject.h"
 #include "RAS_Deformer.h"
 #include "RAS_IPolygonMaterial.h"
 
 #include "BL_MeshDeformer.h"
 
 #include "RAS_MeshObject.h"
 #include "RAS_Deformer.h"
 #include "RAS_IPolygonMaterial.h"
 
 #include "BL_MeshDeformer.h"
 
-#include "DNA_mesh_types.h"
-#include "DNA_key_types.h"
-#include "DNA_meshdata_types.h"
-
 class BL_SkinMeshObject : public RAS_MeshObject
 {
 class BL_SkinMeshObject : public RAS_MeshObject
 {
-
-//     enum    {       BUCKET_MAX_INDICES = 16384};//2048};//8192};
-//     enum    {       BUCKET_MAX_TRIANGLES = 4096};
-
 protected:
        vector<int>                              m_cacheWeightIndex;
 
 public:
 protected:
        vector<int>                              m_cacheWeightIndex;
 
 public:
-       void Bucketize(double* oglmatrix,void* clientobj,bool useObjectColor,const MT_Vector4& rgbavec);
-//     void Bucketize(double* oglmatrix,void* clientobj,bool useObjectColor,const MT_Vector4& rgbavec,class RAS_BucketManager* bucketmgr);
+       BL_SkinMeshObject(Mesh* mesh);
+       ~BL_SkinMeshObject();
 
 
-       BL_SkinMeshObject(Mesh* mesh, int lightlayer) : RAS_MeshObject (mesh, lightlayer)
-       { 
-               m_class = 1;
-               if (m_mesh && m_mesh->key)
-               {
-                       KeyBlock *kb;
-                       int count=0;
-                       // initialize weight cache for shape objects
-                       // count how many keys in this mesh
-                       for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next)
-                               count++;
-                       m_cacheWeightIndex.resize(count,-1);
-               }
-       };
-
-       virtual ~BL_SkinMeshObject()
-       {
-               if (m_mesh && m_mesh->key) 
-               {
-                       KeyBlock *kb;
-                       // remove the weight cache to avoid memory leak 
-                       for(kb= (KeyBlock*)m_mesh->key->block.first; kb; kb= (KeyBlock*)kb->next) {
-                               if(kb->weights) 
-                                       MEM_freeN(kb->weights);
-                               kb->weights= NULL;
-                       }
-               }
-       };
+       void UpdateBuckets(void* clientobj, double* oglmatrix,
+               bool useObjectColor, const MT_Vector4& rgbavec, bool visible, bool culled);
        
        // for shape keys, 
        void CheckWeightCache(struct Object* obj);
 
        
        // for shape keys, 
        void CheckWeightCache(struct Object* obj);
 
+
+#ifdef WITH_CXX_GUARDEDALLOC
+public:
+       void *operator new( unsigned int num_bytes) { return MEM_mallocN(num_bytes, "GE:BL_SkinMeshObject"); }
+       void operator delete( void *mem ) { MEM_freeN(mem); }
+#endif
 };
 
 #endif
 };
 
 #endif