Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[Feature] Node cost #15

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

wlfio
Copy link

@wlfio wlfio commented Aug 24, 2020

Whilst working on my own project i found i wanted to include a cost into node, so that the pathing would avoid them if possible.

So I have implemented it and will let you decide if you want it. (this also addresses issue #14)

I have implemented it so that it is non breaking, as it only enables if the developer sets a previously non existant option.

0 = walkable
2 = walkable but not prefered
5 = not walkable

let myMatrix = [
  [0, 0, 2, 2, 2, 2, 0, 0],
  [0, 0, 2, 2, 2, 2, 0, 5],
  [0, 0, 5, 5, 0, 5, 5, 0],
  [0, 0, 5, 0, 0, 0, 5, 0],
  [0, 0, 0, 0, 0, 0, 5, 0],
  [5, 5, 5, 0, 5, 0, 5, 0],
  [0, 0, 0, 0, 5, 0, 5, 0],
  [0, 0, 5, 0, 0, 0, 0, 0]
];

this.aStarInstance = new AStarFinder({
  grid: {
    matrix: myMatrix,
    maxCost: 5,
  }
});

Examples:

I wanted the wires to avoid blocking the pins on the chips if possible to make it easier for later wire to path to them.

2020-08-24_00-45-35_firefox

So with my cost feature i added an extra cost to the nodes just above and below a chip. now it paths like this.

2020-08-24_00-44-50_firefox

But if it MUST go into a space because going around is impossible or far too costly it will

2020-08-24_00-46-04_firefox

Developers using the feature can set their own cost values to make things even les desirable if they wished, this could for instance be used in a game to avoid different types of terrain if possible, unless the path arround is far too long.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants