Example #1
0
        public string ExportMaterial(DrawElement drawElement)
        {
            ushort nodeIdex = 0;

            foreach (var node in Header.Nodes)
            {
                for (int i = 0; i < node.ShapeCount; i++)
                {
                    if (node.ShapeIndex + i == drawElement.ShapeIndex)
                    {
                        nodeIdex = node.NodeIndex;
                    }
                }
            }

            var shape        = Header.Shapes[drawElement.ShapeIndex];
            var material     = Header.Materials[drawElement.MaterialIndex];
            var convertedMat = new MaterialConvert();

            convertedMat.AlphaFlags   = material.AlphaFlags;
            convertedMat.DiffuseR     = material.Color.R;
            convertedMat.DiffuseG     = material.Color.G;
            convertedMat.DiffuseB     = material.Color.B;
            convertedMat.DiffuseA     = material.Color.A;
            convertedMat.Unknown1     = material.Unknown1;
            convertedMat.Unknown2     = material.Unknown3;
            convertedMat.MeshSettings = new ShapeFlags()
            {
                NormalsFlags = shape.NormalFlags,
                Unknown1     = shape.Unknown1,
                Unknown2     = shape.Unknown2,
                Unknown3     = shape.Unknown3,
                NodeIndex    = nodeIdex,
            };

            TevStageConvert[] stages = new TevStageConvert[material.NumTevStages];
            convertedMat.TevStages = stages;
            for (int i = 0; i < material.NumTevStages; i++)
            {
                stages[i] = new TevStageConvert();
                stages[i].SamplerIndex = material.TevStages[i].SamplerIndex;
                stages[i].Unknown      = material.TevStages[i].Unknown;
                stages[i].Values       = material.TevStages[i].Unknowns2;
            }
            return(Newtonsoft.Json.JsonConvert.SerializeObject(convertedMat, Newtonsoft.Json.Formatting.Indented));
        }
Example #2
0
        static void Main(string[] args)
        {
            ResFile animFile = new ResFile("JugemObj.bfres");

            animFile.Save("JugemObjRB.bfres");
            return;

            ResFile resFile = new ResFile(args[0]);

            string folder = Path.GetFileNameWithoutExtension(args[0]);

            foreach (var model in resFile.Models.Values)
            {
                if (!Directory.Exists($"{folder}/Models/{model.Name}"))
                {
                    Directory.CreateDirectory($"{folder}/Models/{model.Name}");
                }

                foreach (var mat in model.Materials.Values)
                {
                    File.WriteAllText($"{folder}/Models/{model.Name}/{mat.Name}.json", MaterialConvert.ToJson(mat));
                }
            }

/*
 *          string targetFileWiiU = "test.bfres";
 *
 *
 *          ResFile resFile = new ResFile(targetFileWiiU);
 *          resFile.Models[0].Export("ModelU.bfmdl", resFile);
 *          resFile.Save($"{targetFileWiiU}.new.bfres");
 *
 *          //Platform switch, alignment, version
 *          resFile.ChangePlatform(true, 4096, 0, 5, 0, 3);
 *          resFile.Save("newNX.bfres");
 *
 *          //Section export/import test
 *          //Swap a switch model with a wii u one
 *          resFile.Models[0].Export("ModelNX.bfmdl", resFile);
 *          resFile.Models[0].Import("ModelU.bfmdl", resFile);
 *
 *          //Platform wii u, alignment, version
 *          resFile.ChangePlatform(false, 8192, 3, 4, 0, 4);
 *          resFile.Save("newU.bfres");*/
        }