Files
Nitro_Render_V3/packages/room/src/object/visualization/furniture/FurnitureBottleVisualization.ts
T
2024-04-03 09:27:56 +02:00

63 lines
1.6 KiB
TypeScript

import { FurnitureAnimatedVisualization } from './FurnitureAnimatedVisualization';
export class FurnitureBottleVisualization extends FurnitureAnimatedVisualization
{
private static ANIMATION_ID_OFFSET_SLOW1: number = 20;
private static ANIMATION_ID_OFFSET_SLOW2: number = 9;
private static ANIMATION_ID_ROLL: number = -1;
private _stateQueue: number[];
private _running: boolean;
constructor()
{
super();
this._stateQueue = [];
this._running = false;
}
protected setAnimation(animationId: number): void
{
if(animationId === -1)
{
if(!this._running)
{
this._running = true;
this._stateQueue = [];
this._stateQueue.push(FurnitureBottleVisualization.ANIMATION_ID_ROLL);
return;
}
}
if((animationId >= 0) && (animationId <= 7))
{
if(this._running)
{
this._running = false;
this._stateQueue = [];
this._stateQueue.push(FurnitureBottleVisualization.ANIMATION_ID_OFFSET_SLOW1);
this._stateQueue.push(FurnitureBottleVisualization.ANIMATION_ID_OFFSET_SLOW2 + animationId);
this._stateQueue.push(animationId);
return;
}
super.setAnimation(animationId);
}
}
protected updateAnimation(scale: number): number
{
if(this.getLastFramePlayed(0))
{
if(this._stateQueue.length) super.setAnimation(this._stateQueue.shift());
}
return super.updateAnimation(scale);
}
}