public Path(PathTriangle current, Path parent, float distanceToNode) { depth = parent.depth + 1; this.current = current; target = parent.target; this.parent = parent; previousDistance = distanceToNode; distance = current.DistanceToTarget(target); }
private MarchingCubesPathfinder(PathTriangle start, PathTriangle target, PathAccuracy accuracy, float estimatedStepProgress = 0.5f) { this.start = start; this.target = target; pathAccuracy = AccuracyFactor(accuracy); float estimatedLength = start.DistanceToTarget(target); int estimatedQueueSize = (int)Mathf.Clamp(estimatedStepProgress * estimatedLength * (1 - (pathAccuracy / 2)), 10, 10000); pathTails = new BinaryHeap <float, PathTriangle>(float.MinValue, float.MaxValue, estimatedQueueSize / 2); backwardsTails = new BinaryHeap <float, PathTriangle>(float.MinValue, float.MaxValue, estimatedQueueSize / 2); }
public void AddTailUnchecked(PathTriangle p, BinaryHeap <float, PathTriangle> addHere) { float key = p.prevDistance * pathAccuracy + p.DistanceToTarget(target); addHere.Enqueue(key, p); }