示例#1
0
        public ModelViewport()
        {
            InitializeComponent();
            Camera   = new Camera();
            FilePath = "";
            Text     = "Model Viewport";

            CalculateLightSource();

            MeshList.Dock        = DockStyle.Right;
            MeshList.MaximumSize = new Size(300, 2000);
            MeshList.Size        = new Size(300, 2000);
            AddControl(MeshList);

            AnimList.Dock        = DockStyle.Left;
            AnimList.MaximumSize = new Size(300, 2000);
            AnimList.Size        = new Size(300, 2000);
            AddControl(AnimList);

            LVDList.Dock        = DockStyle.Left;
            LVDList.MaximumSize = new Size(300, 2000);
            AddControl(LVDList);
            LVDList.lvdEditor = LVDEditor;

            LVDEditor.Dock        = DockStyle.Right;
            LVDEditor.MaximumSize = new Size(300, 2000);
            AddControl(LVDEditor);

            VertexTool.Dock        = DockStyle.Left;
            VertexTool.MaximumSize = new Size(300, 2000);
            AddControl(VertexTool);
            VertexTool.vp = this;

            ACMDEditor       = new ACMDPreviewEditor();
            ACMDEditor.Owner = this;
            ACMDEditor.Dock  = DockStyle.Right;
            ACMDEditor.updateCrcList();
            AddControl(ACMDEditor);

            HitboxList      = new HitboxList();
            HitboxList.Dock = DockStyle.Right;
            AddControl(HitboxList);

            HurtboxList      = new HurtboxList();
            HurtboxList.Dock = DockStyle.Right;

            VariableViewer      = new VariableList();
            VariableViewer.Dock = DockStyle.Right;

            LVD = new Smash_Forge.LVD();

            ViewComboBox.SelectedIndex = 0;

            draw = MeshList.treeView1.Nodes;

            RenderTools.Setup();
        }
示例#2
0
        public LVDList()
        {
            InitializeComponent();
            treeView1.Nodes.Add(collisionNode);
            treeView1.Nodes.Add(spawnNode);
            treeView1.Nodes.Add(respawnNode);
            treeView1.Nodes.Add(camNode);
            treeView1.Nodes.Add(deathNode);
            treeView1.Nodes.Add(itemNode);
            treeView1.Nodes.Add(shapeNode);
            treeView1.Nodes.Add(pointNode);
            treeView1.Nodes.Add(hurtNode);
            treeView1.Nodes.Add(enemyNode);

            //---------------------------------------------
            {
                collisionNode.ContextMenu = new ContextMenu();

                MenuItem AddCollision = new MenuItem("Add New Collision");
                AddCollision.Click += delegate
                {
                    TargetLVD.collisions.Add(new Collision()
                    {
                        name = "COL_00_NewCollision", subname = "00_NewCollision"
                    });
                    fillList();
                };
                collisionNode.ContextMenu.MenuItems.Add(AddCollision);

                MenuItem GenCliffs = new MenuItem("Regenerate Cliffs");
                GenCliffs.Click += delegate
                {
                    foreach (Collision c in TargetLVD.collisions)
                    {
                        LVD.GenerateCliffs(c);
                    }
                    fillList();
                };
                collisionNode.ContextMenu.MenuItems.Add(GenCliffs);
            }
            //---------------------------------------------
            {
                spawnNode.ContextMenu = new ContextMenu();
                MenuItem Add = new MenuItem("Add New Spawn");
                Add.Click += delegate
                {
                    string newNum = (TargetLVD.spawns.Count + 1).ToString().PadLeft(2, '0');
                    TargetLVD.spawns.Add(new Spawn()
                    {
                        name = "START_00_P" + newNum, subname = "00_P" + newNum
                    });
                    fillList();
                };
                spawnNode.ContextMenu.MenuItems.Add(Add);
            }
            //---------------------------------------------
            {
                TreeNode node = respawnNode;
                node.ContextMenu = new ContextMenu();
                MenuItem Add = new MenuItem("Add New Respawn");
                Add.Click += delegate
                {
                    string newNum = (TargetLVD.respawns.Count + 1).ToString().PadLeft(2, '0');
                    TargetLVD.respawns.Add(new Spawn()
                    {
                        name = "RESTART_00_P" + newNum, subname = "00_P" + newNum
                    });
                    fillList();
                };
                node.ContextMenu.MenuItems.Add(Add);
            }
            //---------------------------------------------
            {
                TreeNode node = camNode;
                node.ContextMenu = new ContextMenu();
                MenuItem Add = new MenuItem("Add New Camera Bounds");
                Add.Click += delegate
                {
                    TargetLVD.cameraBounds.Add(new Bounds()
                    {
                        name = "CAMERA_00", subname = "00"
                    });
                    fillList();
                };
                node.ContextMenu.MenuItems.Add(Add);
            }
            //---------------------------------------------
            {
                TreeNode node = deathNode;
                node.ContextMenu = new ContextMenu();
                MenuItem Add = new MenuItem("Add New Blastzones");
                Add.Click += delegate
                {
                    TargetLVD.blastzones.Add(new Bounds()
                    {
                        name = "DEATH_00", subname = "00"
                    });
                    fillList();
                };
                node.ContextMenu.MenuItems.Add(Add);
            }
            //---------------------------------------------
            {
                TreeNode node = itemNode;
                node.ContextMenu = new ContextMenu();
                MenuItem Add = new MenuItem("Add New Item Spawner");
                Add.Click += delegate
                {
                    TargetLVD.itemSpawns.Add(new ItemSpawner()
                    {
                        name = "ItemPopup_NEW", subname = "00_Item"
                    });
                    fillList();
                };
                node.ContextMenu.MenuItems.Add(Add);
            }
            //---------------------------------------------
            {
                TreeNode node = shapeNode;
                node.ContextMenu = new ContextMenu();

                MenuItem AddPoint = new MenuItem("Add New General Shape (Point)");
                AddPoint.Click += delegate
                {
                    TargetLVD.generalShapes.Add(new GeneralShape()
                    {
                        name = "GeneralPoint_NEW", subname = "00_NEW", type = 1
                    });
                    fillList();
                };
                node.ContextMenu.MenuItems.Add(AddPoint);

                MenuItem AddRect = new MenuItem("Add New General Shape (Rectangle)");
                AddRect.Click += delegate
                {
                    TargetLVD.generalShapes.Add(new GeneralShape()
                    {
                        name = "GeneralRect_NEW", subname = "00_NEW", type = 3
                    });
                    fillList();
                };
                node.ContextMenu.MenuItems.Add(AddRect);

                MenuItem AddPath = new MenuItem("Add New General Shape (Path)");
                AddPath.Click += delegate
                {
                    TargetLVD.generalShapes.Add(new GeneralShape()
                    {
                        name = "GeneralPath_NEW", subname = "00_NEW", type = 4
                    });
                    fillList();
                };
                node.ContextMenu.MenuItems.Add(AddPath);
            }
            //---------------------------------------------
            {
                TreeNode node = pointNode;
                node.ContextMenu = new ContextMenu();
                MenuItem Add = new MenuItem("Add New General Point");
                Add.Click += delegate
                {
                    TargetLVD.generalPoints.Add(new GeneralPoint()
                    {
                        name = "GeneralPoint3D_NEW", subname = "00_NEW"
                    });
                    fillList();
                };
                node.ContextMenu.MenuItems.Add(Add);
            }
            //---------------------------------------------
            {
                TreeNode node = hurtNode;
                node.ContextMenu = new ContextMenu();

                MenuItem AddSphere = new MenuItem("Add New Damage Sphere");
                AddSphere.Click += delegate
                {
                    TargetLVD.damageShapes.Add(new DamageShape()
                    {
                        name = "DamageeSphere_00_NEW", subname = "00_NEW", type = 2
                    });
                    fillList();
                };
                node.ContextMenu.MenuItems.Add(AddSphere);

                MenuItem AddCapsule = new MenuItem("Add New Damage Capsule");
                AddCapsule.Click += delegate
                {
                    TargetLVD.damageShapes.Add(new DamageShape()
                    {
                        name = "DamageeCapsule_00_NEW", subname = "00_NEW", type = 3
                    });
                    fillList();
                };
                node.ContextMenu.MenuItems.Add(AddCapsule);
            }
            //---------------------------------------------
            {
                TreeNode node = enemyNode;
                node.ContextMenu = new ContextMenu();
                MenuItem Add = new MenuItem("Add New Enemy Spawner");
                Add.Click += delegate
                {
                    TargetLVD.enemySpawns.Add(new EnemyGenerator()
                    {
                        name = "EnemyGenerator_NEW", subname = "00_NEW"
                    });
                    fillList();
                };
                node.ContextMenu.MenuItems.Add(Add);
            }

            ElementCM = new ContextMenu();
            MenuItem Delete = new MenuItem("Delete Entry");

            Delete.Click += delegate
            {
                deleteSelected();
            };
            ElementCM.MenuItems.Add(Delete);

            CollisionCM = new ContextMenu();
            CollisionCM.MenuItems.Add(Delete);
            MenuItem GenPassthru = new MenuItem("Regenerate Passthrough Angles");

            GenPassthru.Click += delegate
            {
                if (treeView1.SelectedNode != null && treeView1.SelectedNode.Tag is Collision)
                {
                    LVD.GeneratePassthroughs((Collision)treeView1.SelectedNode.Tag, true);
                }
            };
            CollisionCM.MenuItems.Add(GenPassthru);

            MenuItem FlipNormals = new MenuItem("Flip Passthrough Angles");

            FlipNormals.Click += delegate
            {
                if (treeView1.SelectedNode != null && treeView1.SelectedNode.Tag is Collision)
                {
                    LVD.FlipPassthroughs((Collision)treeView1.SelectedNode.Tag);
                }
            };
            CollisionCM.MenuItems.Add(FlipNormals);

            treeView1.NodeMouseClick += (sender, args) => treeView1.SelectedNode = args.Node;
        }
示例#3
0
        ///<summary>
        ///Open a file based on the filename
        ///</summary>
        /// <param name="filename"> Filename of file to open</param>
        public void openFile(string filename)
        {
            if (!filename.EndsWith(".mta") && !filename.EndsWith(".dat") && !filename.EndsWith(".smd"))
            {
                openAnimation(filename);
            }

            if (filename.EndsWith(".vbn"))
            {
                Runtime.TargetVBN = new VBN(filename);

                if (Directory.Exists("Skapon\\"))
                {
                    NUD            nud = Skapon.Create(Runtime.TargetVBN);
                    ModelContainer con = new ModelContainer();
                    con.vbn = Runtime.TargetVBN;
                    con.nud = nud;
                    nud.PreRender();
                    Runtime.ModelContainers.Add(con);
                }
            }

            if (filename.EndsWith(".sb"))
            {
                SB sb = new SB();
                sb.Read(filename);
                SwagEditor swagEditor = new SwagEditor(sb)
                {
                    ShowHint = DockState.DockRight
                };
                AddDockedControl(swagEditor);
                SwagEditors.Add(swagEditor);
            }

            if (filename.EndsWith(".dat"))
            {
                if (filename.EndsWith("AJ.dat"))
                {
                    MessageBox.Show("This is animation; load with Animation -> Import");
                    return;
                }
                DAT dat = new DAT();
                dat.Read(new FileData(filename));
                ModelContainer c = new ModelContainer();
                Runtime.ModelContainers.Add(c);
                c.dat_melee = dat;
                dat.PreRender();

                HashMatch();

                Runtime.TargetVBN = dat.bones;

                DAT_TreeView p = new DAT_TreeView()
                {
                    ShowHint = DockState.DockLeft
                };
                p.setDAT(dat);
                AddDockedControl(p);
                //Runtime.TargetVBN = dat.bones;
                meshList.refresh();
            }

            if (filename.EndsWith(".nut"))
            {
                Runtime.TextureContainers.Add(new NUT(filename));
                NUTEditor ev = new NUTEditor();
                ev.Show();
            }

            if (filename.EndsWith(".lvd"))
            {
                Runtime.TargetLVD = new LVD(filename);
                LVD test = Runtime.TargetLVD;
                lvdList.fillList();
            }

            if (filename.EndsWith(".mta"))
            {
                Runtime.TargetMTA = new MTA();
                Runtime.TargetMTA.Read(filename);
                viewports[0].loadMTA(Runtime.TargetMTA);
                MTAEditor temp = new MTAEditor(Runtime.TargetMTA)
                {
                    ShowHint = DockState.DockLeft
                };
                temp.Text = Path.GetFileName(filename);
                AddDockedControl(temp);
                mtaEditors.Add(temp);
            }

            if (filename.EndsWith(".mtable"))
            {
                //project.openACMD(filename);
                Runtime.Moveset = new MovesetManager(filename);
            }

            if (filename.EndsWith("path.bin"))
            {
                Runtime.TargetPath = new PathBin(filename);
            }
            else
            if (filename.EndsWith(".bin"))
            {
                //Note to whoever is readin this:
                //Eventually we need to look at the magic here (and also make all .bins look at magic)
                //Runtime.TargetCMR0 = new CMR0();
                //Runtime.TargetCMR0.read(new FileData(filename));
                PARAMEditor p = new PARAMEditor(filename)
                {
                    ShowHint = DockState.Document
                };
                p.Text = Path.GetFileName(filename);
                AddDockedControl(p);
                paramEditors.Add(p);
            }

            if (filename.EndsWith(".mdl0"))
            {
                MDL0Bones mdl0 = new MDL0Bones();
                Runtime.TargetVBN = mdl0.GetVBN(new FileData(filename));
            }

            if (filename.EndsWith(".smd"))
            {
                Runtime.TargetVBN = new VBN();
                SMD.read(filename, new SkelAnimation(), Runtime.TargetVBN);
            }

            if (filename.ToLower().EndsWith(".dae"))
            {
                DAEImportSettings m = new DAEImportSettings();
                m.ShowDialog();
                if (m.exitStatus == DAEImportSettings.Opened)
                {
                    if (Runtime.ModelContainers.Count < 1)
                    {
                        Runtime.ModelContainers.Add(new ModelContainer());
                    }

                    Collada.DAEtoNUD(filename, Runtime.ModelContainers[0]);

                    // apply settings
                    m.Apply(Runtime.ModelContainers[0].nud);
                    Runtime.ModelContainers[0].nud.MergePoly();

                    meshList.refresh();
                }
            }

            if (filename.EndsWith(".mbn"))
            {
                MBN m = new MBN();
                m.Read(filename);
                ModelContainer con = new ModelContainer();
                BCH            b   = new BCH();
                con.bch = b;
                b.mbn   = m;
                b.Read("C:\\s\\Smash\\extract\\data\\fighter\\lucas\\Ness3DS - h00\\normal.bch");
                Runtime.ModelContainers.Add(con);
            }

            /*if (filename.EndsWith(".bch"))
             * {
             *  ModelContainer con = new ModelContainer();
             *  BCH b = new BCH();
             *  b.Read(filename);
             *  con.bch = b;
             *  Runtime.ModelContainers.Add(con);
             * }*/

            if (filename.EndsWith(".nud"))
            {
                openNud(filename);
            }

            if (filename.EndsWith(".moi"))
            {
                MOI moi = new MOI(filename);
                AddDockedControl(new MOIEditor(moi)
                {
                    ShowHint = DockState.DockRight
                });
            }

            if (filename.EndsWith(".wrkspc"))
            {
                Workspace = new WorkspaceManager(project);
                Workspace.OpenWorkspace(filename);
            }

            if (Runtime.TargetVBN != null)
            {
                ModelContainer m = new ModelContainer();
                m.vbn = Runtime.TargetVBN;
                Runtime.ModelContainers.Add(m);

                if (filename.EndsWith(".smd"))
                {
                    m.nud = SMD.toNUD(filename);
                    meshList.refresh();
                }

                leftPanel.treeRefresh();
            }
            else
            {
                foreach (ModelContainer m in Runtime.ModelContainers)
                {
                    if (m.vbn != null)
                    {
                        Runtime.TargetVBN = Runtime.ModelContainers[0].vbn;
                        break;
                    }
                }
            }
            // Don't want to mess up the project tree if we
            // just set it up already
            if (!filename.EndsWith(".wrkspc"))
            {
                project.fillTree();
            }
        }