UNPKG

threepipe

Version:

A modern 3D viewer framework built on top of three.js, written in TypeScript, designed to make creating high-quality, modular, and extensible 3D experiences on the web simple and enjoyable.

85 lines 3.57 kB
import { AViewerPluginEventMap, AViewerPluginSync, ThreeViewer } from '../../viewer'; import { UiObjectConfig } from 'uiconfig.js'; import { AnimationResult, PopmotionPlugin } from './PopmotionPlugin'; import { AnimationObject, AnimationObjectEventMap } from '../../utils/AnimationObject'; import { IMaterial, IObject3D } from '../../core'; export interface AnimationObjectPluginEventMap extends AViewerPluginEventMap, AnimationObjectEventMap { rebuildTimeline: { timeline: [AnimationObject, AnimationResult][]; }; animationUpdate: { animation: AnimationObject; }; } /** * Animation Object Plugin * * This plugin allows you to create and manage animation objects for properties in the viewer, plugins, objects, materials etc. * Animation objects are serializable javascript objects that bind to a property, and can animate it over time across keyframes. * * Animation Object plugin adds support for creating animations bound to viewer and plugins and serializing them along with this plugin. * Also adds support for tracking and playback of animation objects in the userData of objects and materials. * * All the tracked animations are played on load and synced with the viewer timeline if its active. * * This plugin also adds trigger buttons for creating and editing animation objects, keyframes, for the ui config. */ export declare class AnimationObjectPlugin extends AViewerPluginSync<AnimationObjectPluginEventMap> { static readonly PluginType = "AnimationObjectPlugin"; enabled: boolean; dependencies: (typeof PopmotionPlugin)[]; /** * Main animation with target = viewer for global properties */ readonly animation: AnimationObject; readonly runtimeAnimation: AnimationObject; getAllAnimations(): AnimationObject<any>[]; private _fAnimationAdd; private _fAnimationRemove; private _fAnimationUpdate; private _viewerTimelineUpdate; private _refreshTriggerBtn; private _getActiveIndex; private _triggerButtonsShown; get triggerButtonsShown(): boolean; set triggerButtonsShown(v: boolean); showTriggers(v?: boolean): void; constructor(); private _currentTimeline; private _refTimeline; rebuildTimeline(): void; protected _viewerListeners: { postFrame: () => void; }; getTimeline(): [AnimationObject<any>, AnimationResult][]; addAnimation(access?: string, target?: any, anim?: AnimationObject): AnimationObject<any>; removeAnimation(anim: AnimationObject, target?: any): void; private _objectAdd; private _objectRemove; private _materialAdd; private _materialRemove; private _addAnimationObject; private _removeAnimationObject; private _removeAnimationFromObject; private _visibleBtns; private _iObservers; private _setupUiConfig; private _cleanUpUiConfig; private _setupUiConfigButtons; private _cleanupUiConfigButtons; setupUiConfigButton(obj: IObject3D | IMaterial, config: UiObjectConfig, path?: string): void; cleanupUiConfigButton(config?: UiObjectConfig): void; private _setBtnVisible; private _animatableUiConfigs; private _objectUpdate; onAdded(viewer: ThreeViewer): void; onRemove(viewer: ThreeViewer): void; fromJSON(data: any, meta?: any): this | null; uiConfig: UiObjectConfig; } declare module '../../assetmanager/IAssetImporter' { interface IImportResultUserData { animationObjects?: AnimationObject[]; } } //# sourceMappingURL=../../src/plugins/animation/AnimationObjectPlugin.d.ts.map