UNPKG

@glowjs/core

Version:

GlowJS数字孪生引擎核心库。

394 lines (393 loc) 10.3 kB
import { Base } from '../base/Base'; import { App } from '../core/App'; import { TransformNode, BoundingInfo, Ray, Material, Mesh } from '../runtime'; import { ViewInfo } from './ViewInfo'; import { Point3D } from '../misc/Point3D'; import { Point4D } from '../misc/Point4D'; import { EntityType } from './EntityType'; import { Component } from './component/Component'; import { Point2D } from '../misc'; import { EffectData } from '../effect/EffectData'; export interface Entity { linkDecorator?(): void; } /** * 实体 */ export declare class Entity extends Base { /** * 自定义检查函数,用于某些特殊用途 */ static customCheckFun: (data: any) => Entity; protected _viewInfo: ViewInfo | null; protected _cursor: string; _boundingInfoNode: TransformNode; protected _boxContainer: TransformNode; /** * 最大观察距离(包围球半径倍数) */ maxRadiusScale: number; /** * 包围盒 */ boundingInfo: BoundingInfo; /** * 节点 */ node: TransformNode; /** * 偏移节点 */ offsetNode: TransformNode; /** * 子元素 */ readonly children: Entity[]; /** * 组件列表 */ readonly _components: Component[]; /** * 是否已创建 */ built: boolean; /** * 父元素 */ parent: Entity | null; /** * 前置层级(用于存储园区转场、热点跳转、POI跳转、楼层跳转时的返回层级) */ preLevel: Entity | null; /** * 获取子节点列表 */ readonly subNodes: TransformNode[]; /** * 标签 */ readonly tags: Set<string>; /** * 用户数据 */ readonly userData: any; /** * 效果数据 */ effectData: EffectData; /** * 获取或设置路径动画移动速度 */ moveSpeed: number; /** * 实体注册的应用事件ID列表,当实体销毁时自动移除集合中的事件 */ appEventIds: string[]; protected _enablePointerMoveEvents: boolean; protected _pickable: boolean; private _castShadow; /** * 是否投射阴影 */ get castShadow(): boolean; set castShadow(value: boolean); /** * 获取或设置提示信息 */ tip: string; /** * 实例化一个实体对象 * @param app 应用 */ constructor(app: App); /** * 获取或设置编号 */ get id(): string; set id(value: string); /** * 获取实体类型 */ get type(): EntityType; /** * 获取或设置名称 */ get name(): string; set name(value: string); /** * 获取或设置可见性 */ get visible(): boolean; set visible(value: boolean); /** * 获取或设置观察视角 */ get viewInfo(): ViewInfo | null; set viewInfo(value: ViewInfo | null); /** * 获取子网格列表 */ get subMeshes(): Mesh[]; /** * 获取材质列表 */ get materials(): Material[]; /** * 获取或设置位置 */ get position(): Point3D; set position(value: Point3D); /** * 获取或设置偏移量 */ get offset(): Point3D; set offset(value: Point3D); /** * 获取或设置允许指针移动事件 */ get enablePointerMoveEvents(): boolean; set enablePointerMoveEvents(value: boolean); /** * 获取或设置是否可被拾取 */ get pickable(): boolean; set pickable(value: boolean); /** * 获取或设置指针样式,与CSS保持一致 */ get cursor(): string; set cursor(value: string); /** * 获取或设置旋转(四元数) */ get rotation(): Point4D; set rotation(value: Point4D); /** * 获取或设置欧拉角(弧度) */ get euler(): Point3D; set euler(value: Point3D); /** * 获取或设置角度 */ get angles(): Point3D; set angles(value: Point3D); /** * 获取或设置缩放 */ get scale(): Point3D; set scale(value: Point3D); /** * 获取包围盒中心点坐标(世界坐标) */ get center(): Point3D; /** * 获取包围盒半径 */ get radius(): number; /** * 获取包围盒大小 */ get size(): Point3D; /** * 获取该对象下的所有层级数量(包含自身) */ get levelCount(): number; private _boundingColor; /** * 获取或设置包围盒颜色 */ get boundingColor(): string; set boundingColor(value: string); /** * 获取或设置是否显示包围盒 */ get showBoundingBox(): boolean; set showBoundingBox(value: boolean); /** * 获取或设置是否显示轮廓 */ get outline(): boolean; set outline(value: boolean); /** * 获取实例类型 */ get instanceClass(): any; /** * 获取是否允许被冻结世界矩阵 */ get canFreezeWorldMatrix(): boolean; /** * 获取是否允许被冻结材质 */ get canFreezeMaterial(): boolean; /** * 是否是当前层级 */ get isCurrentLevel(): boolean; /** * 冻结世界矩阵 * @param recursive 是否递归调用冻结子元素的世界矩阵,默认true */ freezeWorldMatrix(recursive?: boolean): void; /** * 解除冻结世界矩阵 * @param recursive 是否递归调用解除冻结子元素的世界矩阵,默认true */ unfreezeWorldMatrix(recursive?: boolean): void; /** * 计算世界矩阵 * @param recursive 是否递归调用计算子元素的世界矩阵,默认true */ computeWorldMatrix(recursive?: boolean): void; /** * 设置总是激活,用于性能优化,切换场景后失效 * @param recursive 是否递归调用设置子元素总是激活,默认true */ setAlwaysActive(recursive?: boolean): void; /** * 设置包围盒同步机制 * @param value 值,默认true * @param recursive 是否递归调用设置子元素的包围盒同步机制,默认true */ setDoNotSyncBoundingInfo(value?: boolean, recursive?: boolean): void; /** * 冻结材质 * @param recursive 是否递归调用冻结子元素的材质,默认true */ freezeMaterial(recursive?: boolean): void; /** * 解除冻结材质 * @param recursive 是否递归调用解除冻结子元素的材质,默认true */ unfreezeMaterial(recursive?: boolean): void; /** * 获取所有子网格(递归获取子元素的网格) */ getAllSubMeshes(): Mesh[]; /** * 获取所有子网格(递归获取子元素的网格),含实例网格 */ _getAllSubMeshes2(): Mesh[]; /** * 计算包围盒 */ computeBoundingInfo(): void; /** * 世界坐标转局部坐标 * @param world 世界坐标 * @returns 局部坐标 */ worldToLocal(world: Point3D): Point3D; /** * 局部坐标转世界坐标 * @param local 局部坐标 * @returns 世界坐标 */ localToWorld(local: Point3D): Point3D; /** * 世界坐标转屏幕坐标 * @param world 世界坐标 * @returns 屏幕坐标 */ worldToScreen(world: Point3D): Point2D; /** * 局部坐标转屏幕坐标 * @param local 局部坐标 * @returns 屏幕坐标 */ localToScreen(local: Point3D): Point2D; /** * 获取指针与当前实体平面的交点(局部坐标,可能为空) * @param ray 射线 */ getLocalPointerInThisPlane(ray?: Ray): Point3D | null; /** * 获取指针与当前实体平面的交点(世界坐标,可能为空) * @param ray 射线 */ getWorldPointerInThisPlane(ray?: Ray): Point3D | null; /** * 获取指针世界坐标(当前实体平面+相机裁剪面,不为空) * @param ray 射线 */ getPointer3D(ray?: Ray): Point3D; /** * 添加子元素 * @param item 子元素 * @param index 索引 */ add(item: Entity, index?: number): void; /** * 移除子元素 * @param item 子元素 */ remove(item: Entity): void; /** * 从父元素中移除自身 */ removeSelf(): void; /** * 是否是当前层级的子孙 */ descendantOfCurrentLevel(): boolean; /** * 添加指定组件(不可重复添加) * @param type 组件类型 */ addComponent<T extends Component>(type: new (entity: Entity) => T): T; /** * 获取指定类型的组件 * @param type 组件类型 */ getComponent<T extends Component>(type: new (entity: Entity) => T): T | null; /** * 获取所属房间 */ get ownerRoom(): any; /** * 获取或设置是否显示为盒子模式 */ get showBox(): boolean; set showBox(value: boolean); /** * 释放盒子 */ disposeBox(): void; /** * 标记节点 * @param id 唯一ID * @param recursive 是否递归调用标记子元素的节点 */ markNode(id?: string, recursive?: boolean): void; /** * 序列化成JSON对象 */ toJson(): any; /** * 从JSON对象反序列化(仅生成层级树) * @param json JSON对象 */ fromJson(json: any): void; /** * 对象创建完成后执行的操作 */ afterBuild(): void; /** * 创建(仅当前层级可见对象) * @param force 是否强制 */ build(force?: boolean): Promise<void>; /** * 设置子节点列表 */ setSubNodes(): void; /** * 拆毁(销毁网格,仅保留层级树) */ unbuild(): void; /** * 释放 */ dispose(): void; }