Calamari / BehaviorTree.js

An JavaScript implementation of Behavior Trees.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

how to use decorators?

sunq0001 opened this issue · comments

Why can't it work in this way?

const {InvertDecorator} = require('behaviortree');

for every Decorator nodes, shall I rewrite them all as below?

class InvertDecorator extends Decorator {
//rewrite the codes.
}

Hi @sunq0001.

I am not quite sure if I get the question.
The first line describes how to import the InvertDecorator class into your code and the second snippet describes how to write a new one, if you would want to create one.

If you want to simply use decorators that are already written, then you can do this for example (that's how the README.md states):

const decoratedSequence = new InvertDecorator({
  node: 'awesome sequence doing stuff'
})

which needs some node (in that contrived example probably a sequence) registered. Maybe like this:

BehaviorTree.register('test sequence', mySequence)

Another example how to use it, you can also find within the spec-files. Take a look at src/decorators/InvertDecorator.spec.js for example. (There you can also see that 'awesome sequence doing stuff' can just be a previously instantiated node as well.)

Does this help?

@Calamari
thanks for your reply.
i just found that i cannot require the decorators in a directly way
const {InvertDecorator} = require('behaviortree');
console.log(InverDecorator) //undefined
but anyway, i found i can use BehaviorTreeImporter to import decorators, this consider the problem is solved.
thanks a lot man.

Soooo … @sunq0001

Now I understood the core problem, and have to admit, you are right, there was no easy way to load the built-in decorators. 🤦
But I added those exports in v2.0.3 now. And mentioned those in the README.

I hope it helps and it is easier now.

how to wrap a node with a decorator?
any example

const decoratedSequence = new InvertDecorator({
  node: 'awesome sequence doing stuff'
  run: function (somethingToCheck) {
   return SUCCESS
  }
})