public void UpdatePos(int idx, Vector3 pos) { pointInfo current = _pointList[idx]; pointInfo previous = _pointList[idx].previous; pointInfo next = _pointList[idx].next; current.worldPos = pos; if (previous != null) { previous.Update(previous.worldPos, pos); } if (next != null) { current.Update(pos, next.worldPos); } }
public int AddPoint(Vector3 worldPos) { // extend int tail = (_head + _activeCnt) % _pointList.Count; if (_activeCnt == _pointList.Count) { _pointList.Insert(tail, CreatePointInfo(worldPos)); } pointInfo pi = _pointList[tail]; pi.worldPos = worldPos; if (_endPoint != null) { _endPoint.next = pi; pi.previous = _endPoint; _endPoint.Active(Time.timeSinceLevelLoad); _endPoint.Update(_endPoint.worldPos, worldPos); } _endPoint = pi; ++_activeCnt; return(tail); }