UNPKG

iv-3d-lib

Version:

A reusable ThreeJS library providing features for Ivee 3D Editor.

81 lines (74 loc) 2.89 kB
import { XYZ, Expr, ExprXYZ } from '../wgl-util-cfgs'; export class Timeline { name: string; meshes: TimelineMesh[] = []; /* private _enabled: boolean = true; get enabled() { return this._enabled; } set enabled(value: boolean) { this._enabled = value; } */ enabled: boolean | string = true; sEnabled: string = 'true'; cameraPositionDisplacement: DisplacementXYZ = new DisplacementXYZ(); cameraDirection: XYZ = { x: 1, y: 1, z: 1 }; duration: number; // seconds meshCameraVerticesDisplacement: DisplacementXYZ = new DisplacementXYZ(); meshCameraVerticesUUID: string; } export class Displacement { displacement: number = 0; min: number = 0; max: number = 0; enabled: boolean = true; expression: Expr = new Expr(); easing: string; duration: number; useCurrent: boolean = false; } export class DisplacementXYZ { displacement: XYZ = new XYZ(); min: XYZ = new XYZ(); max: XYZ = new XYZ(); enabled: boolean = true; expression: ExprXYZ = new ExprXYZ(); easing: string; duration: number; // milliseconds useCurrent: boolean = false; // flag used in tweening, indicating the change should start from the current object value, instead of the min value yoyo: boolean = false; // flag used in tweening, to apply the "yoyo" effect repeat: number = 0; // number indicating the following: if > 0 - how many times the tween should repeat; 0 - no repeat; < 0 - infinite repetitions trigger: TriggerType = TriggerType.none; runtimeReverse: boolean = false; // flag used in tweening; when true the tween should execute in reverse (reset the tween properties to the original values) script: string = ''; } export class TimelineMesh { uuid: string; positionDisplacement: DisplacementXYZ = new DisplacementXYZ(); positionDirection: XYZ = new XYZ(1, 1, 1); rotationDisplacement: DisplacementXYZ = new DisplacementXYZ(); rotationDirection: XYZ = new XYZ(1, 1, 1); scaleDisplacement: DisplacementXYZ = new DisplacementXYZ(); scaleDirection: XYZ = new XYZ(1, 1, 1); visible: boolean = true; tweens: Tween[] = []; runtimeTweens: any[] = []; runtimeTweenReverseMouseDown: boolean = false; runtimeTweenReverseMouseUp: boolean = false; } export class Tween { positionDisplacement: DisplacementXYZ = new DisplacementXYZ(); rotationDisplacement: DisplacementXYZ = new DisplacementXYZ(); scaleDisplacement: DisplacementXYZ = new DisplacementXYZ(); colorDisplacement: DisplacementXYZ = new DisplacementXYZ(); chain: boolean; enabled: boolean; } export enum TriggerType { none = <any>'none', onAnimate = <any>'onAnimate', onMouseUp = <any>'onMouseUp', onMouseDown = <any>'onMouseDown', }