mirror of
https://gitee.com/sli97/behavior-eden-coco-plugin.git
synced 2024-12-26 11:49:07 +00:00
80 lines
2.9 KiB
JavaScript
80 lines
2.9 KiB
JavaScript
// @ts-nocheck
|
|
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.ready = exports.update = exports.$ = exports.template = void 0;
|
|
exports.template = `
|
|
<div style="display:flex;justify-content:center;align-items:center;margin-top:10px;padding-right:8px;">
|
|
<ui-button class="editor" style="height:24px;padding:0 16px;">Edit Tree</ui-prop>
|
|
</div>
|
|
|
|
`;
|
|
exports.$ = {
|
|
editor: ".editor",
|
|
};
|
|
function update(dump) {
|
|
// 使用 ui-porp 自动渲染,设置 prop 的 type 为 dump
|
|
// render 传入一个 dump 数据,能够自动渲染出对应的界面
|
|
// 自动渲染的界面修改后,能够自动提交数据
|
|
if (typeof this.$.editor.render === "function") {
|
|
this.$.editor.render(dump.value.label);
|
|
}
|
|
}
|
|
exports.update = update;
|
|
function ready() {
|
|
this.$.editor.addEventListener("confirm", async () => {
|
|
const BehaviorTreeComponentName = "BehaviorTree";
|
|
// 找到点击组件的节点
|
|
const node = await Editor.Message.request("scene", "query-node", Editor.Selection.getSelected("node"));
|
|
if (!node) {
|
|
console.warn(`未选中节点`);
|
|
}
|
|
// 找到BehaviorTree组件
|
|
const index = node.__comps__.findIndex((v) => v.type === BehaviorTreeComponentName);
|
|
if (index === -1) {
|
|
console.warn(`节点未挂载【${BehaviorTreeComponentName}】组件`);
|
|
return;
|
|
}
|
|
const component = node.__comps__[index];
|
|
// 调用BehaviorTree组件上的方法获取json文件
|
|
const json = await Editor.Message.request("scene", "execute-component-method", {
|
|
uuid: component.value.uuid.value,
|
|
name: "getAssetUrl",
|
|
});
|
|
// JSON文件不存在
|
|
if (!json) {
|
|
// 生成文件
|
|
const url = `db://assets/${node.name.value}.json`;
|
|
const content = JSON.stringify({ nodes: [] });
|
|
const res = await Editor.Message.request("asset-db", "create-asset", url, content, {
|
|
overwrite: false,
|
|
rename: true,
|
|
});
|
|
console.log(`已经自动生成${res.name}文件`);
|
|
// 设置属性
|
|
const uuid = res.uuid;
|
|
const success = await Editor.Message.request("scene", "set-property", {
|
|
uuid: node.uuid.value,
|
|
path: `__comps__.${index}.asset`,
|
|
dump: {
|
|
type: "cc.JsonAsset",
|
|
value: {
|
|
uuid,
|
|
},
|
|
},
|
|
});
|
|
if (success) {
|
|
console.log(`JSON文件挂载成功`);
|
|
Editor.Message.request("behavior-eden", "open-panel");
|
|
}
|
|
else {
|
|
console.warn("JSON文件挂载失败");
|
|
}
|
|
}
|
|
else {
|
|
// 打开插件面板
|
|
Editor.Message.request("behavior-eden", "open-panel");
|
|
}
|
|
});
|
|
}
|
|
exports.ready = ready;
|