import type { HitTestBoxParams, HitTestCustomParams, HitTestSphereParams, HitTestTriangleParams } from '../plugin/interact/ClickHandler'; import type { Composition } from './Composition'; import { Transform } from '../math/Transform'; import type { BaseItem, ItemEndBehavior, vec3 } from '@predy-js/specification'; import { BaseTransformer } from '../plugin/cal/BaseTransformer'; /** * @description 构成合成Composition的元素对象,一个Composition中可以包含多个VFXItem对象。可以表示一个粒子/模型/相机/灯光对象等。 * */ export declare class VFXItem { /** * 元素绑定的父元素, * 1. 当元素没有绑定任何父元素时,parent为空,transform.parentTransform 为 composition.rootTransform * 2. 当元素绑定 nullItem 时,parent 为 nullItem, transform.parentTransform 为 nullItem.transform * 3. 当元素绑定 TreeItem 的node时,parent为treeItem, transform.parentTransform 为 tree.nodes[i].transform(绑定的node节点上的transform) * 4. 当元素绑定 TreeItem 本身时,行为表现和绑定 nullItem 相同 */ readonly parent?: VFXItem; /** * 元素的变换包含位置、旋转、缩放。 */ transform: Transform; /** * 元素动画的持续时间 */ duration: number; reusable: boolean; /** * 元素当前更新归一化时间,开始时为0,结束时为1 */ lifetime: number; /** * 元素属于哪个合成对象 */ composition: Composition; /** * 父元素的id */ parentId?: string; /** * 元素动画的开始时间 */ delay?: number; /** * 元素动画结束时行为(如何处理元素) */ endBehavior: ItemEndBehavior; /** * 元素在合成中的索引 */ readonly listIndex: number; /** * 元素名称 */ readonly name: string; /** * 元素id */ readonly id: string; /** * 元素是否可用 */ ended: boolean; transformer: BaseTransformer; cid?: string; /** * 元素是否dirty */ dirty: boolean; /** * 元素优先级 */ _v_priority: number; /** * 元素内容可见性,不与hide共享可见性 */ get contentVisible(): boolean; /** * 返回元素创建的数据 */ get content(): T; /** * 设置元素数据 */ set content(t: T); /** * 元素创建的数据图层/粒子/模型等 */ protected _content: T; /** * hide item, this will invoke _onHideChanged method * * @protected */ protected _hide: boolean; /** * stop update time * @protected */ protected _frozen: boolean; /** * if item affects other renderable items * @protected */ protected _contentVisible: boolean; protected _timeInms: number; /** * 元素动画延迟/开始播放时间,单位毫秒 */ protected readonly _delayInms: number; /** * 元素动画持续时间,单位毫秒 */ protected readonly _durInms: number; /** * 元素动画是否开始 */ protected _started: boolean; /** * 元素动画是否延迟播放 */ protected _delaying: boolean; /** * 元素动画结束回调是否被调用 */ protected _callEnd: boolean; constructor(arg: BaseItem, comp: Composition); /** * 获取元素类型 */ get type(): string; /** * 设置元素类型 */ set type(v: string); /** * 获取元素显隐属性 */ get hide(): boolean; /** * 设置元素显隐属性 */ set hide(v: boolean); /** * 获取元素冻结属性 */ get frozen(): boolean; /** * 设置元素冻结属性 */ set frozen(v: boolean); /** * @description 元素显隐属性改变时调用的函数,当hide为true时,无比隐藏显示元素 * @param hide */ _onHideChanged(hide: any): void; /** * @description 元素冻结属性改变时调用的函数 * @param hide */ _onFrozenChanged(frozen: any): void; /** * @description 获取元素变换包括位置、旋转、缩放 * @param transform 将元素变换拷贝到该对象,并将其作为返回值 * @returns 元素变换的拷贝 */ getWorldTransform(transform?: Transform): Transform; /** * @description 开始播放该元素 * @returns */ start(): this; /** * 创建元素的内容,此函数可以在任何时间被调用, * 第一帧渲染前一定会调用此函数 * @returns */ createContent(): T; /** * @description 停止播放元素动画 */ stop(): void; /** * @description 重置元素,元素创建的内容将会被销毁 * @returns */ reset(): VFXItem; /** * 销毁元素 */ destroy(): void; /** * 元素构造函数调用时将调用该函数 * @param options */ onConstructed(options: any): void; _stop(): void; onItemRemoved(renderer: Composition, content?: T): void; /** * @description 元素_createContent函数调用后会立即调用该函数用于初始化数据 * @param renderer * @param content */ onLifetimeBegin(renderer: Composition, content: T): void; /** * @description 元素第一次update时会调用该函数,用于创建元素内部数据如图层精灵/粒子/模型等 * @param renderer * @returns */ _createContent(renderer: Composition): T; /** * 元素更新函数,在Composition对象的tick函数中被调用 * @param dt * @param lifetime */ onItemUpdate(dt: any, lifetime: any): void; getCurrentPosition(): vec3 | undefined; get lifetimeStarted(): boolean; /** * 内部使用的更新回调,请不要继承此方法,继承onItemUpdate方法 */ protected _onUpdate(dt: any): void; /** * 是否到达元素动画的结束时间 * @param now * @returns */ protected _isEnded(now: any): boolean; /** * 元素动画结束播放时回调函数 */ onEnd(): void; getHitTestParams(force?: boolean): void | HitTestBoxParams | HitTestTriangleParams | HitTestSphereParams | HitTestCustomParams; }