import { ESSceneObject } from "vtxf-xe2/dist-node/xe2-base-objects"; import { Destroyable, Event, JsonValue, ObservableArray } from "vtxf-xe2/dist-node/xe2-base-utils"; import { SceneObject } from "vtxf-xe2/dist-node/xe2-utils"; import { FTreeBase, FTreeItemInsertFlag, FTreeType } from "../base"; import { FSceneTreeGetJsonOptionsType, FSceneTreeItem, FSceneTreeItemChangedType, FSceneTreeItemJsonValue, FSceneTreeSetJsonOptionsType } from "./FSceneTreeItem"; import { preload } from "./preload"; export declare type FSceneTreeJsonValue = { root: FSceneTreeItemJsonValue; }; export declare class FSceneObjectSubIds extends Destroyable { private _sceneTree; private _sceneObject; get sceneTree(): FSceneTree; get sceneObject(): ESSceneObject; private _subIds; get subIds(): string[]; set subIds(value: string[]); get subIdsChanged(): import("vtxf-xe2/dist-node/xe2-base-utils").Listener<[string[], string[]]>; constructor(_sceneTree: FSceneTree, _sceneObject: ESSceneObject); } export declare class FSceneObjectItemsMap extends Destroyable { private _map; get map(): Map; private _changed; get changed(): Event<[sceneObject: SceneObject, item: FSceneTreeItem, type: "delete" | "set"]>; getSceneObjectItems(sceneObject: ESSceneObject): FSceneTreeItem | undefined; set(sceneObject: ESSceneObject, item: FSceneTreeItem): void; get(sceneObject: ESSceneObject): FSceneTreeItem | undefined; delete(sceneObject: ESSceneObject): boolean; has(sceneObject: ESSceneObject): boolean; [Symbol.iterator](): IterableIterator<[ESSceneObject, FSceneTreeItem]>; } export declare class FSceneTree extends Destroyable implements FTreeType { private _createSceneObjectFunc; private _destroySceneObjectFunc; private _tree; get tree(): FTreeBase; private _root; get root(): FSceneTreeItem; get itemChildrenChanged(): Event<[FSceneTreeItem]>; get itemChildrenToChange(): Event<[item: FSceneTreeItem, changeInfos: import("vtxf-xe2/dist-node/xe2-base-utils").ObservableArrayChangeInfo[]]>; get commandEvent(): Event<[import("../base").FTreeCommandDataType]>; getClickedOrSelectedItems(): FSceneTreeItem[] | undefined; getCurrentItems(): FSceneTreeItem[] | undefined; getCurrentItem(): FSceneTreeItem; getFlatCurrentItemsWithFilters(filterFunc: (item: FSceneTreeItem) => boolean): FSceneTreeItem[]; getM3tojsonFromSceneTreeItems(sceneTreeItems: FSceneTreeItem[]): { asset: { __m3t_type__: string; __m3t_createdTimeStamp__: number; }; sceneTreeItems: JsonValue; } | undefined; isM3tojson(json: JsonValue): boolean; destroySceneTreeItems(sceneTreeItems: FSceneTreeItem[]): void; private _copyAndDelete; copy(): Promise; cut(): Promise; canPaste(clipboardText?: string): Promise; deleteConfirmFunc?: (items: FSceneTreeItem[]) => Promise; delete(): Promise; private _itemChanged; get itemChanged(): Event<[FSceneTreeItem, FSceneTreeItemChangedType]>; private _selectedItems; /** * 选中的节点数组 */ get selectedItems(): ObservableArray; private _lastSelectedItem; /** * 最后一个选中的节点 */ get lastSelectedItem(): FSceneTreeItem | undefined; get lastSelectedItemChanged(): import("vtxf-xe2/dist-node/xe2-base-utils").Listener<[FSceneTreeItem | undefined, FSceneTreeItem | undefined]>; private _lastClickedItem; /** * 最后一个鼠标左键或右键操作的节点 */ get lastClickedItem(): FSceneTreeItem | undefined; set lastClickedItem(value: FSceneTreeItem | undefined); get lastClickedItemChanged(): import("vtxf-xe2/dist-node/xe2-base-utils").Listener<[FSceneTreeItem | undefined, FSceneTreeItem | undefined]>; private _lastClickedItemInit; private _hoveredItem; get hoveredItem(): FSceneTreeItem | undefined; set hoveredItem(value: FSceneTreeItem | undefined); get hoveredItemChanged(): import("vtxf-xe2/dist-node/xe2-base-utils").Listener<[FSceneTreeItem | undefined, FSceneTreeItem | undefined]>; private _hoveredItemInit; getAllCheckedLeafItems(): Generator; clearAllSelectedItems(): void; /** * 创建一个没有绑定场景对象的场景树节点,一般是组节点 * @param currentSceneTreeItem 当前场景树项,如果不设置,将自动使用g_app.sceneTree.lastClickedItem或者根节点作为当前场景树项 * @param flag 插入位置,可选项有三个:'Inner' | 'Before' | 'After', 可以是undefined!如果是undefined,会根据当前场景树项自动判定! * @returns 场景树节点 * @example * // 不设置参数,自动在根节点或者点选的节点上创建新节点 * var sceneTreeItem = g_app.sceneTree.createSceneTreeItem(); * sceneTreeItem.name = '123'; * * // 在某个节点内部创建一个子节点 * var sceneTreeItem2 = g_app.sceneTree.createSceneTreeItem(sceneTreeItem, 'Inner'); * sceneTreeItem2.name = '456'; * * // 在某个节点之后创建一个兄弟节点 * var sceneTreeItem3 = g_app.sceneTree.createSceneTreeItem(sceneTreeItem, 'After'); * sceneTreeItem3.name = '789'; */ createSceneTreeItem(currentSceneTreeItem?: FSceneTreeItem, flag?: FTreeItemInsertFlag): FSceneTreeItem | undefined; /** * 创建一个附带场景对象的场景树节点 * @param sceneObjectJson 场景对象的json规格 * @param currentSceneTreeItem 当前场景树项 * @param flag 插入位置,可选项有三个:'Inner' | 'Before' | 'After' * @returns 场景树节点 * @example * // 1 创建一个附带场景对象的场景树节点 * // 注意,返回值sceneTreeItem是场景树节点,不是场景对象!sceneTreeItem.sceneObj是场景对象! * var sceneTreeItem = g_app.sceneTree.createItemWithSceneObject({ * "type": "CzmModelPrimitive", * "name": "卫星", * "url": "${xe2-assets-script-dir}/xe2-assets/scene-manager/glbs/WeiXing.glb", * "allowPicking": true, * "position": [ * 112.43701220609113, * 34.76411786053501, * 0 * ] * }); * * // 2 只知道场景对象类型,可以这样创建 * // 注意,返回值sceneTreeItem是场景树节点,不是场景对象!sceneTreeItem.sceneObj是场景对象! * var sceneTreeItem = g_app.sceneTree.createItemWithSceneObject({ * "type": "CzmModelPrimitive", * }); * sceneTreeItem.sceneObj.name = '卫星'; */ createItemWithSceneObject(sceneObjectJson: JsonValue & { [k: string]: any; type: string; }, currentSceneTreeItem?: FSceneTreeItem, flag?: FTreeItemInsertFlag): FSceneTreeItem | undefined; /** * 销毁一个场景树节点 * @param sceneTreeItem 要销毁的场景树节点 * @returns 返回true表示删除成功!否则表示因某些原因删除失败! * @example * var sceneTreeItem = g_app.sceneTree.createSceneTreeItem(); * g_app.sceneTree.destroySceneTreeItem(sceneTreeItem); */ destroySceneTreeItem(sceneTreeItem: FSceneTreeItem): boolean; get createSceneObjectFunc(): (sceneObjectJson: JsonValue & { [k: string]: any; type: string; }) => ESSceneObject | undefined; get destroySceneObjectFunc(): (sceneObject: ESSceneObject) => boolean; constructor(_createSceneObjectFunc: (sceneObjectJson: JsonValue & { [k: string]: any; type: string; }) => ESSceneObject | undefined, _destroySceneObjectFunc: (sceneObject: ESSceneObject) => boolean); static defaultPreload: typeof preload; preloadFunc: typeof preload; static defaultLinkSceneObjectFunc: (sceneTreeItem: FSceneTreeItem, sceneObject: ESSceneObject) => Destroyable; linkSceneObjectFunc: (sceneTreeItem: FSceneTreeItem, sceneObject: ESSceneObject) => Destroyable; /** * 获取当前树结构的Json数据 * @returns SceneTreeItem的isExport为true的Json数据 */ syncGetJson(options?: FSceneTreeGetJsonOptionsType): { root: FSceneTreeItemJsonValue; }; syncSetJson(value: FSceneTreeJsonValue, options?: FSceneTreeSetJsonOptionsType): void; private _jsonLoading; get json(): FSceneTreeJsonValue; set json(value: FSceneTreeJsonValue); get jsonStr(): string; set jsonStr(value: string); get jsonLoadingEvent(): Event<[{ type: "init" | "loading" | "loaded"; } | { type: "error"; error?: string | undefined; }]>; getJson(options?: FSceneTreeGetJsonOptionsType): { root: FSceneTreeItemJsonValue; }; setJson(value: FSceneTreeJsonValue, options?: FSceneTreeSetJsonOptionsType): void; private _sceneObjectItems; get sceneObjectItems(): FSceneObjectItemsMap; selectSingleTreeItemWithSceneObject(sceneObject: ESSceneObject | undefined): boolean; }