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;
							 |