optionally use guarded alloc for tiles compositor, also replace allocation functions...
[blender.git] / source / gameengine / Ketsji / BL_Material.h
index 8be913162373ec7d73fa5c9f7e5b26721004c8ee..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,19 +54,22 @@ private:
 public:
        // -----------------------------------
        BL_Material();
+       void Initialize();
 
        int IdMode;
        unsigned int ras_mode;
+       bool glslmat;
 
        STR_String texname[MAXTEX];
        unsigned int flag[MAXTEX];
        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;
@@ -64,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];
 
@@ -82,18 +92,26 @@ public:
        MT_Point2 uv[4];
        MT_Point2 uv2[4];
 
+       STR_String uvName;
+       STR_String uv2Name;
+
        void SetConversionRGB(unsigned int *rgb);
        void GetConversionRGB(unsigned int *rgb);
 
-       void SetConversionUV(MT_Point2 *uv);
+       void SetConversionUV(const STR_String& name, MT_Point2 *uv);
        void GetConversionUV(MT_Point2 *uv);
 
-       void SetConversionUV2(MT_Point2 *uv);
+       void SetConversionUV2(const STR_String& name, MT_Point2 *uv);
        void GetConversionUV2(MT_Point2 *uv);
 
        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
@@ -124,21 +142,23 @@ enum BL_flag
        USEALPHA=4,             // use actual alpha channel
        TEXALPHA=8,             // use alpha combiner functions
        TEXNEG=16,              // negate blending
-       HASIPO=32,
-       USENEGALPHA=64,
-       ALPHA_TEST=128
+       /*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,
-       TRANSP=8,
-       TRIANGLE=16,
+       ALPHA=8,
+       // TRIANGLE=16,
        USE_LIGHT=32,
-       WIRE=64
+       WIRE=64,
+       CAST_SHADOW=128,
+       TEX=256,
+       TWOSIDED=512
 };
 
 // -------------------------------------