optionally use guarded alloc for tiles compositor, also replace allocation functions...
[blender.git] / source / gameengine / Ketsji / BL_Material.h
index dcb66ea25790c35a0af4d8c6059529f59740a770..b67bd95f878b6af5f229f5f86b4f8e1fee3fdc4f 100644 (file)
@@ -1,8 +1,18 @@
+
+/** \file BL_Material.h
+ *  \ingroup ketsji
+ */
+
 #ifndef __BL_MATERIAL_H__
 #define __BL_MATERIAL_H__
 
 #include "STR_String.h"
 #include "MT_Point2.h"
+#include "DNA_meshdata_types.h"
+
+#ifdef WITH_CXX_GUARDEDALLOC
+#include "MEM_guardedalloc.h"
+#endif
 
 // --
 struct MTex;
@@ -15,12 +25,12 @@ struct EnvMap;
 // --
 
 /** max units
      this will default to users available units
      to build with more available, just increment this value
      although the more you add the slower the search time will be.
      we will go for three, which should be enough
-*/
-#define MAXTEX                 3       //match in RAS_TexVert & RAS_OpenGLRasterizer
* this will default to users available units
* to build with more available, just increment this value
* although the more you add the slower the search time will be.
* we will go for eight, which should be enough
+ */
+#define MAXTEX                 8       //match in RAS_TexVert & RAS_OpenGLRasterizer
 
 // different mapping modes
 class BL_Mapping
@@ -44,6 +54,7 @@ private:
 public:
        // -----------------------------------
        BL_Material();
+       void Initialize();
 
        int IdMode;
        unsigned int ras_mode;
@@ -54,10 +65,11 @@ public:
        int tile,tilexrep[MAXTEX],tileyrep[MAXTEX];
        STR_String matname;
        STR_String mtexname[MAXTEX];
+       int materialindex;
 
        float matcolor[4];
        float speccolor[3];
-       short transp, pad;
+       short alphablend, pad;
 
        float hard, spec_f;
        float alpha, emit, color_blend[MAXTEX], ref;
@@ -65,17 +77,14 @@ public:
 
        int blend_mode[MAXTEX];
 
-       int      mode;
        int num_enabled;
        
-       int material_index;
-
        BL_Mapping      mapping[MAXTEX];
        STR_String      imageId[MAXTEX];
 
 
        Material*                       material;
-       MTFace*                         tface;
+       MTFace                          tface; /* copy of the derived meshes tface */
        Image*                          img[MAXTEX];
        EnvMap*                         cubemap[MAXTEX];
 
@@ -98,6 +107,11 @@ public:
        void SetSharedMaterial(bool v);
        bool IsShared();
        void SetUsers(int num);
+       
+       
+#ifdef WITH_CXX_GUARDEDALLOC
+       MEM_CXX_CLASS_ALLOC_FUNCS("GE:BL_Material")
+#endif
 };
 
 // BL_Material::IdMode
@@ -128,20 +142,23 @@ enum BL_flag
        USEALPHA=4,             // use actual alpha channel
        TEXALPHA=8,             // use alpha combiner functions
        TEXNEG=16,              // negate blending
-       HASIPO=32,
+       /*HASIPO=32,*/  // unused, commeted for now.
        USENEGALPHA=64
 };
 
 // BL_Material::ras_mode
 enum BL_ras_mode
 {
-       POLY_VIS=1,
+       // POLY_VIS=1,
        COLLIDER=2,
        ZSORT=4,
        ALPHA=8,
-       TRIANGLE=16,
+       // TRIANGLE=16,
        USE_LIGHT=32,
-       WIRE=64
+       WIRE=64,
+       CAST_SHADOW=128,
+       TEX=256,
+       TWOSIDED=512
 };
 
 // -------------------------------------