void ProcessTexMapChunk(ThreeDSChunk chunk, Material m, BinaryReader reader) { while (chunk.BytesRead < chunk.Length) { var child = new ThreeDSChunk(reader); switch ((Groups)child.ID) { case Groups.C_MATMAPFILE: string name = ProcessString(child, reader); Console.WriteLine(" Texture File: {0}", name); m.Textures.Add(name); break; default: SkipChunk(child, reader); break; } chunk.BytesRead += child.BytesRead; } }
void ProcessMaterialChunk(ThreeDSChunk chunk, BinaryReader reader) { string name = string.Empty; var m = new Material(); while (chunk.BytesRead < chunk.Length) { var child = new ThreeDSChunk(reader); switch (child.ID) { case ChunckIDs.EDIT_MATNAME01: name = ProcessString(child, reader); m.MaterialName = name.ToLowerInvariant(); Console.WriteLine("Material: {0}", name); break; case ChunckIDs.EDIT_MATAMBIENT: m.Ambient = ProcessColorChunk(child, reader); break; case ChunckIDs.EDIT_MATDIFFUSE: m.Diffuse = ProcessColorChunk(child, reader); break; case ChunckIDs.EDIT_MATSPECULAR: m.Specular = ProcessColorChunk(child, reader); break; case ChunckIDs.EDIT_MATSHININESS: m.Shininess = ProcessPercentageChunk(child, reader); //Console.WriteLine ( "SHININESS: {0}", m.Shininess ); break; case ChunckIDs.EDIT_MATMAP: case ChunckIDs.EDIT_MATMAP2: case ChunckIDs.EDIT_MATMAPBUMP: case ChunckIDs.EDIT_MATMAPREFLECTION: ProcessPercentageChunk(child, reader); //SkipChunk ( child ); ProcessTexMapChunk(child, m, reader); break; default: SkipChunk(child, reader); break; } chunk.BytesRead += child.BytesRead; } materials.Add(name, m); }