private void _LoadTextures(BlendTypeRepository repository, BlendValueCapsule bMaterial, ref Dictionary <DrawSystem.TextureTypes, TextureInfo> outTextureInfos, DrawSystem.TextureTypes[] supportTypes) { var mtexs = bMaterial.GetMember("mtex"); var mtexsType = mtexs.Type as BlendArrayType; for (int mtexIndex = 0; mtexIndex < mtexsType.GetLength(0); ++mtexIndex) { // Build textures var mtex = mtexs.GetAt(mtexIndex).GetRawValue <BlendAddress>().DereferenceOne(); if (mtex != null) { float scaleU = mtex.GetMember("size").GetAt(0).GetRawValue <float>(); float scaleV = mtex.GetMember("size").GetAt(1).GetRawValue <float>(); var tex = mtex.GetMember("tex").GetRawValue <BlendAddress>().DereferenceOne(); if (tex != null) { var ima = tex.GetMember("ima").GetRawValue <BlendAddress>().DereferenceOne(); if (ima != null) { var typename = tex.GetMember("id").GetMember("name").GetAllValueAsString(); typename = Path.GetFileNameWithoutExtension(typename); // TEdiffuse.001 => TEdiffuse var path = Path.GetFileName(ima.GetMember("name").GetAllValueAsString()); Console.WriteLine(" found texture : " + path); DrawSystem.TextureTypes type = DrawSystem.TextureTypes.Diffuse0; switch (typename) { case "TEdiffuse": type = DrawSystem.TextureTypes.Diffuse0; break; case "TEnormal": type = DrawSystem.TextureTypes.Bump0; break; default: Debug.Fail("unsupported texture typename " + typename); break; } outTextureInfos.Add(type, new TextureInfo { Name = path, UvScale = new Vector2(scaleU, scaleV) }); } } } } }
public override void SetTextureData(DrawSystem.TextureTypes type, DrawSystem.TextureData tex) { switch (type) { case DrawSystem.TextureTypes.Diffuse0: DiffuseTex0 = tex; break; case DrawSystem.TextureTypes.MinimapRoute: MinimapRouteTex = tex; break; default: Debug.Assert(false, "unsupported texture types"); break; } }
public override bool GetTextureData(DrawSystem.TextureTypes type, out DrawSystem.TextureData outTexture) { switch (type) { case DrawSystem.TextureTypes.Diffuse0: outTexture = DiffuseTex0; return(true); case DrawSystem.TextureTypes.MinimapRoute: outTexture = MinimapRouteTex; return(true); default: Debug.Assert(false, "unsupported texture types"); outTexture = DrawSystem.TextureData.Null(); return(false); } }
public virtual bool GetTextureData(DrawSystem.TextureTypes type, out DrawSystem.TextureData outTexture) { outTexture = DrawSystem.TextureData.Null(); return(false); }
public virtual void SetTextureData(DrawSystem.TextureTypes tyep, DrawSystem.TextureData tex) { // do nothing }