UNPKG

owl-bt

Version:

owl-bt is editor for Behavior trees. It has been inspired by Unreal engine behavior trees in a way, that it supports special node items like decorators and services. This makes trees smaller and much more readable.

46 lines (42 loc) 1.53 kB
(function () { 'use strict'; class AddTreeNodeItemAction { constructor(ActionExecutor, TreeStore, TreeNode) { this._ActionExecutor = ActionExecutor; this._TreeStore = TreeStore; this._TreeNode = TreeNode; } /** * @param {object} params * @param {node} params.node - node to which should be the item added * @param {node} params.item - item that should be added * @param {string} params.itemType - 'service' or 'decorator' or 'node' * @param {int} params.index - (optional) target index. Item is added to the end if not provided */ exec(params) { let _this = this; this._ActionExecutor.exec({ exec: () => { if (params.itemType === 'node') { _this._TreeNode.addChildNodeAt(params.node, params.item, params.index); } else { _this._TreeNode.addSubItemAt(params.node, params.item, params.itemType, params.index); } _this._TreeStore.updateVersion(); _this._TreeNode.updateVersion(params.node); }, undo: () => { if (params.itemType === 'node') { _this._TreeNode.removeChildNode(params.node, params.item); } else { _this._TreeNode.removeSubItem(params.node, params.item); } _this._TreeStore.updateVersion(); _this._TreeNode.updateVersion(params.node); } }); } } angular.module('editorApp') .service('AddTreeNodeItemAction', AddTreeNodeItemAction); })();