/** * Raw Texture API object - should always correspond with the Texture Schema * @param id * @param textureType * @param name * @param image * @param images * @param wrapS * @param wrapT * @param repeat * @param data * @param format * @param mapping * @param magFilter * @param minFilter * @param textureType * @param anisotropy * @param offset * @param generateMipmaps * @param flipY * @param mipmaps * @param unpackAlignment * @param premultiplyAlpha * @param encoding * @param canvas * @param animated * @param reverseAnimation * @param forward * @param parentEntity * @constructor */ GameLib.D3.API.Texture = function( id, textureType, name, image, images, wrapS, wrapT, repeat, data, format, mapping, magFilter, minFilter, textureType, anisotropy, offset, generateMipmaps, flipY, mipmaps, unpackAlignment, premultiplyAlpha, encoding, canvas, animated, reverseAnimation, forward, parentEntity ) { if (GameLib.Utils.UndefinedOrNull(id)) { id = GameLib.Utils.RandomId(); } this.id = id; if (GameLib.Utils.UndefinedOrNull(textureType)) { textureType = GameLib.D3.API.Texture.TEXTURE_TYPE_NORMAL; } this.textureType = textureType; if (GameLib.Utils.UndefinedOrNull(name)) { name = 'Texture (' + id + ')'; } this.name = name; if (GameLib.Utils.UndefinedOrNull(image)) { image = null; } this.image = image; if (GameLib.Utils.UndefinedOrNull(images)) { images = []; } this.images = images; if (GameLib.Utils.UndefinedOrNull(wrapS)) { wrapS = GameLib.D3.API.Texture.TYPE_REPEAT_WRAPPING; } this.wrapS = wrapS; if (GameLib.Utils.UndefinedOrNull(wrapT)) { wrapT = GameLib.D3.API.Texture.TYPE_REPEAT_WRAPPING; } this.wrapT = wrapT; if (GameLib.Utils.UndefinedOrNull(repeat)) { repeat = new GameLib.API.Vector2(1, 1); } this.repeat = repeat; if (GameLib.Utils.UndefinedOrNull(data)) { data = null; } this.data = data; if (GameLib.Utils.UndefinedOrNull(format)) { format = GameLib.D3.API.Texture.TYPE_RGBA_FORMAT; } this.format = format; if (GameLib.Utils.UndefinedOrNull(mapping)) { mapping = GameLib.D3.API.Texture.TYPE_UV_MAPPING; } this.mapping = mapping; if (GameLib.Utils.UndefinedOrNull(magFilter)) { magFilter = GameLib.D3.API.Texture.TYPE_LINEAR_FILTER; } this.magFilter = magFilter; if (GameLib.Utils.UndefinedOrNull(minFilter)) { minFilter = GameLib.D3.API.Texture.TYPE_LINEAR_MIPMAP_LINEAR_FILTER; } this.minFilter = minFilter; if (GameLib.Utils.UndefinedOrNull(textureType)) { textureType = GameLib.D3.API.Texture.TYPE_UNSIGNED_BYTE; } this.textureType = textureType; if (GameLib.Utils.UndefinedOrNull(anisotropy)) { anisotropy = 1; } this.anisotropy = anisotropy; if (GameLib.Utils.UndefinedOrNull(offset)) { offset = new GameLib.API.Vector2(0, 0); } this.offset = offset; if (GameLib.Utils.UndefinedOrNull(generateMipmaps)) { generateMipmaps = true; } this.generateMipmaps = generateMipmaps; if (GameLib.Utils.UndefinedOrNull(flipY)) { flipY = true; } this.flipY = flipY; if (GameLib.Utils.UndefinedOrNull(mipmaps)) { mipmaps = []; } this.mipmaps = mipmaps; if (GameLib.Utils.UndefinedOrNull(unpackAlignment)) { unpackAlignment = 4; } this.unpackAlignment = unpackAlignment; if (GameLib.Utils.UndefinedOrNull(premultiplyAlpha)) { premultiplyAlpha = false; } this.premultiplyAlpha = premultiplyAlpha; if (GameLib.Utils.UndefinedOrNull(encoding)) { encoding = GameLib.D3.API.Texture.TYPE_LINEAR_ENCODING; } this.encoding = encoding; if (GameLib.Utils.UndefinedOrNull(canvas)) { canvas = null; } this.canvas = canvas; if (GameLib.Utils.UndefinedOrNull(animated)) { animated = false; } this.animated = animated; if (GameLib.Utils.UndefinedOrNull(reverseAnimation)) { reverseAnimation = false; } this.reverseAnimation = reverseAnimation; if (GameLib.Utils.UndefinedOrNull(forward)) { forward = true; } this.forward = forward; this.needsUpdate = false; GameLib.API.Component.call( this, GameLib.Component.TEXTURE, parentEntity ); }; GameLib.D3.API.Texture.prototype = Object.create(GameLib.Component.prototype); GameLib.D3.API.Texture.prototype.constructor = GameLib.D3.API.Texture; /** * Texture Formats * @type {number} */ GameLib.D3.API.Texture.TYPE_ALPHA_FORMAT = 1019; GameLib.D3.API.Texture.TYPE_RGB_FORMAT = 1020; GameLib.D3.API.Texture.TYPE_RGBA_FORMAT = 1021; GameLib.D3.API.Texture.TYPE_LUMINANCE_FORMAT = 1022; GameLib.D3.API.Texture.TYPE_LUMINANCE_ALPHA_FORMAT = 1023; GameLib.D3.API.Texture.TYPE_DEPTH_FORMAT = 1026; /** * Mapping modes * @type {number} */ GameLib.D3.API.Texture.TYPE_UV_MAPPING = 300; GameLib.D3.API.Texture.TYPE_CUBE_REFLECTION_MAPPING = 301; GameLib.D3.API.Texture.TYPE_CUBE_REFRACTION_MAPPING = 302; GameLib.D3.API.Texture.TYPE_EQUI_RECTANGULAR_REFLECTION_MAPPING = 303; GameLib.D3.API.Texture.TYPE_EQUI_RECTANGULAR_REFRACTION_MAPPING = 304; GameLib.D3.API.Texture.TYPE_SPHERICAL_REFLECTION_MAPPING = 305; GameLib.D3.API.Texture.TYPE_CUBE_UV_REFLECTION_MAPPING = 306; GameLib.D3.API.Texture.TYPE_CUBE_UV_REFRACTION_MAPPING = 307; /** * Wrapping Modes * @type {number} */ GameLib.D3.API.Texture.TYPE_REPEAT_WRAPPING = 1000; GameLib.D3.API.Texture.TYPE_CLAMP_TO_EDGE_WRAPPING = 1001; GameLib.D3.API.Texture.TYPE_MIRRORED_REPEAT_WRAPPING = 1002; /** * Mipmap Filters * @type {number} */ GameLib.D3.API.Texture.TYPE_NEAREST_FILTER = 1003; GameLib.D3.API.Texture.TYPE_NEAREST_MIPMAP_NEAREST_FILTER = 1004; GameLib.D3.API.Texture.TYPE_NEAREST_MIPMAP_LINEAR_FILTER = 1005; GameLib.D3.API.Texture.TYPE_LINEAR_FILTER = 1006; GameLib.D3.API.Texture.TYPE_LINEAR_MIPMAP_NEAREST_FILTER = 1007; GameLib.D3.API.Texture.TYPE_LINEAR_MIPMAP_LINEAR_FILTER = 1008; /** * Texture Data Types * @type {number} */ GameLib.D3.API.Texture.TYPE_UNSIGNED_BYTE = 1009; GameLib.D3.API.Texture.TYPE_BYTE = 1010; GameLib.D3.API.Texture.TYPE_SHORT = 1011; GameLib.D3.API.Texture.TYPE_UNSIGNED_SHORT = 1012; GameLib.D3.API.Texture.TYPE_INT = 1013; GameLib.D3.API.Texture.TYPE_UNSIGNED_INT = 1014; GameLib.D3.API.Texture.TYPE_FLOAT = 1015; GameLib.D3.API.Texture.TYPE_HALF_FLOAT = 1025; /** * Encoding Modes * @type {number} */ GameLib.D3.API.Texture.TYPE_LINEAR_ENCODING = 3000; // NO ENCODING AT ALL. GameLib.D3.API.Texture.TYPE_SRGB_ENCODING = 3001; GameLib.D3.API.Texture.TYPE_GAMMA_ENCODING = 3007; // USES GAMMA_FACTOR, FOR BACKWARDS COMPATIBILITY WITH WEBGLRENDERER.GAMMAINPUT/GAMMAOUTPUT GameLib.D3.API.Texture.TYPE_RGBE_ENCODING = 3002; // AKA RADIANCE. GameLib.D3.API.Texture.TYPE_LOG_LUV_ENCODING = 3003; GameLib.D3.API.Texture.TYPE_RGBM7_ENCODING = 3004; GameLib.D3.API.Texture.TYPE_RGBM16_ENCODING = 3005; GameLib.D3.API.Texture.TYPE_RGBD_ENCODING = 3006; // MAXRANGE IS 256. GameLib.D3.API.Texture.TEXTURE_TYPE_NORMAL = 0x1; GameLib.D3.API.Texture.TEXTURE_TYPE_CUBE = 0x2; GameLib.D3.API.Texture.TEXTURE_TYPE_CANVAS = 0x3; /** * Creates an API texture from Object data * @param objectTexture * @constructor */ GameLib.D3.API.Texture.FromObject = function(objectTexture) { return new GameLib.D3.API.Texture( objectTexture.id, objectTexture.textureType, objectTexture.name, objectTexture.image, objectTexture.images, objectTexture.wrapS, objectTexture.wrapT, GameLib.API.Vector2.FromObject(objectTexture.repeat), objectTexture.data, objectTexture.format, objectTexture.mapping, objectTexture.magFilter, objectTexture.minFilter, objectTexture.textureType, objectTexture.anisotropy, GameLib.API.Vector2.FromObject(objectTexture.offset), objectTexture.generateMipmaps, objectTexture.flipY, objectTexture.mipmaps, objectTexture.unpackAlignment, objectTexture.premultiplyAlpha, objectTexture.encoding, objectTexture.canvas, objectTexture.animated, objectTexture.reverseAnimation, objectTexture.forward, objectTexture.parentEntity ) };