public void Init(JunctionDefinition data) { if (data.Boundaries != null) { //boundary init if (data.Boundaries.Length > 0) { Vector3[] extraPoints = new Vector3[data.Boundaries.Length + 1]; Array.Copy(data.Boundaries, extraPoints, data.Boundaries.Length); extraPoints[extraPoints.Length - 1] = extraPoints[0]; Boundary = new RenderLine(); Boundary.SetSelectedColour(new Vector4(1.0f, 0.0f, 0.0f, 1.0f)); Boundary.SetUnselectedColour(new Vector4(1.0f)); Boundary.Init(extraPoints); } } if (data.Splines != null) { //do spline Splines = new RenderLine[data.Splines.Length]; for (int i = 0; i < data.Splines.Length; i++) { RenderLine line = new RenderLine(); line.SetUnselectedColour(new Vector4(1.0f, 0.87f, 0f, 1.0f)); line.Init(data.Splines[i].Path); Splines[i] = line; } } DoRender = true; this.data = data; }
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 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); } } }
private RenderLine CreateConnectionLine(OBJData.VertexStruct FromPoint, OBJData.VertexStruct ToPoint, System.Drawing.Color Colour) { RenderLine navigationLine = new RenderLine(); navigationLine.SetUnselectedColour(Colour); navigationLine.SetSelectedColour(System.Drawing.Color.Red); navigationLine.Init(new Vector3[2] { FromPoint.Position, ToPoint.Position }); return(navigationLine); }
private void InitSplines() { if (data.Splines != null) { //do spline Splines = new RenderLine[data.Splines.Length]; for (int i = 0; i < data.Splines.Length; i++) { RenderLine line = new RenderLine(); line.SetUnselectedColour(Color.FromArgb(255, 222, 255)); line.Init(data.Splines[i].Path); Splines[i] = line; } } }
private void InitSplines() { if (data.Splines != null) { //do spline Splines = new RenderLine[data.Splines.Length]; for (int i = 0; i < data.Splines.Length; i++) { RenderLine line = new RenderLine(); line.SetUnselectedColour(new Vector4(1.0f, 0.87f, 0f, 1.0f)); line.Init(data.Splines[i].Path); Splines[i] = line; } } }
private void InitBoundary() { if (data.Boundaries != null) { //boundary init if (data.Boundaries.Length > 0) { Vector3[] extraPoints = new Vector3[data.Boundaries.Length + 1]; Array.Copy(data.Boundaries, extraPoints, data.Boundaries.Length); extraPoints[extraPoints.Length - 1] = extraPoints[0]; Boundary = new RenderLine(); Boundary.SetSelectedColour(Color.Red); Boundary.SetUnselectedColour(Color.White); Boundary.Init(extraPoints); } } }
public void Init(ref Vector3[] points, ResourceTypes.Navigation.LaneProperties lane, ResourceTypes.Navigation.RoadFlags roadFlags) { vertices = new VertexLayouts.BasicLayout.Vertex[points.Length * 2]; indices = new ushort[(vertices.Length - 2) * 3]; int idx = 0; for (int i = 0; i < points.Length; i++) { if (lane.Flags.HasFlag(ResourceTypes.Navigation.LaneTypes.MainRoad) || (lane.Flags.HasFlag(ResourceTypes.Navigation.LaneTypes.IsHighway))) { colour = Color.Blue; } else if (lane.Flags.HasFlag(ResourceTypes.Navigation.LaneTypes.Parking)) { colour = Color.Green; } else if (lane.Flags.HasFlag(ResourceTypes.Navigation.LaneTypes.ExcludeImpassible)) { colour = Color.FromArgb(255, 128, 26, 0); } else if (lane.Flags.HasFlag(ResourceTypes.Navigation.LaneTypes.ExcludeImpassible) && lane.Flags.HasFlag(ResourceTypes.Navigation.LaneTypes.BackRoad)) { colour = Color.FromArgb(255, 128, 51, 230); } else if (lane.Flags.HasFlag(ResourceTypes.Navigation.LaneTypes.BackRoad)) { colour = Color.FromArgb(255, 128, 51, 230); } vertices[idx] = new VertexLayouts.BasicLayout.Vertex(); vertices[idx].Position = points[i]; vertices[idx].Colour = colour.ToArgb(); Vector2 forward = Vector2.Zero; if (i < points.Length - 1) { forward += (new Vector2(points[(i + 1) % points.Length].X, points[(i + 1) % points.Length].Y) - new Vector2(points[i].X, points[i].Y)); } if (i > 0) { forward += new Vector2(points[i].X, points[i].Y) - new Vector2(points[(i - 1) % points.Length].X, points[(i - 1) % points.Length].Y); } forward.Normalize(); Vector3 left = new Vector3(-forward.Y, forward.X, points[i].Z); idx++; vertices[idx] = new VertexLayouts.BasicLayout.Vertex(); float x = 0.0f; float y = 0.0f; if (roadFlags.HasFlag(ResourceTypes.Navigation.RoadFlags.BackwardDirection)) { x = (points[i].X - left.X * lane.Width); y = (points[i].Y - left.Y * lane.Width); } else { x = (points[i].X + left.X * lane.Width); y = (points[i].Y + left.Y * lane.Width); } vertices[idx].Position = new Vector3(x, y, points[i].Z); vertices[idx].Colour = colour.ToArgb(); points[i] = vertices[idx].Position; RenderLine line = new RenderLine(); line.SetUnselectedColour(Color.Blue); line.Init(new Vector3[2] { vertices[idx - 1].Position, vertices[idx].Position }); idx++; ushort sIdx = 0; int indIdx = 0; bool switcheroo = false; while (indIdx < indices.Length) { if (switcheroo == false) { indices[indIdx] = sIdx++; indices[indIdx + 1] = sIdx++; indices[indIdx + 2] = sIdx++; switcheroo = true; } else { indices[indIdx] = sIdx--; indices[indIdx + 1] = sIdx--; indices[indIdx + 2] = sIdx--; switcheroo = false; } sIdx = (ushort)(indices[indIdx + 2] + 1); indIdx += 3; } } }