PathPoint[] GatherPathVerticies(uint pathID) { List <PathPoint> path = new List <PathPoint>(); PathUnit[] paths = Singleton <PathManager> .instance.m_pathUnits.m_buffer; NetSegment[] segments = netMan.m_segments.m_buffer; NetNode[] nodes = netMan.m_nodes.m_buffer; //Log.debug("Gathering path..."); uint segment = paths[pathID].GetPosition(0).m_segment; uint startNode, endNode; startNode = segments[segment].m_startNode; //verts.Add(lastPoint); while (true) { for (int i = 0; i < paths[pathID].m_positionCount; i++) { PathUnit.Position p = paths[pathID].GetPosition(i); if (p.m_segment != 0) { /* segment = p.m_segment; * startNode = segments[segment].m_startNode; * endNode = segments[segment].m_endNode; * * Vector3 startPos = nodes[startNode].m_position;// +(Vector3.Cross(Vector3.up, segment.m_startDirection) * 5.0f); * Vector3 endPos = nodes[endNode].m_position;// +(Vector3.Cross(Vector3.up, segment.m_endDirection) * -5.0f); * * Vector3 pv = Vector3.Lerp(startPos,endPos,(float)p.m_offset / 255.0f); */ Vector3 pv = PathManager.CalculatePosition(p); PathPoint newPoint; newPoint.x = pv.x; newPoint.y = pv.y; newPoint.z = pv.z; newPoint.segmentID = p.m_segment; path.Add(newPoint); // verts.Add(endPos); //List<Vector3> segmentVerts = new List<Vector3>(); //verts.Add(startNode.m_position); /* * if (!NetSegment.IsStraight(startNode.m_position, segment.m_startDirection, endNode.m_position, segment.m_endDirection)) * { * Vector3 mp1, mp2; * NetSegment.CalculateMiddlePoints( * startNode.m_position, segment.m_startDirection, * endNode.m_position, segment.m_endDirection, * true, true, out mp1, out mp2); * verts.Add(mp1); * verts.Add(mp2); * }*/ //verts.Add(endNode.m_position); } } if (paths[pathID].m_nextPathUnit == 0) { //Log.debug("Done"); return(path.ToArray()); } pathID = paths[pathID].m_nextPathUnit; } }