Пример #1
0
 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
     });
 }
Пример #2
0
        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}";
            }
        }
Пример #3
0
        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));
        }
Пример #4
0
 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})");
     }
 }