# SceneTree（场景树）

> 类型：管理器/基础设施类 | 继承链：`Tree -> SceneTree`

场景树（objm.sceneTree）。管理场景对象的树形结构与生命周期，节点可被场景树 UI 编辑/拖拽。createSceneObjectTreeItemFromJson 创建对象并挂到节点，对象自动渲染。

## 属性

| 属性 | 类型 | 默认值 | 说明 | 来源 |
| --- | --- | --- | --- | --- |
| `completeJson` | - | - | 获取对象的 JSON 表示，包含所有属性。包括默认值 | SceneTree |
| `contextMenu` | - | - | 获取上下文菜单 | SceneTree |
| `dragStartDataManager` | - | - | 获取拖放起始数据管理器 | SceneTree |
| `json` | - | - | 获取场景树的 JSON 数据 | SceneTree |
| `jsonStr` | - | - | 获取场景树的 JSON 字符串 | SceneTree |
| `name` | - | - | 获取场景树的名称 | SceneTree |
| `projectManager` | - | - | 获取项目管理器 | SceneTree |
| `sceneUiTree` | - | - | 获取场景 UI 树 | SceneTree |
| `showPropUiOnSelecting` | - | - | 获取选择项时是否显示属性 UI 的值 | SceneTree |

## 方法

| 方法 | 参数 | 返回 | 说明 | 来源 |
| --- | --- | --- | --- | --- |
| `~~addNewTreeItem(currentTreeItem: SceneTreeItem | undefined, flag: SceneTreeItemInsertFlag, isGroup: boolean, sceneObject?: ESSceneObject)~~` | currentTreeItem: SceneTreeItem \| undefined, flag: SceneTreeItemInsertFlag, isGroup: boolean, sceneObject?: ESSceneObject | - | ⚠️已废弃 添加新的树项<br>**参数**：currentTreeItem - 当前的树项；flag - 插入标志；isGroup - 是否为组节点；sceneObject - 可选的场景对象<br>**返回**：新添加的树项，如果添加失败则返回 undefined | SceneTree |
| `createGroupTreeItem(name?: string, id?: string, currentTreeItem?: SceneTreeItem, flag?: SceneTreeItemInsertFlag)` | name?: string, id?: string, currentTreeItem?: SceneTreeItem, flag?: SceneTreeItemInsertFlag | - | 创建一个组节点<br>**参数**：name - 可选的组节点名称；id - 可选的组节点 ID；currentTreeItem - 可选的当前树项；flag - 可选的插入标志<br>**返回**：新创建的组节点树项，如果创建失败则返回 undefined | SceneTree |
| `createSceneObjectTreeItem(sceneObjectType: string | (new (id?: string | undefined) => T), id?: string, currentTreeItem?: SceneTreeItem, flag?: SceneTreeItemInsertFlag)` | sceneObjectType: string \| (new (id?: string \| undefined) => T), id?: string, currentTreeItem?: SceneTreeItem, flag?: SceneTreeItemInsertFlag | - | 根据场景对象类型创建场景对象树项<br>**参数**：sceneObjectType - 场景对象的类型，可以是字符串或构造函数；id - 可选的场景对象 ID；currentTreeItem - 可选的当前树项；flag - 可选的插入标志<br>**返回**：新创建的场景对象树项，如果创建失败则返回 undefined | SceneTree |
| `createSceneObjectTreeItemFromClass(sceneObjConstructor: new (id?: string | undefined) => T, id?: string, currentTreeItem?: SceneTreeItem, flag?: SceneTreeItemInsertFlag)` | sceneObjConstructor: new (id?: string \| undefined) => T, id?: string, currentTreeItem?: SceneTreeItem, flag?: SceneTreeItemInsertFlag | - | 根据场景对象构造函数创建场景对象树项<br>**参数**：sceneObjConstructor - 场景对象的构造函数；id - 可选的场景对象 ID；currentTreeItem - 可选的当前树项；flag - 可选的插入标志<br>**返回**：新创建的场景对象树项，如果创建失败则返回 undefined | SceneTree |
| `createSceneObjectTreeItemFromJson(sceneObjectJson: JsonValue & { [k: string]: any; type: string; }, currentTreeItem?: SceneTreeItem, flag?: SceneTreeItemInsertFlag)` | sceneObjectJson: JsonValue & { [k: string]: any; type: string; }, currentTreeItem?: SceneTreeItem, flag?: SceneTreeItemInsertFlag | - | 根据场景对象的 JSON 数据创建场景对象树项<br>**参数**：sceneObjectJson - 场景对象的 JSON 数据；currentTreeItem - 可选的当前树项；flag - 可选的插入标志<br>**返回**：新创建的场景对象树项，如果创建失败则返回 undefined | SceneTree |
| `destroyAllSceneObjectTreeItems()` | - | - | 销毁用户添加的所有场景节点 | SceneTree |
| `destroySceneObjectTreeItem(sceneTreeItem: SceneTreeItem)` | sceneTreeItem: SceneTreeItem | - | 销毁一个场景对象节点<br>**参数**：sceneTreeItem - 要销毁的场景对象树项 | SceneTree |
| `getJson()` | - | - | 获取当前树结构的 Json 数据<br>**返回**：SceneTreeItem 的 isExport 为 true 的 Json 数据 | SceneTree |
| `getTreeItemFromSceneObjId(id: string)` | id: string | - | 根据场景对象的 ID 获取树项<br>**参数**：id - 场景对象的 ID<br>**返回**：对应的树项，如果未找到则返回 undefined | SceneTree |
| `getTreeItemsFromSceneObjName(name: string)` | name: string | - | 根据场景对象的名称获取树项<br>**参数**：name - { string  } 场景对象的名称 例如 ：'全球影像'<br>**返回**：对应的树项节点，如果未找到则返回空数组 | SceneTree |
| `getTreeItemsFromSceneObjType(type: string | string[])` | type: string \| string[] | - | 根据场景对象的类型获取树项<br>**参数**：type - { string \| string[] } 场景对象的类型 例如 ：['ES3DTileset']<br>**返回**：对应的树项节点，如果未找到则返回空数组 | SceneTree |
| `setJson(value: SceneTreeJsonValue)` | value: SceneTreeJsonValue | - | 设置场景树的 JSON 数据<br>**参数**：value - 要设置的 JSON 数据 | SceneTree |
| `~~testAddNewTreeItem(currentTreeItem: SceneTreeItem | undefined, flag: SceneTreeItemInsertFlag)~~` | currentTreeItem: SceneTreeItem \| undefined, flag: SceneTreeItemInsertFlag | - | ⚠️已废弃 监测 addNewTreeItem 是否可以添加项<br>**参数**：currentTreeItem - 当前的树项；flag - 插入标志<br>**返回**：是否可以添加项 | SceneTree |

## 事件

| 事件 | 说明 | 来源 |
| --- | --- | --- |
| `jsonLoadingEvent` | 获取 JSON 加载事件 | SceneTree |
| `showPropUiOnSelectingChanged` | 获取选择项时是否显示属性 UI 的值变化事件 | SceneTree |

---
> 本文由 `generate-docs.mjs` 从源码自动生成，请勿手改。
