forked from Calamari/BehaviorTree.js
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbtree.min.js
More file actions
10 lines (10 loc) · 3.86 KB
/
btree.min.js
File metadata and controls
10 lines (10 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
/**
* BehaviorTree.js
* https://github.com/Calamari/BehaviorTree.js
*
* Copyright 2013, Georg Tavonius
* Licensed under the MIT license.
*
* Version: 0.9.2
*/
(function(e){"use strict";var t=0,n;n=Base.extend({constructor:function(e){t+=1,this.title=e.title||"btree"+t,this._rootNode=e.tree,this._object=e.object},setObject:function(e){this._object=e},step:function(){this._started&&console.log('the BehaviorTree "'+this.title+'" did call step but one Task did not finish on last call of step.'),this._started=!0;var e=n.getNode(this._rootNode);this._actualNode=e,e.setControl(this),e.start(this._object),e.run(this._object)},running:function(){this._started=!1},success:function(){this._actualNode.end(this._object),this._started=!1},fail:function(){this._actualNode.end(this._object),this._started=!1}}),n._registeredNodes={},n.register=function(e,t){typeof e=="string"?this._registeredNodes[e]=t:this._registeredNodes[e.title]=e},n.getNode=function(e){var t=e instanceof n.Node?e:this._registeredNodes[e];return t||console.log('The node "'+e+'" could not be looked up. Maybe it was never registered?'),t},e.BehaviorTree=n})(window),function(e){(function(e,t){"use strict";var n=t.extend({constructor:function(e){this.base(e)},start:function(){},end:function(){},run:function(){console.log("Warning: run of "+this.title+" not implemented!"),this.fail()},setControl:function(e){this._control=e},running:function(){this._control.running(this)},success:function(){this._control.success()},fail:function(){this._control.fail()}});e.Node=n})(BehaviorTree,Base),"use strict";var t=e.Node.extend({constructor:function(e){this.base(e),this.children=this.nodes||[]},start:function(){this._actualTask=0},run:function(e){this._object=e,this.start(),this._actualTask<this.children.length&&this._run(),this.end()},_run:function(){var t=e.getNode(this.children[this._actualTask]);this._runningNode=t,t.setControl(this),t.start(this._object),t.run(this._object)},running:function(e){this._nodeRunning=e,this._control.running(e)},success:function(){this._nodeRunning=null,this._runningNode.end(this._object)},fail:function(){this._nodeRunning=null,this._runningNode.end(this._object)}});e.BranchNode=t,"use strict";var n=e.BranchNode.extend({success:function(){this.base(),this._control.success()},fail:function(){this.base(),this._actualTask+=1,this._actualTask<this.children.length?this._run(this._object):this._control.fail()}});e.Priority=n,"use strict";var r=e.BranchNode.extend({_run:function(){this._nodeRunning?(this._nodeRunning.run(this._object),this._nodeRunning=null):this.base()},success:function(){this.base(),this._actualTask+=1,this._actualTask<this.children.length?this._run(this._object):this._control.success()},fail:function(){this.base(),this._control.fail()}});e.Sequence=r,"use strict";var i=e.BranchNode.extend({start:function(){this.base(),this._nodeRunning||(this._actualTask=Math.floor(Math.random()*this.children.length))},success:function(){this.base(),this._control.success()},fail:function(){this.base(),this._control.fail()},_run:function(){this._runningNode?this._runningNode.run(this._object):this.base()}});e.Random=i,"use strict";var s=e.Node.extend({});e.Task=s,"use strict";var o=e.Node.extend({constructor:function(t){this.base(t),this.node&&(this.node=e.getNode(this.node))},setNode:function(t){this.node=e.getNode(t)},start:function(){this.node.setControl(this),this.node.start()},end:function(){this.node.end()},run:function(e){this.node.run(e)}});e.Decorator=o,"use strict";var u=e.Decorator.extend({success:function(){this._control.fail()},fail:function(){this._control.success()}});e.InvertDecorator=u,"use strict";var a=e.Decorator.extend({success:function(){this._control.success()},fail:function(){this._control.success()}});e.AlwaysSucceedDecorator=a,"use strict";var f=e.Decorator.extend({success:function(){this._control.fail()},fail:function(){this._control.fail()}});e.AlwaysFailDecorator=f}(BehaviorTree);