public LocalGeometryView GetErodedView(double actorRadius) { if (views.TryGetValue(actorRadius, out LocalGeometryView cachedView)) { return(cachedView); } var preview = PreviewViewManager == this ? null : PreviewViewManager.GetErodedView(actorRadius); return(views[actorRadius] = new LocalGeometryView(this, actorRadius, preview)); }
public LocalGeometryView(LocalGeometryViewManager localGeometryViewManager, double holeDilationRadius, LocalGeometryView preview) { LocalGeometryViewManager = localGeometryViewManager; HoleDilationRadius = holeDilationRadius; Preview = preview ?? this; CrossoverErosionRadius = (int)Math.Ceiling((double)(HoleDilationRadius * 2)); CrossoverDilationFactor = (CrossoverErosionRadius / 2) + kCrossoverAdditionalPathingDilation; var padding = (int)Math.Ceiling(HoleDilationRadius) + 10; ClipperExtentsHoleClipPolygon = Polygon2.CreateRect( -ClipperBase.loRange + padding, -ClipperBase.loRange + padding, ClipperBase.loRange * 2 - padding * 2, ClipperBase.loRange * 2 - padding * 2); }