// Token: 0x060000E3 RID: 227 RVA: 0x0000B2C4 File Offset: 0x000094C4
        public static void Write(BinaryWriter writer, ACCMaterialEx mate)
        {
            writer.Write(FileConst.HEAD_MATE);
            writer.Write(1000);
            writer.Write(mate.name1);
            writer.Write(mate.name2);
            string name = mate.type.name;

            writer.Write(name);
            string mateName = ShaderType.GetMateName(name);

            writer.Write(mateName);
            foreach (ShaderPropTex shaderPropTex in mate.type.texProps)
            {
                if (shaderPropTex.key == PropKey._RenderTex)
                {
                    writer.Write("null");
                }
                else
                {
                    writer.Write("tex2d");
                    ACCTextureEx acctextureEx = mate.texDic[shaderPropTex.key];
                    writer.Write(acctextureEx.editname);
                    writer.Write(acctextureEx.txtpath);
                    ACCMaterialEx.OUT_UTIL.Write(writer, acctextureEx.texOffset);
                    ACCMaterialEx.OUT_UTIL.Write(writer, acctextureEx.texScale);
                }
            }
            for (int j = 0; j < mate.editColors.Length; j++)
            {
                ShaderPropColor shaderPropColor = mate.type.colProps[j];
                EditColor       editColor       = mate.editColors[j];
                writer.Write(shaderPropColor.type.ToString());
                writer.Write(shaderPropColor.keyName);
                ACCMaterialEx.OUT_UTIL.Write(writer, editColor.val);
            }
            for (int k = 0; k < mate.editVals.Length; k++)
            {
                ShaderPropFloat shaderPropFloat = mate.type.fProps[k];
                EditValue       editValue       = mate.editVals[k];
                writer.Write(shaderPropFloat.type.ToString());
                writer.Write(shaderPropFloat.keyName);
                writer.Write(editValue.val);
            }
        }
        private static ACCMaterialEx Load(BinaryReader reader)
        {
            int    version     = reader.ReadInt32();
            string name1       = reader.ReadString();
            string name2       = reader.ReadString();
            string shaderName1 = reader.ReadString();
            var    shaderType  = ShaderType.Resolve(shaderName1);

            var created = new ACCMaterialEx(shaderType);

            created.name1 = name1;
            created.name2 = name2;

            //created.shader = created.type;
            //created.type1 = ShaderMapper.resolve(shaderName1);
            //created.shader = created.type1.shader;

            string shaderName2 = reader.ReadString();

            while (true)
            {
                string type = reader.ReadString();
                if (type == "end")
                {
                    break;
                }

                string propName = reader.ReadString();
                switch (type)
                {
                case "tex":
                    string sub = reader.ReadString();
                    switch (sub)
                    {
                    case "tex2d":

                        var tex = new ACCTextureEx(propName);
                        tex.editname  = reader.ReadString();
                        tex.txtpath   = reader.ReadString();
                        tex.texOffset = new Vector2(reader.ReadSingle(),
                                                    reader.ReadSingle());
                        tex.texScale = new Vector2(reader.ReadSingle(),
                                                   reader.ReadSingle());
                        created.texDic[tex.propKey] = tex;
                        break;

                    case "null":
                        break;

                    case "texRT":
                        reader.ReadString();
                        reader.ReadString();
                        break;
                    }
                    break;

                case "col":
                case "vec":
                    var c = new Color(reader.ReadSingle(), reader.ReadSingle(),
                                      reader.ReadSingle(), reader.ReadSingle());
                    created.SetColor(propName, c);
                    break;

                case "f":
                    float f = reader.ReadSingle();
                    created.SetFloat(propName, f);
                    break;
                }
            }
            return(created);
        }
        // Token: 0x060000E1 RID: 225 RVA: 0x0000B0A4 File Offset: 0x000092A4
        private static ACCMaterialEx Load(BinaryReader reader)
        {
            reader.ReadInt32();
            string        text          = reader.ReadString();
            string        text2         = reader.ReadString();
            string        name          = reader.ReadString();
            ShaderType    type          = ShaderType.Resolve(name);
            ACCMaterialEx accmaterialEx = new ACCMaterialEx(type)
            {
                name1 = text,
                name2 = text2
            };

            reader.ReadString();
            for (;;)
            {
                string text3 = reader.ReadString();
                if (text3 == "end")
                {
                    break;
                }
                string propName = reader.ReadString();
                string a;
                if ((a = text3) != null)
                {
                    if (!(a == "tex"))
                    {
                        if (!(a == "col") && !(a == "vec"))
                        {
                            if (a == "f")
                            {
                                float f = reader.ReadSingle();
                                accmaterialEx.SetFloat(propName, f);
                            }
                        }
                        else
                        {
                            Color c = new Color(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
                            accmaterialEx.SetColor(propName, c);
                        }
                    }
                    else
                    {
                        string text4 = reader.ReadString();
                        string a2;
                        if ((a2 = text4) != null)
                        {
                            if (!(a2 == "tex2d"))
                            {
                                if (!(a2 == "null"))
                                {
                                    if (a2 == "texRT")
                                    {
                                        reader.ReadString();
                                        reader.ReadString();
                                    }
                                }
                            }
                            else
                            {
                                ACCTextureEx acctextureEx = new ACCTextureEx(propName);
                                acctextureEx.editname    = reader.ReadString();
                                acctextureEx.txtpath     = reader.ReadString();
                                acctextureEx.texOffset.x = reader.ReadSingle();
                                acctextureEx.texOffset.y = reader.ReadSingle();
                                acctextureEx.texScale.x  = reader.ReadSingle();
                                acctextureEx.texScale.y  = reader.ReadSingle();
                                accmaterialEx.texDic[acctextureEx.propKey] = acctextureEx;
                            }
                        }
                    }
                }
            }
            return(accmaterialEx);
        }
        private static ACCMaterialEx Load(BinaryReader reader) {
            int version = reader.ReadInt32();
            string name1 = reader.ReadString();
            string name2 = reader.ReadString();
            string shaderName1 = reader.ReadString();
            var shaderType = ShaderType.Resolve(shaderName1);
            
            var created = new ACCMaterialEx(shaderType);
            created.name1 = name1;
            created.name2 = name2;

            //created.shader = created.type;
            //created.type1 = ShaderMapper.resolve(shaderName1);
            //created.shader = created.type1.shader;
            
            string shaderName2 = reader.ReadString();

            while(true) {
                string type = reader.ReadString();
                if (type == "end") break;

                string propName = reader.ReadString();
                switch (type) {
                    case "tex":
                        string sub = reader.ReadString();
                        switch (sub) {
                        case "tex2d":
                            
                            var tex = new ACCTextureEx(propName);
                            tex.editname = reader.ReadString();
                            tex.txtpath  = reader.ReadString();
                            tex.texOffset = new Vector2(reader.ReadSingle(),
                                                        reader.ReadSingle());
                            tex.texScale  = new Vector2(reader.ReadSingle(),
                                                        reader.ReadSingle());                                
                            created.texDic[tex.propKey] = tex;
                            break;
                        case "null":
                            break;
                        case "texRT":
                            reader.ReadString();
                            reader.ReadString();
                            break;
                    }
                    break;
                case "col":
                case "vec":
                    var c = new Color(reader.ReadSingle(), reader.ReadSingle(),
                                      reader.ReadSingle(), reader.ReadSingle());
                    created.SetColor(propName, c);
                    break;
                case "f":
                    float f = reader.ReadSingle();
                    created.SetFloat(propName, f);
                    break;
                }
            }
            return created;           
        }