public SpatialCell_ObjData(SpatialCell_InitParams InitParams) : base(InitParams)
 {
     if (InitParams is SpatialCell_ObjDataParams)
     {
         OurCellInfo = (InitParams as SpatialCell_ObjDataParams).CellInfo;
     }
 }
Example #2
0
        public SpatialGrid(GraphicsClass InGraphics, KynogonRuntimeMesh mesh)
        {
            OwnGraphicsClass = InGraphics;

            bIsReady = true;
            var min = new Vector3(mesh.BoundMin, float.MinValue);
            var max = new Vector3(mesh.BoundMax, float.MaxValue);

            gridBounds = new BoundingBox(min, max);

            width    = mesh.CellSizeY;
            height   = mesh.CellSizeX;
            origin   = new Vector3(gridBounds.Minimum.X, gridBounds.Minimum.Y, 0.0f);
            cellSize = new Vector2(gridBounds.GetWidth() / width, gridBounds.GetHeight() / height);
            cells    = new SpatialCell[width * height];

            Vector3 TempMin = gridBounds.Minimum;
            Vector3 TempMax = gridBounds.Maximum;

            var index = 0;

            for (int i = 0; i < width; i++)
            {
                for (int x = 0; x < height; x++)
                {
                    KynogonRuntimeMesh.Cell cell = mesh.Cells[index];

                    foreach (var set in cell.Sets)
                    {
                        if (gridBounds.Minimum.Z < set.X)
                        {
                            TempMin.Z = set.X;
                        }
                        if (gridBounds.Maximum.Z > set.Y)
                        {
                            TempMax.Z = set.Y;
                        }
                    }

                    // Construct cell extents
                    Vector3     Minimum     = new Vector3(origin.X + cellSize.X * x, origin.Y + cellSize.Y * i, 0.0f);
                    Vector3     Maximum     = new Vector3(origin.X + cellSize.X * (x + 1), origin.Y + cellSize.Y * (i + 1), 0.0f);
                    BoundingBox CellExtents = new BoundingBox(Minimum, Maximum);

                    // Construct Init params
                    SpatialCell_ObjDataParams InitParams = new SpatialCell_ObjDataParams();
                    InitParams.OwnGraphics = OwnGraphicsClass;
                    InitParams.CellExtents = CellExtents;
                    InitParams.CellInfo    = cell;

                    // Construct ObjData cell
                    SpatialCell_ObjData ObjDataCell = new SpatialCell_ObjData(InitParams);
                    ObjDataCell.PreInitialise();
                    cells[index] = ObjDataCell;

                    index++;
                }
            }
        }
Example #3
0
        public void Init(KynogonRuntimeMesh.Cell cell)
        {
            this.cell = cell;

            DoRender = true;

            foreach (var set in cell.Sets)
            {
                foreach (var unk10 in set.unk10Boxes)
                {
                    RenderLine line = new RenderLine();
                    line.SetUnselectedColour(System.Drawing.Color.Turquoise);
                    line.InitSwap(new Vector3[2] {
                        unk10.B1.Maximum, unk10.B1.Minimum
                    });
                    Lines.Add(line);
                }

                foreach (var unk12 in set.unk12Boxes)
                {
                    RenderLine line = new RenderLine();
                    line.SetUnselectedColour(System.Drawing.Color.Green);
                    line.InitSwap(new Vector3[2] {
                        unk12.B1.Maximum, unk12.B1.Minimum
                    });
                    Lines.Add(line);
                }

                foreach (var unk14 in set.unk14Boxes)
                {
                    RenderLine line = new RenderLine();
                    line.SetUnselectedColour(System.Drawing.Color.Yellow);
                    line.InitSwap(unk14.Points);
                    Lines.Add(line);
                }

                foreach (var unk16 in set.EdgeBoxes)
                {
                    RenderLine line = new RenderLine();
                    line.SetUnselectedColour(System.Drawing.Color.Brown);
                    line.InitSwap(new Vector3[2] {
                        unk16.Maximum, unk16.Minimum
                    });
                    Lines.Add(line);
                }

                foreach (var unk18 in set.unk18Set)
                {
                    RenderLine line = new RenderLine();
                    line.SetUnselectedColour(System.Drawing.Color.Red);
                    line.InitSwap(unk18.Points);
                    Lines.Add(line);
                }
            }

            Update();
        }
Example #4
0
        public SpatialCell(KynogonRuntimeMesh.Cell cellData, BoundingBox extents)
        {
            assets = new Dictionary <int, IRenderer>();
            RenderNavCell cell = new RenderNavCell();

            cell.Init(cellData);
            assets.Add(StringHelpers.GetNewRefID(), cell);
            boundingBox = extents;
        }
Example #5
0
        public void Init(KynogonRuntimeMesh.Cell cell)
        {
            this.cell     = cell;
            DoRender      = true;
            boundingBoxes = new List <RenderBoundingBox>();
            lines         = new List <RenderLine>();

            foreach (var set in cell.Sets)
            {
                foreach (var unk10 in set.unk10Boxes)
                {
                    RenderLine line = new RenderLine();
                    line.SetUnselectedColour(System.Drawing.Color.Turquoise);
                    line.InitSwap(new Vector3[2] {
                        unk10.B1.Maximum, unk10.B1.Minimum
                    });
                    lines.Add(line);
                }

                foreach (var unk12 in set.unk12Boxes)
                {
                    RenderLine line = new RenderLine();
                    line.SetUnselectedColour(System.Drawing.Color.Green);
                    line.InitSwap(new Vector3[2] {
                        unk12.B1.Maximum, unk12.B1.Minimum
                    });
                    lines.Add(line);
                }

                foreach (var unk14 in set.unk14Boxes)
                {
                    RenderLine line = new RenderLine();
                    line.SetUnselectedColour(System.Drawing.Color.FromArgb(253, 253, 34));
                    line.InitSwap(unk14.Points);
                    lines.Add(line);
                }

                foreach (var unk16 in set.EdgeBoxes)
                {
                    RenderLine line = new RenderLine();
                    line.SetUnselectedColour(System.Drawing.Color.FromArgb(253, 253, 34));
                    line.InitSwap(new Vector3[2] {
                        unk16.Maximum, unk16.Minimum
                    });
                    lines.Add(line);
                }

                foreach (var unk18 in set.unk18Set)
                {
                    RenderLine line = new RenderLine();
                    line.SetUnselectedColour(System.Drawing.Color.White);
                    line.InitSwap(unk18.Points);
                    lines.Add(line);
                }
            }
        }
Example #6
0
        public SpatialGrid(KynogonRuntimeMesh mesh)
        {
            bIsReady = true;
            var min = new Vector3(mesh.BoundMin, float.MinValue);
            var max = new Vector3(mesh.BoundMax, float.MaxValue);

            gridBounds = new BoundingBox(min, max);

            width    = mesh.CellSizeY;
            height   = mesh.CellSizeX;
            origin   = new Vector3(gridBounds.Minimum.X, gridBounds.Minimum.Y, 0.0f);
            cellSize = new Vector2(gridBounds.Width / width, gridBounds.Height / height);
            cells    = new SpatialCell[width * height];

            var index = 0;

            for (int i = 0; i < width; i++)
            {
                for (int x = 0; x < height; x++)
                {
                    KynogonRuntimeMesh.Cell cell = mesh.Cells[index];

                    foreach (var set in cell.Sets)
                    {
                        if (gridBounds.Minimum.Z < set.X)
                        {
                            gridBounds.Minimum.Z = set.X;
                        }
                        if (gridBounds.Maximum.Z > set.Y)
                        {
                            gridBounds.Maximum.Z = set.Y;
                        }
                    }

                    var extents = new BoundingBox();
                    extents.Minimum = new Vector3(origin.X + cellSize.X * x, origin.Y + cellSize.Y * i, 0.0f);
                    extents.Maximum = new Vector3(origin.X + cellSize.X * (x + 1), origin.Y + cellSize.Y * (i + 1), 0.0f);
                    cells[index]    = new SpatialCell(cell, extents);

                    index++;
                }
            }
        }