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