support don't export tree

This commit is contained in:
codetypes committed 2024-06-09 00:01:29 +08:00
1 parent 815155a5ee
commit e6483f7743
8 files changed
+38 -27

No files matched your search

+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "behavior3editor", "name": "behavior3editor",
"version": "1.3.0", "version": "1.4.0",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "behavior3editor", "name": "behavior3editor",
"version": "1.3.0", "version": "1.4.0",
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "behavior3editor", "name": "behavior3editor",
"version": "1.3.0", "version": "1.4.0",
"main": "dist-electron/main/index.js", "main": "dist-electron/main/index.js",
"description": "行为树编辑器", "description": "行为树编辑器",
"author": "zhandouxiaojiji & codetypes", "author": "zhandouxiaojiji & codetypes",
+1
View File
@@ -71,6 +71,7 @@
"tree.overview": "Overview", "tree.overview": "Overview",
"tree.name": "Tree name", "tree.name": "Tree name",
"tree.desc": "Tree desc", "tree.desc": "Tree desc",
"tree.export": "Export",
"regnode.input": "Input: ", "regnode.input": "Input: ",
"regnode.output": "Output: ", "regnode.output": "Output: ",
+1
View File
@@ -71,6 +71,7 @@
"tree.overview": "概况", "tree.overview": "概况",
"tree.name": "行为树", "tree.name": "行为树",
"tree.desc": "说明", "tree.desc": "说明",
"tree.export": "导出",
"regnode.input": "输入:", "regnode.input": "输入:",
"regnode.output": "输出:", "regnode.output": "输出:",
+4 -8
View File
@@ -383,8 +383,9 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
}; };
const updateTree = (editTree: EditTree) => { const updateTree = (editTree: EditTree) => {
if (editor.desc !== editTree.data.desc) { if (editor.desc !== editTree.data.desc || editor.export !== editTree.data.export) {
editor.desc = editTree.data.desc || ""; editor.desc = editTree.data.desc || "";
editor.export = editTree.data.export !== false;
onChange(); onChange();
} }
}; };
@@ -405,13 +406,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
}); });
setItemState(editor.selectedId, "selected", true); setItemState(editor.selectedId, "selected", true);
} else { } else {
workspace.onEditingTree({ workspace.onEditingTree(editor);
data: {
name: editor.name,
desc: editor.desc,
root: null!,
},
});
} }
}; };
@@ -598,6 +593,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
const treeModel = { const treeModel = {
name: Path.basenameWithoutExt(path), name: Path.basenameWithoutExt(path),
root, root,
export: editor.export,
desc: editor.desc, desc: editor.desc,
} as TreeModel; } as TreeModel;
fs.writeFileSync(path, JSON.stringify(treeModel, null, 2)); fs.writeFileSync(path, JSON.stringify(treeModel, null, 2));
+5 -3
View File
@@ -38,16 +38,15 @@ const TreeInspector: FC = () => {
form.resetFields(); form.resetFields();
form.setFieldValue("name", data.name); form.setFieldValue("name", data.name);
form.setFieldValue("desc", data.desc); form.setFieldValue("desc", data.desc);
form.setFieldValue("export", data.export !== false);
}, [workspace.editingTree]); }, [workspace.editingTree]);
const finish = (values: any) => { const finish = (values: any) => {
const data = {} as TreeModel;
data.name = values.name;
data.desc = values.desc || undefined;
workspace.editing?.dispatch("updateTree", { workspace.editing?.dispatch("updateTree", {
data: { data: {
name: values.name, name: values.name,
desc: values.desc || undefined, desc: values.desc || undefined,
export: values.export,
}, },
} as EditTree); } as EditTree);
}; };
@@ -68,6 +67,9 @@ const TreeInspector: FC = () => {
<Form.Item name="desc" label={t("tree.desc")}> <Form.Item name="desc" label={t("tree.desc")}>
<TextArea autoSize onBlur={form.submit} /> <TextArea autoSize onBlur={form.submit} />
</Form.Item> </Form.Item>
<Form.Item name="export" label={t("tree.export")} valuePropName="checked">
<Switch onChange={() => form.submit()} />
</Form.Item>
</Form> </Form>
</div> </div>
</> </>
+23 -13
View File
@@ -11,6 +11,7 @@ import React from "react";
import { create } from "zustand"; import { create } from "zustand";
import { useSetting } from "./setting-context"; import { useSetting } from "./setting-context";
import { ipcRenderer } from "electron"; import { ipcRenderer } from "electron";
import { Editor } from "../components/editor";
let buildDir: string | undefined; let buildDir: string | undefined;
@@ -42,6 +43,7 @@ export class EditorStore {
path: string; path: string;
data: TreeGraphData; data: TreeGraphData;
desc: string; desc: string;
export: boolean;
name: string; name: string;
autoId: number = 1; autoId: number = 1;
@@ -66,6 +68,7 @@ export class EditorStore {
const file = readJson(path) as TreeModel; const file = readJson(path) as TreeModel;
this.data = b3util.createTreeData(file.root); this.data = b3util.createTreeData(file.root);
this.desc = file.desc ?? ""; this.desc = file.desc ?? "";
this.export = file.export !== false;
this.name = file.name || path.slice(0, -5); this.name = file.name || path.slice(0, -5);
this.autoId = b3util.refreshTreeDataId(this.data); this.autoId = b3util.refreshTreeDataId(this.data);
this.historyStack.push(b3util.createNode(this.data)); this.historyStack.push(b3util.createNode(this.data));
@@ -153,7 +156,7 @@ export type WorkspaceStore = {
// edit tree // edit tree
editingTree?: EditTree | null; editingTree?: EditTree | null;
onEditingTree: (tree: EditTree | null) => void; onEditingTree: (editor: EditorStore) => void;
// node setting // node setting
nodeDefs: Map<string, NodeDef>; nodeDefs: Map<string, NodeDef>;
@@ -275,8 +278,12 @@ export const useWorkspace = create<WorkspaceStore>((set, get) => ({
let hasError = false; let hasError = false;
workspace.allFiles.forEach((file) => { workspace.allFiles.forEach((file) => {
const buildpath = buildDir + "/" + workspace.relative(file.path); const buildpath = buildDir + "/" + workspace.relative(file.path);
console.log("build:", buildpath);
const treeModel = b3util.createBuildData(file.path); const treeModel = b3util.createBuildData(file.path);
if (treeModel && treeModel.export === false) {
console.log("skip:", buildpath);
return;
}
console.log("build:", buildpath);
if (!b3util.checkNodeData(treeModel?.root)) { if (!b3util.checkNodeData(treeModel?.root)) {
hasError = true; hasError = true;
} }
@@ -396,15 +403,7 @@ export const useWorkspace = create<WorkspaceStore>((set, get) => ({
if (editor.editNode) { if (editor.editNode) {
workspace.onEditingNode(editor.editNode); workspace.onEditingNode(editor.editNode);
} else { } else {
set({ workspace.onEditingTree(editor);
editingTree: {
data: {
name: editor.name,
desc: editor.desc,
root: null!,
},
},
});
} }
} else { } else {
set({ editingNode: null, editingTree: null }); set({ editingNode: null, editingTree: null });
@@ -556,12 +555,23 @@ export const useWorkspace = create<WorkspaceStore>((set, get) => ({
}, },
// tree edit // tree edit
onEditingTree: (tree) => { onEditingTree: (editor) => {
const workspace = get(); const workspace = get();
if (workspace.editing) { if (workspace.editing) {
workspace.editing.editNode = null; workspace.editing.editNode = null;
} }
set({ editingTree: tree, editingNodeDef: null, editingNode: null }); set({
editingTree: {
data: {
name: editor.name,
desc: editor.desc,
export: editor.export,
root: null!,
},
},
editingNodeDef: null,
editingNode: null,
});
}, },
// node def // node def
+1
View File
@@ -43,6 +43,7 @@ export interface NodeModel {
export interface TreeModel { export interface TreeModel {
name: string; name: string;
desc?: string; desc?: string;
export?: boolean;
root: NodeModel; root: NodeModel;
} }