Zoekt routes om obstakels heen, over een raster van punten (nodes) op de vloer.
Meer...
|
| | PathFinder (Vector2 aa, Vector2 bb, Vector2 offset, float yMin, float yMax, float spaceBetweenNodes) |
| | Een PathFinder voor het gebied van aa tot bb (x en z), met om de spaceBetweenNodes een node.
|
| void | CreateMapAsync () |
| void | CreateMap () |
| void | RecreateMapPartAsync (Vector2 topleft, Vector2 bottomright) |
| void | RecreateMapPart (Vector2 topleft, Vector2 bottomright) |
| | Kijk in een deel van de kaart opnieuw wat vrij is (bijvoorbeeld als er een muur is gebouwd of weggehaald).
|
| int | CreateRouteAsync (Vector2 start, Vector2 destination, List< Vector2 > pointsToAvoidAdditionally=null) |
| Enums.PathFinderStatus | GetRouteStatus (int id) |
| List< Vector2 > | GetCreatedRoute (int id) |
| void | Destroy () |
| List< Vector2 > | CreateRoute (Vector2 start, Vector2 destination, List< Vector2 > avoidPositionsOnce=null) |
| | Een route van start naar destination: de posities van de nodes die je langs moet (de eerste is de node het dichtst bij start).
|
|
| virtual bool | PositionFree (Vector2 pos) |
| | Is de node op deze positie vrij?
|
| Vector2 | NodePosition (Vector2 position) |
| | De positie van de node waarin deze positie valt (buiten de kaart: de dichtstbijzijnde node aan de rand).
|
| bool | NodeBlocked (Vector2 position) |
| | Is de node waarin deze positie valt niet begaanbaar? (false zolang er nog geen kaart is).
|
| List< Vector2 > | NodePositionsInRectangle (Vector2 topleft, Vector2 bottomright) |
| | De posities van alle nodes binnen een rechthoek (randen inbegrepen), bijvoorbeeld voor avoidPositionsOnce.
|
Zoekt routes om obstakels heen, over een raster van punten (nodes) op de vloer.
Maak eerst de kaart met CreateMap() of CreateMapAsync(), en vraag daarna een route op met CreateRoute() (meteen) of CreateRouteAsync() (op de achtergrond).
Sinds september 2026 (GDF 26.0c) rekent de PathFinder met A* (zelfde mogelijkheden en methodes, alleen veel sneller):
- de kaart is een rij van ja/nee-waarden (vrij of niet), en een node is gewoon een nummer;
- de nodes die nog bekeken moeten worden, staan in een 'heap': de beste pakken gaat meteen, zonder te sorteren;
- niets hoeft per route leeggemaakt te worden: elke node onthoudt bij welke zoektocht zijn waarden horen;
- van tevoren is bekend welke nodes elkaar kunnen bereiken, dus een onbereikbaar doel kost geen zoekwerk;
- elke draad heeft een eigen zoekgeheugen: CreateRoute en CreateRouteAsync mogen tegelijk bezig zijn.
Een eigen versie maken kan door van PathFinder te erven: overschrijf PositionFree() om zelf te bepalen welke plekken vrij zijn, en gebruik NodePosition(), NodeBlocked() en NodePositionsInRectangle() (zie GDF_CaptainCoop, PathFinderCoop).
De documentatie voor deze klasse is gegenereerd op basis van het volgende bestand: