public SpatialCell_ObjData(SpatialCell_InitParams InitParams) : base(InitParams) { if (InitParams is SpatialCell_ObjDataParams) { OurCellInfo = (InitParams as SpatialCell_ObjDataParams).CellInfo; } }
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++; } } }
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(); }
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; }
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); } } }
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++; } } }