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.

49 lines (42 loc) 1.46 kB
'use strict'; (function () { /** * Used for setting base properties of node items. Like 'inverseCheckCondition' in decorator */ class SetTreeNodeTypeAction { constructor(_, ActionExecutor, TreeStore, TreeNodeItemProperty, TreeNode) { this._ = _; this._ActionExecutor = ActionExecutor; this._TreeStore = TreeStore; this._TreeNode = TreeNode; } /** * @param {object} params * @param {node} params.node * @param {Object} params.desc - new node descriptor */ exec(params) { let _this = this; let oldDesc = params.node.$meta.desc; let oldProperties = params.node.properties; this._ActionExecutor.exec({ exec: () => { params.node.$meta.desc = params.desc; params.node.type = params.desc.name; params.node.properties = this._.pickBy(oldProperties, (_, p) => params.desc.properties && params.desc.properties.find(dp => dp.name === p)); _this._TreeStore.updateVersion(); _this._TreeNode.updateVersion(params.node); }, undo: () => { params.node.$meta.desc = oldDesc; params.node.type = oldDesc.name; params.node.properties = oldProperties; _this._TreeStore.updateVersion(); _this._TreeNode.updateVersion(params.node); } }); } } angular.module('editorApp') .service('SetTreeNodeTypeAction', SetTreeNodeTypeAction); })();