My Project
Material.h
1 #ifndef __MATERIAL_H__
2 #define __MATERIAL_H__
3 
4 #include "utils.h"
5 #include "ModelUtils.h"
6 
7 #include <vector>
8 using namespace std;
9 namespace ParaEngine
10 {
11 struct LinearAlpha{
12  int frameNum;
13  float alphaValue; //(0.0f -> 1.0f)
14 };
15 
17  int frameNum;
18  float alphaValue; //(0.0f -> 1.0f)
19  float inTan;
20  float outTan;
21 };
22 
23 
24 struct LayerAlpha{
25  long chunkNum;
26  long LineType; //(0:don't interp;1:linear;2:hermite;3:bezier)
27  //0xFFFFFFFF
28  void* data; //LinearAlpha or NonLinearAlpha
29 public:
30  LayerAlpha()
31  {
32  data = NULL;
33  }
34  ~LayerAlpha()
35  {
36  delete [] data;
37  }
38 };
39 
40 struct Layer
41 {
42  int layerSize; // in Bytes
43  int filterMode; //(0:none;1:transparent;2:blend;3:additive)
44  int shading; //(1:unshaded;+16:two sided;+32:unfogged)
45  int textureID;
46  int unk5; //0xFFFFFFFF
47  int unk6; //(0)
48  float alpha; //(0(transparent)->1(opaque))
49  BOOL existKMTA;
50  LayerAlpha KMTA;
51 };
52 
53 class CMaterial
54 {
55 public:
56  CMaterial ();
57  ~CMaterial();
58  void Cleanup();
59  void Read(TypePointer inP,int inSize);
60  float getFrameAlpha(int frameNum,int layerNum);
61 
62  enum{
63  FILTER_NONE=0,
64  FILTER_TRANSPARENT,
65  FILTER_BLEND,
66  FILTER_ADDITIVE
67  };
68 
69  Layer* CreateLayer();
70  vector <Layer*> layers; //dynamic array
71 
72 private:
73 };
74 
76 {
77 public:
78  CMaterialMap(void):materials(NULL) {}
79  ~CMaterialMap();
80  void Cleanup();
81  void Read(TypePointer inP,int inSize);
82 
83  CMaterial* CreateMaterial();
84 
85 #define MAX_MATERIALS_BLOCK 16
86 
87  vector <CMaterial*> materials; //array
88 
89 private:
90 };
91 }
92 #endif//__MATERIAL_H__
different physics engine has different winding order.
Definition: EventBinding.h:32
Definition: Material.h:24
Definition: utils.h:13
Definition: Material.h:53
Definition: Material.h:75
Definition: Material.h:40
Definition: Material.h:11
Definition: Material.h:16