public float GetCost(Track track, TrackNode start, TrackNode end) { if (start.GetComponent <NodeLink>() == end.GetComponent <NodeLink>()) { return(Int32.MaxValue / 2); } var startPosition = start.transform.position; var endPosition = end.transform.position; var distance = Math.Abs(startPosition.x - endPosition.x) + Math.Abs(startPosition.y - endPosition.y) + Math.Abs(startPosition.z - endPosition.z); var cost = distance / this.baseCostPerDistance; cost *= 1.0f / track.SpeedLimit; return(cost); }