private void meleeAddLink_Click(object sender, EventArgs e) { DAT.COLL_DATA.Link link = new DAT.COLL_DATA.Link(); link.connectors = new int[] { 0xFFFF, 0xFFFF }; link.vertexIndices = new int[2]; DAT.COLL_DATA coll = (DAT.COLL_DATA)currentEntry; coll.links.Add(link); meleeLinks.Nodes.Add(new TreeNode($"Link {meleeLinks.Nodes.Count}") { Tag = link }); }
private void meleeSubtractLink_Click(object sender, EventArgs e) { DAT.COLL_DATA coll = (DAT.COLL_DATA)currentEntry; DAT.COLL_DATA.Link link = (DAT.COLL_DATA.Link)meleeLinks.SelectedNode.Tag; coll.links.Remove(link); int index = meleeLinks.SelectedNode.Index; meleeLinks.Nodes.Remove(meleeLinks.SelectedNode); for (int i = index; i < meleeLinks.Nodes.Count; i++) { meleeLinks.Nodes[i].Text = $"Link {i}"; } }
private static Color getLinkColor(DAT.COLL_DATA.Link link) { if ((link.flags & 1) != 0) { return(Color.FromArgb(128, Color.Yellow)); } if ((link.collisionAngle & 4) + (link.collisionAngle & 8) != 0) { return(Color.FromArgb(128, Color.Lime)); } if ((link.collisionAngle & 2) != 0) { return(Color.FromArgb(128, Color.Red)); } return(Color.FromArgb(128, Color.DarkCyan)); }
private void selectItem(object sender, TreeViewEventArgs e) { if (sender == meleeVerts) { currentMeleeVert = (Vector2)meleeVerts.SelectedNode.Tag; meleeX.Value = (Decimal)currentMeleeVert.X; meleeY.Value = (Decimal)currentMeleeVert.Y; } else if (sender == meleeLinks) { currentLink = (DAT.COLL_DATA.Link)meleeLinks.SelectedNode.Tag; vertStart.Value = currentLink.vertexIndices[0]; vertEnd.Value = currentLink.vertexIndices[1]; if (currentLink.connectors[0] != ushort.MaxValue) { linkBefore.Value = currentLink.connectors[0]; } else { linkBefore.Value = -1; } if (currentLink.connectors[1] != ushort.MaxValue) { linkAfter.Value = currentLink.connectors[1]; } else { linkAfter.Value = -1; } leftWall.Checked = ((currentLink.collisionAngle & 4) != 0); rightWall.Checked = ((currentLink.collisionAngle & 8) != 0); floor.Checked = ((currentLink.collisionAngle & 1) != 0); ceiling.Checked = ((currentLink.collisionAngle & 2) != 0); ledge.Checked = ((currentLink.flags & 2) != 0); meleeDropThrough.Checked = ((currentLink.flags & 1) != 0); comboBox2.Text = Enum.GetName(typeof(CollisionMatType), currentLink.material); } else if (sender == meleePolygons) { currentAreaTableEntry = (DAT.COLL_DATA.AreaTableEntry)meleePolygons.SelectedNode.Tag; polyStart.Value = currentAreaTableEntry.idxLowestSpot; polyEnd.Value = currentAreaTableEntry.idxLowestSpot + currentAreaTableEntry.nbLinks - 1; Console.WriteLine(meleePolygons.SelectedNode.Text + $" - ({currentAreaTableEntry.xBotLeftCorner},{currentAreaTableEntry.yBotLeftCorner}),({currentAreaTableEntry.xTopRightCorner},{currentAreaTableEntry.yTopRightCorner})"); } }