49 for (
int mi=0; mi<src.VertexMaterials.
Count(); mi++) {
51 vmat = src.VertexMaterials[mi]->Clone();
52 VertexMaterials.
Add(vmat);
55 for (
int ti=0; ti<src.Textures.
Count(); ti++) {
78 int index = Textures.Count();
85 for (
int i=0; i<Textures.Count(); i++) {
86 if (stricmp(name,Textures[i]->Get_Texture_Name()) == 0) {
97 Textures[index]->Add_Ref();
98 return Textures[index];
118void MaterialInfoClass::Free(
void)
122 for (i=0; i<VertexMaterials.
Count(); i++) {
125 VertexMaterials.Delete_All();
127 for (i=0; i<Textures.Count(); i++) {
130 Textures.Delete_All();
137 VertexMaterialCount(0),
138 VertexMaterialRemaps(
NULL),
156 VertexMaterialRemaps =
W3DNEWARRAY VmatRemapStruct[VertexMaterialCount];
165 TextureRemaps =
W3DNEWARRAY TextureRemapStruct[TextureCount];
175 SrcMatInfo->Release_Ref();
176 DestMatInfo->Release_Ref();
179 delete[] TextureRemaps;
181 if (VertexMaterialRemaps) {
182 delete[] VertexMaterialRemaps;
188 if (src ==
NULL)
return src;
189 if (src == LastSrcTex)
return LastDestTex;
190 for (
int i=0; i<TextureCount; i++) {
191 if (TextureRemaps[i].Src == src) {
193 LastDestTex = TextureRemaps[i].Dest;
194 return TextureRemaps[i].Dest;
203 if (src ==
NULL)
return src;
204 if (src == LastSrcVmat)
return LastDestVmat;
205 for (
int i=0; i<VertexMaterialCount; i++) {
206 if (VertexMaterialRemaps[i].Src == src) {
208 LastDestVmat = VertexMaterialRemaps[i].Dest;
209 return VertexMaterialRemaps[i].Dest;
221 if (SrcMatInfo->Vertex_Material_Count() >= 1) {
223 for (
int pass = 0;pass < srcmeshmatdesc->
Get_Pass_Count(); pass++) {
227 for (
int vert_index = 0; vert_index < srcmeshmatdesc->
Get_Vertex_Count(); vert_index++) {
244 if (SrcMatInfo->Texture_Count() >= 1) {
246 for (
int pass = 0;pass < srcmeshmatdesc->
Get_Pass_Count(); pass++) {
252 for (
int poly_index = 0; poly_index < srcmeshmatdesc->
Get_Polygon_Count(); poly_index++) {
287 for (
int vert_index = 0;vert_index < mesh->
Get_Vertex_Count(); vert_index++) {
332 for (
int ti=0; ti<
Textures.Count(); ti++) {
345 if (tex ==
NULL)
return;
363 if (vmat ==
NULL)
return;
403 for (
int si=0; si<
Shaders.Count(); si++) {
413 for (
int ti=0; ti<
Textures.Count(); ti++) {
bool Add(T const &object)
int Find_Vertex_Material(VertexMaterialClass *mat)
VertexMaterialClass * LastMaterial
DynamicVectorClass< TextureClass * > Textures
void Add_Shader(ShaderClass shader)
int Get_Texture_Count(void)
void Collect_Materials(MeshModelClass *mesh)
int Get_Vertex_Material_Count(void)
TextureClass * Peek_Texture(int i)
int Get_Shader_Count(void)
TextureClass * LastTexture
VertexMaterialClass * Peek_Vertex_Material(int i)
MaterialCollectorClass(void)
int Find_Shader(const ShaderClass &shader)
void Add_Texture(TextureClass *tex)
DynamicVectorClass< VertexMaterialClass * > VertexMaterials
void Add_Vertex_Material(VertexMaterialClass *vmat)
DynamicVectorClass< ShaderClass > Shaders
ShaderClass Peek_Shader(int i)
int Find_Texture(TextureClass *tex)
~MaterialCollectorClass(void)
VertexMaterialClass * Peek_Vertex_Material(int index)
int Get_Texture_Index(const char *name)
int Vertex_Material_Count(void) const
TextureClass * Peek_Texture(int index)
int Texture_Count(void) const
TextureClass * Get_Texture(int index)
int Add_Texture(TextureClass *tex)
MaterialInfoClass * Clone(void) const
~MaterialRemapperClass(void)
MaterialRemapperClass(MaterialInfoClass *src, MaterialInfoClass *dest)
VertexMaterialClass * Remap_Vertex_Material(VertexMaterialClass *src)
void Remap_Mesh(const MeshMatDescClass *srcmeshmatdesc, MeshMatDescClass *destmeshmatdesc)
TextureClass * Remap_Texture(TextureClass *src)
int Get_Vertex_Count(void) const
int Get_Polygon_Count(void) const
int Get_Pass_Count(void) const
VertexMaterialClass * Peek_Material(int vidx, int pass=0) const
void Set_Texture(int pidx, TextureClass *tex, int pass=0, int stage=0)
void Set_Single_Texture(TextureClass *tex, int pass=0, int stage=0)
int Get_Vertex_Count(void) const
VertexMaterialClass * Peek_Single_Material(int pass=0) const
int Get_Polygon_Count(void) const
bool Has_Texture_Array(int pass, int stage) const
void Set_Material(int vidx, VertexMaterialClass *vmat, int pass=0)
void Set_Single_Material(VertexMaterialClass *vmat, int pass=0)
TextureClass * Peek_Single_Texture(int pass=0, int stage=0) const
TextureClass * Peek_Texture(int pidx, int pass=0, int stage=0) const
bool Has_Material_Array(int pass) const
TextureClass * Peek_Texture(int pidx, int pass=0, int stage=0) const
bool Has_Shader_Array(int pass) const
VertexMaterialClass * Peek_Material(int vidx, int pass=0) const
bool Has_Material_Array(int pass) const
int Get_Pass_Count(void) const
VertexMaterialClass * Get_Single_Material(int pass=0) const
bool Has_Texture_Array(int pass, int stage) const
ShaderClass Get_Shader(int pidx, int pass=0) const
ShaderClass Get_Single_Shader(int pass=0) const
TextureClass * Peek_Single_Texture(int pass=0, int stage=0) const
#define REF_PTR_RELEASE(x)