예제 #1
0
        public static void Write(BinaryWriter writer, ACCMaterialEx mate)
        {
            writer.Write(FileConst.HEAD_MATE);
            writer.Write(1000); // version

            writer.Write(mate.name1);
            writer.Write(mate.name2);

            var shaderName1 = mate.type.name;

            writer.Write(shaderName1);
            var shaderName2 = ShaderType.GetMateName(shaderName1);

            writer.Write(shaderName2);

            // tex
            foreach (var texProp in mate.type.texProps)
            {
                if (texProp.key == PropKey._RenderTex)
                {
                    writer.Write("null");
                }
                else
                {
                    writer.Write("tex2d");
                    var tex = mate.texDic[texProp.key];
                    writer.Write(tex.editname);
                    writer.Write(tex.txtpath);

                    OUT_UTIL.Write(writer, tex.texOffset);
                    OUT_UTIL.Write(writer, tex.texScale);
                }
            }
            // col
            for (var i = 0; i < mate.editColors.Length; i++)
            {
                var colProp = mate.type.colProps[i];
                var eColor  = mate.editColors[i];

                // PropType.col
                writer.Write(colProp.type.ToString());
                writer.Write(colProp.keyName);
                OUT_UTIL.Write(writer, eColor.val);
            }
            // f
            for (var i = 0; i < mate.editVals.Length; i++)
            {
                var prop = mate.type.fProps[i];
                var eVal = mate.editVals[i];

                // PropType.f
                writer.Write(prop.type.ToString());
                writer.Write(prop.keyName);
                writer.Write(eVal.val);
            }
        }
예제 #2
0
        // Token: 0x060001A2 RID: 418 RVA: 0x0000F858 File Offset: 0x0000DA58
        public string ToText(ACCMaterial target)
        {
            Material      material      = target.material;
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append("1000\r\n");
            stringBuilder.Append(target.name.ToLower()).Append("\r\n");
            stringBuilder.Append(target.name).Append("\r\n");
            string name = target.type.name;

            stringBuilder.Append(name).Append("\r\n");
            stringBuilder.Append(ShaderType.GetMateName(name)).Append("\r\n\r\n");
            ShaderType type = target.type;

            foreach (ShaderPropTex shaderPropTex in type.texProps)
            {
                stringBuilder.Append("tex\r\n");
                string keyName = shaderPropTex.keyName;
                stringBuilder.Append('\t').Append(keyName).Append("\r\n");
                Texture texture = material.GetTexture(shaderPropTex.propId);
                if (texture == null)
                {
                    stringBuilder.Append("\tnull\r\n");
                }
                else
                {
                    stringBuilder.Append("\ttex2d\r\n");
                    stringBuilder.Append('\t').Append(texture.name).Append("\r\n");
                    stringBuilder.Append('\t').Append(MateHandler.settings.txtPrefixTex).Append(texture.name).Append(".png\r\n");
                    Vector2 textureOffset = material.GetTextureOffset(keyName);
                    Vector2 textureScale  = material.GetTextureScale(keyName);
                    stringBuilder.Append("\t").Append(textureOffset.x).Append(' ').Append(textureOffset.y).Append(' ').Append(textureScale.x).Append(' ').Append(textureScale.y).Append("\r\n");
                }
            }
            foreach (ShaderPropColor shaderPropColor in type.colProps)
            {
                stringBuilder.Append("col\r\n");
                string keyName2 = shaderPropColor.keyName;
                stringBuilder.Append('\t').Append(keyName2).Append("\r\n");
                Color color = material.GetColor(keyName2);
                stringBuilder.Append('\t').Append(color.r).Append(' ').Append(color.g).Append(' ').Append(color.b).Append(' ').Append(color.a).Append("\r\n");
            }
            foreach (ShaderPropFloat shaderPropFloat in type.fProps)
            {
                stringBuilder.Append("f\r\n");
                string keyName3 = shaderPropFloat.keyName;
                stringBuilder.Append('\t').Append(keyName3).Append("\r\n");
                float @float = material.GetFloat(keyName3);
                stringBuilder.Append('\t').Append(@float).Append("\r\n");
            }
            return(stringBuilder.ToString());
        }
        // 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);
            }
        }
        public string ToText(ACCMaterial target)
        {
            var mate = target.material;
            var buff = new StringBuilder();

            // ゲーム中にバージョン、name1を保持していないので制限事項
            // mateファイルの特定も少し手間が掛かるため、まずは暫定処置
            buff.Append("1000\r\n");
            buff.Append(target.name.ToLower()).Append("\r\n");
            buff.Append(target.name).Append("\r\n");
            var shaderName = target.type.name;

            buff.Append(shaderName).Append("\r\n");
            buff.Append(ShaderType.GetMateName(shaderName)).Append("\r\n\r\n");

            var type = target.type;

            // tex
            foreach (var texProp in type.texProps)
            {
                buff.Append("tex\r\n");
                var propName = texProp.keyName;
                buff.Append('\t').Append(propName).Append("\r\n");
                var tex = mate.GetTexture(texProp.propId);
                if (tex == null)
                {
                    buff.Append("\tnull\r\n");
                }
                else
                {
                    buff.Append("\ttex2d\r\n");
                    buff.Append('\t').Append(tex.name).Append("\r\n");                                   // tex name
                    // なんちゃってテキストパス (これもゲーム中にデータが残らないため)
                    buff.Append('\t').Append(settings.txtPrefixTex).Append(tex.name).Append(".png\r\n"); // tex path
                    //
                    var offset = mate.GetTextureOffset(propName);
                    var scale  = mate.GetTextureScale(propName);
                    buff.Append("\t").Append(offset.x).Append(' ').Append(offset.y)
                    .Append(' ').Append(scale.x).Append(' ').Append(scale.y).Append("\r\n");
                }
            }
            // col
            foreach (var colProp in type.colProps)
            {
                buff.Append("col\r\n");
                var propName = colProp.keyName;
                buff.Append('\t').Append(propName).Append("\r\n");
                var color = mate.GetColor(propName);
                buff.Append('\t').Append(color.r).Append(' ')
                .Append(color.g).Append(' ')
                .Append(color.b).Append(' ')
                .Append(color.a).Append("\r\n");
            }

            // f
            foreach (var prop in type.fProps)
            {
                buff.Append("f\r\n");
                var propName = prop.keyName;
                buff.Append('\t').Append(propName).Append("\r\n");
                var fVal = mate.GetFloat(propName);
                buff.Append('\t').Append(fVal).Append("\r\n");
            }

            return(buff.ToString());
        }