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)
                            });
                        }
                    }
                }
            }
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
 public virtual bool GetTextureData(DrawSystem.TextureTypes type, out DrawSystem.TextureData outTexture)
 {
     outTexture = DrawSystem.TextureData.Null();
     return(false);
 }
Пример #5
0
 public virtual void SetTextureData(DrawSystem.TextureTypes tyep, DrawSystem.TextureData tex)
 {
     // do nothing
 }