Ejemplo n.º 1
0
        public static float GetHeightOnTriangle(float x, float z)
        {
            float normX      = -0.0339056774973869f;
            float normY      = 0.919187009334564f;
            float normZ      = 0.392358928918839f;
            float normOffset = 969.59228515625f;

            x = (int)x;
            z = (int)z;

            return((float)TriangleDataModel.GetHeightOnTriangle(
                       x, z, normX, normY, normZ, normOffset));
        }
Ejemplo n.º 2
0
        public static TriangleDataModel FindCeiling(float floatX, float floatY, float floatZ)
        {
            int LEVEL_BOUNDARY_MAX = 0x2000;
            int CELL_SIZE          = 0x400;

            short shortX = (short)floatX;
            short shortY = (short)floatY;
            short shortZ = (short)floatZ;

            if (shortX <= -LEVEL_BOUNDARY_MAX || shortX >= LEVEL_BOUNDARY_MAX)
            {
                return(null);
            }
            if (shortZ <= -LEVEL_BOUNDARY_MAX || shortZ >= LEVEL_BOUNDARY_MAX)
            {
                return(null);
            }

            int cellX = ((shortX + LEVEL_BOUNDARY_MAX) / CELL_SIZE) & 0xF;
            int cellZ = ((shortZ + LEVEL_BOUNDARY_MAX) / CELL_SIZE) & 0xF;

            TriangleDataModel staticTri  = FindCeilingFromList(shortX, shortY, shortZ, cellX, cellZ, true);
            TriangleDataModel dynamicTri = FindCeilingFromList(shortX, shortY, shortZ, cellX, cellZ, false);

            if (staticTri == null && dynamicTri == null)
            {
                return(null);
            }
            if (staticTri == null)
            {
                return(dynamicTri);
            }
            if (dynamicTri == null)
            {
                return(staticTri);
            }

            double yOnStaticTri  = staticTri.GetHeightOnTriangle(shortX, shortZ);
            double yOnDynamicTri = dynamicTri.GetHeightOnTriangle(shortX, shortZ);

            return(yOnDynamicTri < yOnStaticTri ? dynamicTri : staticTri);
        }
Ejemplo n.º 3
0
            public void AddContextMenuItems(MapTab tab, ContextMenuStrip menu)
            {
                var myItem = new ToolStripMenuItem($"{triangle.Classification} Triangle 0x{triangle.Address.ToString("x8")}");

                var itemCopyTriangleAddress = new ToolStripMenuItem("Copy Triangle Address");

                itemCopyTriangleAddress.Click += (_, __) =>
                {
                    if (triangle != null)
                    {
                        Clipboard.SetText($"0x{triangle.Address.ToString("x8")}");
                    }
                };
                myItem.DropDownItems.Add(itemCopyTriangleAddress);

                var itemCopyPosition = new ToolStripMenuItem("Copy Position");

                itemCopyPosition.Click += (_, __) =>
                {
                    if (triangle != null)
                    {
                        if (tab.graphics.view.mode == MapView.ViewMode.TopDown)
                        {
                            float y = triangle.IsWall() ? mapCursorOnRightClick.Y : (float)triangle.GetHeightOnTriangle(mapCursorOnRightClick.X, mapCursorOnRightClick.Z);
                            CopyUtilities.CopyPosition(new Vector3(mapCursorOnRightClick.X, y, mapCursorOnRightClick.Z));
                        }
                    }
                };
                myItem.DropDownItems.Add(itemCopyPosition);

                menu.Items.Add(myItem);
            }