tsmathlib
Version:
Typescript Version Math/Physics/CG Library
52 lines (38 loc) • 1.12 kB
text/typescript
/*
* @Author: Xu.Wang
* @Date: 2020-04-08 17:20:52
* @Last Modified by: Xu.Wang
* @Last Modified time: 2020-04-08 23:19:36
*/
import { Frame, Animation } from '../ip/animation'
export abstract class PhysicsAnimation extends Animation {
constructor() {
super()
}
// Getter Method
// Setter Method
// Abstract Method
abstract onInitialize(): void
abstract onAdvanceTimeStep(timeIntervalInSeconds: number): void
// Method
initialize(): void {
this.onInitialize()
}
advanceTimeStep(timeIntervalInSeconds: number) {
this._currentTime = this._currentFrame.timeInSeconds()
this.onAdvanceTimeStep(timeIntervalInSeconds)
this._currentTime += timeIntervalInSeconds
}
onUpdate(frame: Frame) {
if (frame.index() > this._currentFrame.index()) {
if (this._currentFrame.index() < 0) {
this.initialize()
}
let numberOfFrames = frame.index() - this._currentFrame.index()
for (let i = 0; i < numberOfFrames; i++) {
this.advanceTimeStep(frame.timeIntervalInSeconds())
}
this._currentFrame = frame
}
}
}