import type { Object3D, SceneControl } from '@anov/3d-core'; import ObjectLayer from '../Base/ObjectLayer'; import { EBuildingSplitType } from './type'; declare class BuildingSplit extends ObjectLayer { private floorGroups; private sortedFloorLevels; private aboveGroundFloorCount; private undergroundFloorCount; private hasRoof; private currentAnimation; private _building; constructor(building: Object3D, sceneControl: SceneControl); get building(): Object3D; /** * 初始化建筑拆分器 * @param building 建筑模型 */ init(): void; /** * 解析建筑模型中的楼层 */ private parseFloors; /** * 将组件添加到对应楼层分组 */ private addToFloorGroup; /** * 拆分楼层 * @param options 拆分选项 * @returns 成功或错误信息 */ split(options: any): { success: boolean; message?: string; }; /** * 隐藏指定楼层以上的楼层 * @param targetFloor 目标楼层 */ private hideAboveFloors; /** * 将指定楼层以上的楼层整体上移 * @param targetFloor 目标楼层 * @param animation 动画选项 */ private moveAboveFloorsUp; /** * 将指定楼层以上的楼层向指定方向移动 * @param targetFloor 目标楼层 * @param animation 动画选项 */ private moveAboveFloorsDirection; /** * 计算方向向量 * 规则:往右方(X)、前方(Z)是正、往左方(X)、后方(Z)是负数 * @param direction 方向枚举 * @param distance 移动距离 * @returns Vector3 方向向量 */ private getDirectionVector; /** * 只显示指定楼层 * @param targetFloor 目标楼层 */ private showSoloFloor; /** * 执行位置动画 * @param startPositions 起始位置 * @param targetPositions 目标位置 * @param duration 动画时长 */ private animatePositions; /** * 重置建筑到初始状态 */ private resetBuilding; /** * 获取楼层总数信息 */ getFloorCounts(): { aboveGround: number; underground: number; hasRoof: boolean; }; } export { BuildingSplit, EBuildingSplitType };