コード例 #1
0
        public void LoadFile(ResFile resFile)
        {
            ResFileNode.Load(resFile);

            BfresSwitch.Read(this, resFile, ResFileNode);
            UpdateVertexData();
            UpdateTextureMaps();
        }
コード例 #2
0
        private void SaveSwitch(MemoryStream mem)
        {
            int CurMdl = 0;

            foreach (FMDL model in bfres.models)
            {
                bfres.resFile.Models[CurMdl].Shapes.Clear();
                bfres.resFile.Models[CurMdl].VertexBuffers.Clear();
                bfres.resFile.Models[CurMdl].Materials.Clear();
                //    bfres.resFile.Models[CurMdl].MaterialDict.Clear();

                int i          = 0;
                var duplicates = model.shapes.GroupBy(c => c.Text).Where(g => g.Skip(1).Any()).SelectMany(c => c);
                foreach (var shape in duplicates)
                {
                    shape.Text += i++;
                }

                foreach (FSHP shape in model.shapes)
                {
                    CheckMissingTextures(shape);
                    BfresSwitch.SetShape(shape, shape.Shape);

                    bfres.resFile.Models[CurMdl].Shapes.Add(shape.Shape);
                    bfres.resFile.Models[CurMdl].VertexBuffers.Add(shape.VertexBuffer);

                    SetShaderAssignAttributes(shape.GetMaterial().shaderassign, shape);
                }
                foreach (FMAT mat in model.materials.Values)
                {
                    BfresSwitch.SetMaterial(mat, mat.Material);
                    bfres.resFile.Models[CurMdl].Materials.Add(mat.Material);
                }
                CurMdl++;
            }
            bfres.resFile.SkeletalAnims.Clear();
            if (EditorRoot.Nodes.ContainsKey("FSKA"))
            {
                foreach (BfresSkeletonAnim ska in EditorRoot.Nodes["FSKA"].Nodes)
                {
                    bfres.resFile.SkeletalAnims.Add(ska.SkeletalAnim);
                }
            }

            ErrorCheck();

            BfresSwitch.WriteExternalFiles(bfres.resFile, EditorRoot);
            bfres.resFile.Save(mem);
        }
コード例 #3
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (formatCB.SelectedIndex < 0)
            {
                return;
            }

            string SelectedText = attributeCB.GetItemText(attributeCB.SelectedItem);

            DialogResult dialogResult = MessageBox.Show($"Are you sure you want to remove all {SelectedText} from" +
                                                        $" FMDL {ActiveFMDL}? )", "", MessageBoxButtons.YesNo);


            if (dialogResult == DialogResult.Yes)
            {
                foreach (var shape in ActiveFMDL.shapes)
                {
                    foreach (var att in shape.vertexAttributes)
                    {
                        if (att.Name == SelectedText)
                        {
                            shape.vertexAttributes.Remove(att);
                            shape.SaveVertexBuffer(shape.IsWiiU);
                            if (shape.IsWiiU)
                            {
                                BfresWiiU.ReadShapesVertices(shape, shape.ShapeU, shape.VertexBufferU, ActiveFMDL);
                            }
                            else
                            {
                                BfresSwitch.ReadShapesVertices(shape, shape.Shape, shape.VertexBuffer, ActiveFMDL);
                            }

                            attributeCB.Items.Remove(att.Name);

                            if (attributeCB.Items.Count > 0)
                            {
                                attributeCB.SelectedIndex = 0;
                            }
                            break;
                        }
                    }
                }
                LoadObjects(ActiveFMDL);
                ActiveFMDL.UpdateVertexData();
            }
        }
コード例 #4
0
        private void SaveSwitch(MemoryStream mem)
        {
            var resFile = bfres.ResFileNode.resFile;

            resFile.Models.Clear();
            resFile.SkeletalAnims.Clear();
            resFile.MaterialAnims.Clear();
            resFile.SceneAnims.Clear();
            resFile.ShapeAnims.Clear();
            resFile.BoneVisibilityAnims.Clear();
            resFile.ModelDict.Clear();
            resFile.SkeletalAnimDict.Clear();
            resFile.MaterialAnimDict.Clear();
            resFile.SceneAnimDict.Clear();
            resFile.ShapeAnimDict.Clear();
            resFile.BoneVisibilityAnimDict.Clear();


            int CurMdl = 0;

            if (EditorRoot.Nodes.ContainsKey("FMDL"))
            {
                foreach (FMDL model in EditorRoot.Nodes["FMDL"].Nodes)
                {
                    resFile.Models.Add(BfresSwitch.SetModel(model));
                }
            }
            if (EditorRoot.Nodes.ContainsKey("FSKA"))
            {
                foreach (BfresSkeletonAnim ska in EditorRoot.Nodes["FSKA"].Nodes)
                {
                    resFile.SkeletalAnims.Add(ska.SkeletalAnim);
                }
            }
            if (EditorRoot.Nodes.ContainsKey("FMAA"))
            {
                foreach (FMAA fmaa in EditorRoot.Nodes["FMAA"].Nodes)
                {
                    resFile.MaterialAnims.Add(fmaa.MaterialAnim);
                }
            }
            if (EditorRoot.Nodes.ContainsKey("FBNV"))
            {
                foreach (FBNV fbnv in EditorRoot.Nodes["FBNV"].Nodes)
                {
                    resFile.BoneVisibilityAnims.Add(fbnv.VisibilityAnim);
                }
            }
            if (EditorRoot.Nodes.ContainsKey("FSHPA"))
            {
                foreach (FSHA fsha in EditorRoot.Nodes["FSHPA"].Nodes)
                {
                    resFile.ShapeAnims.Add(fsha.ShapeAnim);
                }
            }
            if (EditorRoot.Nodes.ContainsKey("FSCN"))
            {
                foreach (FSCN fscn in EditorRoot.Nodes["FSCN"].Nodes)
                {
                    resFile.SceneAnims.Add(fscn.SceneAnim);
                }
            }

            ErrorCheck();

            BfresSwitch.WriteExternalFiles(resFile, EditorRoot);
            resFile.Save(mem);
        }