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
TypeScript
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