@awayjs/graphics
Version:
AwayJS graphics classes
93 lines (71 loc) • 2.12 kB
text/typescript
import { Vector3D } from '@awayjs/core';
import { AnimationNodeBase } from '@awayjs/renderer';
import { IAnimationState } from './IAnimationState';
import { AnimatorBase } from '../AnimatorBase';
/**
*
*/
export class AnimationStateBase implements IAnimationState {
public _pAnimationNode: AnimationNodeBase;
public _pRootDelta: Vector3D = new Vector3D();
public _pPositionDeltaDirty: boolean = true;
public _pTime: number;
public _pStartTime: number = 0;
public _pAnimator: AnimatorBase;
/**
* Returns a 3d vector representing the translation delta of the animating entity for the current timestep of animation
*/
public get positionDelta(): Vector3D {
if (this._pPositionDeltaDirty) {
this._pUpdatePositionDelta();
}
return this._pRootDelta;
}
constructor(animator: AnimatorBase, animationNode: AnimationNodeBase) {
this._pAnimator = animator;
this._pAnimationNode = animationNode;
}
/**
* Resets the start time of the node to a new value.
*
* @param startTime The absolute start time (in milliseconds) of the node's starting time.
*/
public offset(startTime: number): void {
this._pStartTime = startTime;
this._pPositionDeltaDirty = true;
}
/**
* Updates the configuration of the node to its current state.
*
* @param time The absolute time (in milliseconds) of the animator's play head position.
*
* @see AnimatorBase#update()
*/
public update(time: number): void {
if (this._pTime == time - this._pStartTime) {
return;
}
this._pUpdateTime(time);
}
/**
* Sets the animation phase of the node.
*
* @param value The phase value to use. 0 represents the beginning of an animation clip, 1 represents the end.
*/
public phase(value: number): void {
}
/**
* Updates the node's internal playhead position.
*
* @param time The local time (in milliseconds) of the node's playhead position.
*/
public _pUpdateTime(time: number): void {
this._pTime = time - this._pStartTime;
this._pPositionDeltaDirty = true;
}
/**
* Updates the node's root delta position
*/
public _pUpdatePositionDelta(): void {
}
}