UNPKG

threex

Version:

Game Extensions for three.js http://www.threejsgames.com/extensions/

169 lines (150 loc) 5.04 kB
/** @namespace */ var THREEx = THREEx || {}; /** @namespace */ THREEx.ConvertArguments = {}; /** * TODO * currently most calls are like * THREEx.ConvertArguments.toThreeColor.apply(THREEx.ConvertArguments.toThreeColor, args) * */ /** * Convert the value into a THREE.Color object * * @return {THREE.Color} the resulting color */ THREEx.ConvertArguments.toThreeColor = function(args){ // default convertions if( args.length === 1 && typeof(args[0]) === 'number'){ return new THREE.Color(args[0]); }else if( args.length === 1 && typeof(args[0]) === 'string'){ return new THREE.Color(args[0]); }else if( args.length === 1 && args[0] instanceof THREE.Color ){ return args[0]; }else if( args.length === 3 && typeof(args[0]) === 'number' && typeof(args[1]) === 'number' && typeof(args[2]) === 'number' ){ return new THREE.Color().setRGB(args[0], args[1], args[2]); }else{ console.assert(false, "invalid parameter"); } return undefined; // never reached - just to workaround linter complaint }; /** * Convert the value into a THREE.Material object * * @return {THREE.Material} the resulting color */ THREEx.ConvertArguments.toThreeMaterial = function(args){ // default convertions if( args.length === 1 && args[0] instanceof THREE.Material ){ return args[0]; }else if( args.length === 1 && args[0] instanceof tQuery.Material ){ return args[0].get(0); }else{ console.assert(false, "invalid parameter"); } return undefined; // never reached - just to workaround linter complaint }; /** * Convert the args into a THREE.Vector3 * @return {THREE.Vector3} the resulting THREE.Vector3 */ THREEx.ConvertArguments.toVector3 = function(args){ // handle parameters if( args.length === 0 ){ return new THREE.Vector3() }else if( args[0] instanceof THREE.Vector3 && args.length === 1 ){ return args[0] }else if( typeof args[0] === "number" && args.length === 3 ){ return new THREE.Vector3(args[0], args[1], args[2]); }else if( args[0] instanceof Array && args.length === 1 ){ return new THREE.Vector3(args[0][0], args[0][1], args[0][2]); }else{ console.assert(false, "invalid parameter for Vector3"); } }; /** * Convert the args into a THREE.Vector2 * @return {THREE.Vector2} the resulting THREE.Vector2 */ THREEx.ConvertArguments.toVector2 = function(args){ // handle parameters if( args[0] instanceof THREE.Vector2 && args.length === 1 ){ return args[0] }else if( typeof args[0] === "number" && args.length === 2 ){ return new THREE.Vector2(args[0], args[1]); }else{ console.assert(false, "invalid parameter for Vector2"); } }; THREEx.ConvertArguments.toNumber = function(value){ if( args.length === 1 && typeof(value) === 'number'){ return value; }else{ console.assert(false, "invalid parameter"); } return undefined; // never reached - just to workaround linter complaint }; THREEx.ConvertArguments.toNumberZeroToOne = function(value){ if( args.length === 1 && typeof(value) === 'number'){ value = Math.min(value, 1.0); value = Math.max(value, 0); return value; }else{ console.assert(false, "invalid parameter"); } return undefined; // never reached - just to workaround linter complaint }; THREEx.ConvertArguments.toInteger = function(value){ if( args.length === 1 && typeof(value) === 'number'){ value = Math.floor(value); return value; }else{ console.assert(false, "invalid parameter"); } return undefined; // never reached - just to workaround linter complaint }; THREEx.ConvertArguments.identity = function(value){ return value; }; THREEx.ConvertArguments.toBoolean = function(args){ if( args.length === 1 && typeof(args[0]) === 'boolean'){ return args[0]; }else{ console.assert(false, "invalid parameter"); } return undefined; // never reached - just to workaround linter complaint }; THREEx.ConvertArguments.toString = function(value){ if( args.length === 1 && typeof(value) === 'string'){ return value; }else{ console.assert(false, "invalid parameter"); } return undefined; // never reached - just to workaround linter complaint }; THREEx.ConvertArguments.toTextureCube = function(args){ return THREEx.ConvertArguments.toTexture.apply(THREEx.ConvertArguments.toTexture, args); }; THREEx.ConvertArguments.toTexture = function(value){ // default convertions if( args.length === 1 && value instanceof tQuery.Texture ){ return args[0].get(0); }else if( args.length === 1 && value instanceof THREE.Texture ){ return value; }else if( args.length === 1 && value instanceof THREE.WebGLRenderTarget ){ return value; }else if( args.length === 1 && typeof(value) === 'string' ){ return THREE.ImageUtils.loadTexture(value); }else if( args.length === 1 && (value instanceof Image || value instanceof HTMLVideoElement || value instanceof HTMLCanvasElement) ){ var texture = new THREE.Texture( value ); texture.needsUpdate = true; return texture; }else{ console.assert(false, "invalid parameter"); } return undefined; // never reached - just to workaround linter complaint };