84 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			84 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								import Binding from './Binding.js';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let id = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SampledTexture extends Binding {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									constructor( name, texture ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										super( name );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										this.id = id ++;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										this.texture = texture;
							 | 
						||
| 
								 | 
							
										this.version = texture ? texture.version : 0;
							 | 
						||
| 
								 | 
							
										this.store = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										this.isSampledTexture = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									get needsBindingsUpdate() {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										const { texture, version } = this;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return texture.isVideoTexture ? true : version !== texture.version; // @TODO: version === 0 && texture.version > 0 ( add it just to External Textures like PNG,JPG )
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									update() {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										const { texture, version } = this;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if ( version !== texture.version ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											this.version = texture.version;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											return true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SampledArrayTexture extends SampledTexture {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									constructor( name, texture ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										super( name, texture );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										this.isSampledArrayTexture = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Sampled3DTexture extends SampledTexture {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									constructor( name, texture ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										super( name, texture );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										this.isSampled3DTexture = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class SampledCubeTexture extends SampledTexture {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									constructor( name, texture ) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										super( name, texture );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										this.isSampledCubeTexture = true;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export { SampledTexture, SampledArrayTexture, Sampled3DTexture, SampledCubeTexture };
							 |