51 lines
		
	
	
		
			713 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			713 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| class Animation {
 | |
| 
 | |
| 	constructor( nodes, info ) {
 | |
| 
 | |
| 		this.nodes = nodes;
 | |
| 		this.info = info;
 | |
| 
 | |
| 		this.animationLoop = null;
 | |
| 		this.requestId = null;
 | |
| 
 | |
| 		this._init();
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	_init() {
 | |
| 
 | |
| 		const update = ( time, frame ) => {
 | |
| 
 | |
| 			this.requestId = self.requestAnimationFrame( update );
 | |
| 
 | |
| 			if ( this.info.autoReset === true ) this.info.reset();
 | |
| 
 | |
| 			this.nodes.nodeFrame.update();
 | |
| 
 | |
| 			this.info.frame = this.nodes.nodeFrame.frameId;
 | |
| 
 | |
| 			if ( this.animationLoop !== null ) this.animationLoop( time, frame );
 | |
| 
 | |
| 		};
 | |
| 
 | |
| 		update();
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	dispose() {
 | |
| 
 | |
| 		self.cancelAnimationFrame( this.requestId );
 | |
| 		this.requestId = null;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	setAnimationLoop( callback ) {
 | |
| 
 | |
| 		this.animationLoop = callback;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| export default Animation;
 |