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(); }
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; }
///<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(); } }