/// <summary> /// Append a new Segment /// </summary> /// <returns></returns> public SMPathSegment Append() { SMPathSegment newSeg = new SMPathSegment(); this._nextSegement = newSeg; First.InitializeRecurse(); return(newSeg); }
/// Recursivley make a clone of this item /// </summary> /// <returns>New cloned instance</returns> public override SMPath Clone() { SMPathSegment newPathOut = base.Clone() as SMPathSegment; newPathOut._gridDistance = _gridDistance; if (Next != null) { newPathOut._nextSegement = Next.Clone() as SMPathSegment; } return(newPathOut); }
/// <summary> /// Set vertical, Index , and FirstSegment /// </summary> public void InitializeRecurse() { bool vertical = Vertical; int index = 1; SMPathSegment pathSeg = Next; while (pathSeg != null) { vertical = !vertical; pathSeg.Initialize(this, vertical, index++); pathSeg = pathSeg.Next; } }
public PointF FindEndPoint(PointF gridLoc) { SMPathSegment pathSeg = this; while (pathSeg != null) { if (pathSeg.Vertical) { gridLoc.Y += pathSeg.GridDistance; } else { gridLoc.X += pathSeg.GridDistance; } pathSeg = pathSeg.Next; } return(gridLoc); }