@glowjs/core
Version:
GlowJS数字孪生引擎核心库。
394 lines (393 loc) • 10.3 kB
TypeScript
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;
}