12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { NodeUpdateType } from './constants.js';
- class NodeFrame {
- constructor() {
- this.time = 0;
- this.deltaTime = 0;
- this.frameId = 0;
- this.startTime = null;
- this.updateMap = new WeakMap();
- this.renderer = null;
- this.material = null;
- this.camera = null;
- this.object = null;
- }
- updateNode( node ) {
- const updateType = node.getUpdateType();
- if ( updateType === NodeUpdateType.FRAME ) {
- if ( this.updateMap.get( node ) !== this.frameId ) {
- this.updateMap.set( node, this.frameId );
- node.update( this );
- }
- } else if ( updateType === NodeUpdateType.OBJECT ) {
- node.update( this );
- }
- }
- update() {
- this.frameId ++;
- if ( this.lastTime === undefined ) this.lastTime = performance.now();
- this.deltaTime = ( performance.now() - this.lastTime ) / 1000;
- this.lastTime = performance.now();
- this.time += this.deltaTime;
- }
- }
- export default NodeFrame;
|