/// <summary> /// sets the variables for this object and re-initializes /// </summary> private void Reposition(PathSegmentData d) { pathStart = d.pathStart; pathEnd = d.pathEnd; pathWidth = d.pathWidth; Init(); }
/// <summary> /// spawns the path objects /// </summary> private void SpawnPaths() { foreach (PathSegment v in segments) { GameObject s = (GameObject)Instantiate(segmentPrefab); //create segment s.transform.SetParent(transform); //set this as the parent PathSegmentData d = new PathSegmentData(new Vector2(v.startX, v.startY), new Vector2(v.endX, v.endY), 0.5f); //create data struct s.SendMessage("Reposition", d); //send data to object //if there is no segment that begins at the same place this segment ends, spawn a marker if (segments.Any(x => (x.startX == v.endX) && (x.startY == v.endY)) == false) { GameObject m = (GameObject)Instantiate(enemyGoalMarkerPrefab); m.transform.SetParent(this.transform); m.transform.position = new Vector2(v.endX, v.endY); } } }
/// <summary> Creates the path geometry data. /// </summary> /// <param name="nodes">The nodes.</param> /// <returns></returns> public static PathGeometryData CreatePathGeometryData(IEnumerable <PathNodeData> nodes) { PathGeometryData geometryData = new PathGeometryData(); PathFigureData figure = null; PathSegmentData segment = null; foreach (var node in nodes) { if (node.SegmentType == SegmentType.StartPoint) { figure = new PathFigureData { StartPoint = node.Point, IsClosed = node.IsClosed }; geometryData.Figures.Add(figure); } else { switch (node.SegmentType) { case SegmentType.ArcSegment: throw new NotImplementedException("{C3DB91D2-6511-4274-B60F-99DF3CADF0A3}"); case SegmentType.BezierSegment: throw new NotImplementedException("{D811AFE1-EB44-4671-9F27-E7609AEF8B5B}"); case SegmentType.LineSegment: { figure.Segments.Add(new PathSegmentData { Nodes = { node }, SegmentType = node.SegmentType }); break; } case SegmentType.PolyBezierSegment: throw new NotImplementedException("{3C01C459-4539-4D87-8206-DF1903491B63}"); case SegmentType.PolyLineSegment: { if (node.SegmentIndex == 0) { segment = new PathSegmentData { Nodes = { node }, SegmentType = node.SegmentType }; figure.Segments.Add(segment); } else { segment.Nodes.Add(node); } break; } case SegmentType.PolyQuadraticBezierSegment: throw new NotImplementedException("{61171A80-E52E-4C93-B7DE-DCF9C65B93F3}"); case SegmentType.QuadraticBezierSegment: throw new NotImplementedException("{64CA6FB1-A5B2-4F5E-BE48-5A2E85F6B6B9}"); default: throw new NotImplementedException("{E1D79545-F131-4196-B964-A74CBB99DBFD}"); } } } return(geometryData); }