r3-legacy/build/game-lib-min.js

14 lines
411 KiB
JavaScript
Raw Normal View History

2017-12-04 13:23:15 +01:00
function GameLib(){}var __DATE__="Mon Dec 04 2017 13:21:42 GMT+0100 (CET)";if(void 0===GameLib.D3&&(GameLib.D3=function(){}),void 0===GameLib.D3.API&&(GameLib.D3.API=function(){}),void 0===GameLib.API&&(GameLib.API=function(){}),void 0===GameLib.D3.Runtime&&(GameLib.D3.Runtime=function(){}),void 0===Q){if("undefined"==typeof require)throw console.warn("You need the Q promise library for the GameLib.D3"),new Error("You need the Q promise library for the GameLib.D3");var Q=require("q")}if(void 0===_){if("undefined"==typeof require)throw console.warn("You need the lodash library for the GameLib.D3"),new Error("You need the lodash library for the GameLib.D3");var _=require("lodash")}console.log("Loading GameLib compiled at: "+__DATE__),GameLib.Event=function(){},GameLib.Event.Subscriptions={},GameLib.Event.OnceSubscriptions={},GameLib.Event.WINDOW_RESIZE=1,GameLib.Event.PARENT_SCENE_CHANGE=2,GameLib.Event.PARENT_ENTITY_CHANGE=3,GameLib.Event.INSTANCE_CLONED=4,GameLib.Event.LOAD_IMAGE=5,GameLib.Event.NEW_ENTITY=6,GameLib.Event.MATERIAL_TYPE_CHANGED=7,GameLib.Event.SAVE_COMPONENT=8,GameLib.Event.SAVE_COMPONENT_ERROR=9,GameLib.Event.COMPONENT_SAVED=10,GameLib.Event.LOAD_COMPONENT=11,GameLib.Event.LOAD_COMPONENT_ERROR=12,GameLib.Event.LOGGED_IN=13,GameLib.Event.COMPONENT_CREATED=14,GameLib.Event.COMPONENT_CLONED=15,GameLib.Event.TEXTURE_ANIMATED_CHANGE=16,GameLib.Event.ANIMATE_TEXTURE_INSTANCE=17,GameLib.Event.REMOVE_PARTICLE_ENGINE=18,GameLib.Event.GAME_PAUSE=19,GameLib.Event.TEXTURE_INSTANCE_UPDATED=20,GameLib.Event.PLAY_AUDIO=21,GameLib.Event.MATERIAL_INSTANCE_UPDATED=22,GameLib.Event.PAUSE_AUDIO=23,GameLib.Event.MESH_INSTANCE_UPDATED=24,GameLib.Event.STOP_AUDIO=25,GameLib.Event.LIGHT_INSTANCE_UPDATED=26,GameLib.Event.DELETE_COMPONENT=27,GameLib.Event.COMPONENT_DOWNLOAD_COMPLETE=28,GameLib.Event.COMPONENTS_LINKED=29,GameLib.Event.UNRESOLVED_DEPENDENCIES_UPDATE=30,GameLib.Event.REGISTER_UPDATE=31,GameLib.Event.BUILD_GUI=32,GameLib.Event.REMOVE_MESH=33,GameLib.Event.MESH_SELECTED=34,GameLib.Event.MESH_DESELECTED=35,GameLib.Event.COMPONENT_REGISTER=36,GameLib.Event.IMAGE_NOT_FOUND=37,GameLib.Event.BLENDER_DATA_RECEIVED=38,GameLib.Event.IMAGE_UPLOAD_COMPLETE=39,GameLib.Event.REMOVE_COMPONENT=40,GameLib.Event.KEY_DOWN=41,GameLib.Event.KEY_UP=42,GameLib.Event.RENDER=43,GameLib.Event.EVENT_LIST=44,GameLib.Event.COMPILE_SUCCESS=45,GameLib.Event.COMPILE_FAILED=46,GameLib.Event.IMAGE_CHANGED=47,GameLib.Event.PARENT_ENTITY_CHANGED=48,GameLib.Event.MATERIAL_TEXTURES_UPDATED=49,GameLib.Event.DELETE_COMPONENT_ERROR=50,GameLib.Event.COMPONENT_DELETED=51,GameLib.Event.COMPONENT_TYPES_UPDATED=52,GameLib.Event.AUDIO_ENDED=53,GameLib.Event.COMPONENT_LINKED=54,GameLib.Event.DONE_SAVING=55,GameLib.Event.BEFORE_RENDER=56,GameLib.Event.AFTER_RENDER=57,GameLib.Event.ARRAY_ITEM_ADDED=58,GameLib.Event.INSTANCE_CREATED=59,GameLib.Event.VISUALIZE=60,GameLib.Event.STOP_VISUALIZE=61,GameLib.Event.FETCH_COMPONENT_TYPES=62,GameLib.Event.FETCH_COMPONENTS=63,GameLib.Event.GET_API_URL=64,GameLib.Event.GET_RUNTIME=65,GameLib.Event.PARENT_WORLD_CHANGE=66,GameLib.Event.ANIMATE=67,GameLib.Event.ANIMATION_COMPILE_SUCCESS=68,GameLib.Event.ANIMATION_COMPILE_FAILED=69,GameLib.Event.SAVING=70,GameLib.Event.GAME_OVER=71,GameLib.Event.GAME_START=72,GameLib.Event.TOUCH_START=73,GameLib.Event.TOUCH_END=74,GameLib.Event.TOUCH_MOVE=75,GameLib.Event.TOUCH_CANCEL=76,GameLib.Event.GET_REMOTE_API_URL=77,GameLib.Event.DELAYED_INSTANCE_ENCOUNTERED=79,GameLib.Event.ANIMATION_MESH_ADDED=81,GameLib.Event.ANIMATION_MESH_REMOVED=82,GameLib.Event.GET_SCENE=83,GameLib.Event.CUSTOM_CODE_WINDOW_RESIZE=84,GameLib.Event.LOAD_FONT=85,GameLib.Event.FONT_NOT_FOUND=86,GameLib.Event.STOP_ALL_AUDIO=87,GameLib.Event.REGISTER_DEPENDENCIES=88,GameLib.Event.GAME_LOADED=89,GameLib.Event.LOAD_PROGRESS=91,GameLib.Event.ENTITY_LOADED=92,GameLib.Event.MOUSE_DOWN=93,GameLib.Event.MOUSE_MOVE=94,GameLib.Event.MOUSE_WHEEL=95,GameLib.Event.MOUSE_UP=96,GameLib.Event.PARTICLE_INSTANCE_UPDATED=97,GameLib.Event.GAME_DATA=98,GameLib.Event.PAUSE_ALL_AUDIO=99,GameLib.Event.CONTINUE_ALL_AUDIO=100,GameLib.Event.MUTE_AU
GameLib.Event.Emit(GameLib.Event.INSTANCE_CLONED,{component:this,instance:e})),e},GameLib.Component.prototype.saveToRemoteAPI=function(){this.save(!0)},GameLib.Component.prototype.save=function(e){var t=[],i=[],n=[];if(this.buildIdToObject(),this.saveSubscription||this.saveErrorSubscription)return void console.warn("another save is in progress");GameLib.Event.Emit(GameLib.Event.SAVING,{component:this}),this.saveSubscription=GameLib.Event.Subscribe(GameLib.Event.COMPONENT_SAVED,function(e){i.push(e.component),n.length+i.length===t.length&&(this.saveSubscription.remove(),this.saveSubscription=null,this.saveErrorSubscription.remove(),this.saveErrorSubscription=null,GameLib.Event.Emit(GameLib.Event.DONE_SAVING,{failed:n,saved:i}))}.bind(this)),this.saveErrorSubscription=GameLib.Event.Subscribe(GameLib.Event.SAVE_COMPONENT_ERROR,function(e){n.push(e.component),n.length+i.length===t.length&&(this.saveSubscription.remove(),this.saveSubscription=null,this.saveErrorSubscription.remove(),this.saveErrorSubscription=null,GameLib.Event.Emit(GameLib.Event.DONE_SAVING,{failed:n,saved:i}))}.bind(this));for(var a in this.idToObject)if(this.idToObject.hasOwnProperty(a)&&this.idToObject[a]instanceof GameLib.Component){var s=this.idToObject[a].toApiObject();t.push(s),this.publish(GameLib.Event.SAVE_COMPONENT,{apiObject:s,remote:e})}},GameLib.Component.Construct=function(e){var t=null,i=GameLib.Component.GetComponentInfo(e.componentType),n=i.constructor,a=n.FromObject,s=null;return GameLib.Event.Emit(GameLib.Event.GET_RUNTIME,null,function(e){s=e}),e.componentType===GameLib.Component.ENTITY?t=a(e,GameLib.EntityManager.Instance):i.runtime===GameLib.Component.GRAPHICS_RUNTIME?(GameLib.Utils.UndefinedOrNull(s.graphics)&&console.warn("no runtime graphics"),t=a(s.graphics,e)):i.runtime===GameLib.Component.PHYSICS_RUNTIME?(GameLib.Utils.UndefinedOrNull(s.physics)&&console.warn("no runtime physics"),t=a(s.physics,e)):i.runtime===GameLib.Component.GUI_RUNTIME?(GameLib.Utils.UndefinedOrNull(s.gui)&&console.warn("no runtime gui"),t=a(s.gui,e)):i.runtime===GameLib.Component.SOCKET_RUNTIME?(GameLib.Utils.UndefinedOrNull(s.sockets)&&console.warn("no runtime sockets"),t=a(s.sockets,e)):i.runtime===GameLib.Component.STATISTICS_RUNTIME?(GameLib.Utils.UndefinedOrNull(s.statistics)&&console.warn("no runtime statistics"),t=a(s.statistics,e)):i.runtime===GameLib.Component.DEFAULT_RUNTIME?t=a(e):(console.log("unknown runtime object found : "+e.name),console.error(e)),t},GameLib.API.Canvas=function(e,t,i,n,a){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(t="Canvas ("+e+")"),this.name=t,GameLib.Utils.UndefinedOrNull(i)&&(i=512),this.width=i,GameLib.Utils.UndefinedOrNull(n)&&(n=512),this.height=n,GameLib.API.Component.call(this,GameLib.Component.CANVAS,a)},GameLib.API.Canvas.prototype=Object.create(GameLib.Component.prototype),GameLib.API.Canvas.prototype.constructor=GameLib.API.Canvas,GameLib.API.Canvas.FromObject=function(e){return new GameLib.API.Canvas(e.id,e.name,e.width,e.height,e.parentEntity)},GameLib.API.Cast=function(e,t,i,n,a,s,o,r){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(t="Cast ("+this.id+")"),this.name=t,GameLib.Utils.UndefinedOrNull(i)&&(i=GameLib.Cast.CAST_TYPE_ROOM),this.castType=i,GameLib.Utils.UndefinedOrNull(n)&&(n="default"),this.roomId=n,GameLib.Utils.UndefinedOrNull(a)&&(a=null),this.peer=a,GameLib.Utils.UndefinedOrNull(s)&&(s="127.0.0.1"),this.serverIp=s,GameLib.Utils.UndefinedOrNull(o)&&(o=80),this.port=o,GameLib.API.Component.call(this,GameLib.Component.CAST,r)},GameLib.API.Cast.prototype=Object.create(GameLib.Component.prototype),GameLib.API.Cast.prototype.constructor=GameLib.API.Cast,GameLib.API.Cast.FromObject=function(e){return new GameLib.API.Cast(e.id,e.name,e.castType,e.roomId,e.peer,e.serverIp,e.port,e.parentEntity)},GameLib.API.Clock=function(e,t,i){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(t="Clock ("+this.id+")"),this.name=t,GameLib.AP
GameLib.Cast.FromObject=function(e,t){var i=GameLib.API.Cast.FromObject(t);return new GameLib.Cast(e,i)},GameLib.Clock=function(e,t){if(this.graphics=e,this.graphics.isNotThreeThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.Clock)return t;GameLib.API.Clock.call(this,t.id,t.name,t.parentEntity),GameLib.Component.call(this)},GameLib.Clock.prototype=Object.create(GameLib.API.Clock.prototype),GameLib.Clock.prototype.constructor=GameLib.Clock;GameLib.Clock.prototype.createInstance=function(){this.instance=new THREE.Clock,GameLib.Component.prototype.createInstance.call(this)},GameLib.Clock.prototype.updateInstance=function(){},GameLib.Clock.prototype.getDelta=function(){var e=this.instance.getDelta();return e>1/30&&(e=1/30),e},GameLib.Clock.prototype.toApiObject=function(){return new GameLib.API.Clock(this.id,this.name,GameLib.Utils.IdOrNull(this.parentEntity))},GameLib.Clock.FromObject=function(e,t){var i=GameLib.API.Clock.FromObject(t);return new GameLib.Clock(e,i)},GameLib.CoderRuntime=function(e,t,i){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(t="Coder ("+e+")"),this.name=t,GameLib.Utils.UndefinedOrNull(i)&&(i=GameLib.CoderRuntime.TYPE_CODE_MIRROR),this.coderType=i,this.createInstance()},GameLib.CoderRuntime.TYPE_CODE_MIRROR=1,GameLib.CoderRuntime.prototype.createInstance=function(){this.coderType===GameLib.CoderRuntime.TYPE_CODE_MIRROR?this.instance=CodeMirror:this.instance=null},GameLib.CoderRuntime.prototype.updateInstance=function(e){"coderType"===e&&this.createInstance()},GameLib.CoderRuntime.prototype.isNotCodeMirrorThrow=function(){if(!(this.instance instanceof CodeMirror))throw console.error("Only CodeMirror supported"),new Error("Only CodeMirror supported")},GameLib.Color=function(e,t,i,n){if(this.graphics=e,this.graphics.isNotThreeThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.Color)return t;GameLib.API.Color.call(this,t.r,t.g,t.b,t.a),GameLib.Utils.UndefinedOrNull(i)&&(i=null),this.parentObject=i,GameLib.Utils.UndefinedOrNull(n)&&(n=.001),this.grain=n,this.createInstance()},GameLib.Color.prototype=Object.create(GameLib.API.Color.prototype),GameLib.Color.prototype.constructor=GameLib.Color,GameLib.Color.prototype.createInstance=function(){this.instance=new THREE.Color(this.r,this.g,this.b)},GameLib.Color.prototype.updateInstance=function(e){this.instance.r=this.r,this.instance.g=this.g,this.instance.b=this.b,this.parentObject&&this.parentObject.updateInstance&&this.parentObject.updateInstance(e)},GameLib.Color.prototype.toApiObject=function(){return new GameLib.API.Color(this.r,this.g,this.b,this.a)},GameLib.Controls=function(e){if(GameLib.Utils.UndefinedOrNull(e)&&(e={}),e instanceof GameLib.Controls)return e;GameLib.API.Controls.call(this,e.id,e.controlsType,e.name,e.domElement,e.parentEntity);var t={domElement:GameLib.DomElement},i=!1;this.controlsType===GameLib.Controls.CONTROLS_TYPE_EDITOR&&(t.raycaster=GameLib.D3.Raycaster,t.camera=GameLib.D3.Camera,i=!0),GameLib.Component.call(this,t,i)},GameLib.Controls.prototype=Object.create(GameLib.API.Controls.prototype),GameLib.Controls.prototype.constructor=GameLib.Controls,GameLib.Controls.D3=function(){},GameLib.Controls.CONTROLS_TYPE_EDITOR=0,GameLib.Controls.CONTROLS_TYPE_TOUCH=1,GameLib.Controls.CONTROLS_TYPE_KEYBOARD=2,GameLib.Controls.CONTROLS_TYPE_MOUSE=3,GameLib.Controls.prototype.createInstance=function(){GameLib.Component.prototype.createInstance.call(this)},GameLib.Controls.prototype.updateInstance=function(){console.log("default controls update instance")},GameLib.Controls.prototype.toApiObject=function(){return new GameLib.API.Controls(this.id,this.controlsType,this.name,GameLib.Utils.IdOrNull(this.domElement),GameLib.Utils.IdOrNull(this.parentEntity))},GameLib.Controls.FromObject=function(e){var t=GameLib.API.Controls.FromObject(e);return new GameLib.Controls(t)},GameLib.Controls.D3.Editor=function(e,t,i,n){this.graphics=e,this.graphics.isNotThreeThrow(),GameLib.Utils.UndefinedOrNull(i)&&(i=null),this.raycaster=i,GameLib.Utils.UndefinedOrNull(
this.renderOrder=G,GameLib.Utils.UndefinedOrNull(f)&&(f=!1),this.isBufferMesh=f,GameLib.Utils.UndefinedOrNull(E)&&(E=!0),this.useQuaternion=E,GameLib.Utils.UndefinedOrNull(y)&&(y=!0),this.visible=y;var P=GameLib.Component.MESH;this.meshType===GameLib.D3.API.Mesh.MESH_TYPE_PLANE&&(P=GameLib.Component.MESH_PLANE),this.meshType===GameLib.D3.API.Mesh.MESH_TYPE_BOX&&(P=GameLib.Component.MESH_BOX),this.meshType===GameLib.D3.API.Mesh.MESH_TYPE_CYLINDER&&(P=GameLib.Component.MESH_CYLINDER),this.meshType===GameLib.D3.API.Mesh.MESH_TYPE_SPHERE&&(P=GameLib.Component.MESH_SPHERE),this.meshType===GameLib.D3.API.Mesh.MESH_TYPE_LINE&&(P=GameLib.Component.MESH_LINE),this.meshType===GameLib.D3.API.Mesh.MESH_TYPE_TEXT&&(P=GameLib.Component.MESH_TEXT),GameLib.API.Component.call(this,P,I)},GameLib.D3.API.Mesh.prototype=Object.create(GameLib.Component.prototype),GameLib.D3.API.Mesh.prototype.constructor=GameLib.D3.API.Mesh,GameLib.D3.API.Mesh.MESH_TYPE_NORMAL=0,GameLib.D3.API.Mesh.MESH_TYPE_SKINNED=1,GameLib.D3.API.Mesh.MESH_TYPE_CURVE=2,GameLib.D3.API.Mesh.MESH_TYPE_SPHERE=3,GameLib.D3.API.Mesh.MESH_TYPE_PLANE=4,GameLib.D3.API.Mesh.MESH_TYPE_BOX=5,GameLib.D3.API.Mesh.MESH_TYPE_CYLINDER=6,GameLib.D3.API.Mesh.MESH_TYPE_TEXT=7,GameLib.D3.API.Mesh.MESH_TYPE_LINE=8,GameLib.D3.API.Mesh.FromObject=function(e){var t=[];e.faces&&(t=e.faces.map(function(e){return GameLib.D3.API.Face.FromObject(e)}));var i=null;e.skeleton&&(i=GameLib.D3.API.Skeleton.FromObject(e.skeleton));var n=[];e.materials&&(n=e.materials.map(function(e){return e instanceof Object?GameLib.D3.API.Material.FromObject(e):e}));var a=[];e.vertices&&(a=e.vertices.map(function(e){return GameLib.D3.API.Vertex.FromObject(e)}));var s=new GameLib.API.Vector3;e.position&&(s=GameLib.API.Vector3.FromObject(e.position));var o=new GameLib.API.Vector3;e.rotation&&(o=GameLib.API.Vector3.FromObject(e.rotation));var r=new GameLib.API.Quaternion;e.quaternion&&(r=GameLib.API.Quaternion.FromObject(e.quaternion));var c=new GameLib.API.Vector3(1,1,1);e.scale&&(c=GameLib.API.Vector3.FromObject(e.scale));var m=new GameLib.API.Vector3(0,1,0);e.up&&(m=GameLib.API.Vector3.FromObject(e.up));var h=new GameLib.API.Matrix4;return e.modelMatrix&&(h=GameLib.API.Matrix4.FromObject(e.modelMatrix)),new GameLib.D3.API.Mesh(e.id,e.meshType,e.name,a,t,n,e.parentMesh,e.parentScene,i,e.skinIndices,e.skinWeights,s,r,o,c,m,h,e.renderOrder,e.isBufferMesh,e.useQuaternion,e.visible,e.parentEntity)},GameLib.D3.API.ParticleEngine=function(e,t,i,n,a,s,o,r,c,m,h,l){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(t="ParticleEngine ("+this.id+")"),this.name=t,GameLib.Utils.UndefinedOrNull(i)&&(i=new GameLib.API.Vector3(0,0,0)),this.position=i,GameLib.Utils.UndefinedOrNull(n)&&(n=new GameLib.API.Vector3(0,1,0)),this.direction=n,GameLib.Utils.UndefinedOrNull(a)&&(a=!1),this.enabled=a,GameLib.Utils.UndefinedOrNull(s)&&(s=null),this.templateParticle=s,GameLib.Utils.UndefinedOrNull(o)&&(o=1),this.particlesPerSecond=o,GameLib.Utils.UndefinedOrNull(r)&&(r=Number(1/Number(this.particlesPerSecond))),this.frequency=r,GameLib.Utils.UndefinedOrNull(c)&&(c=0),this.elapsed=c,GameLib.Utils.UndefinedOrNull(m)&&(m=null),this.camera=m,GameLib.Utils.UndefinedOrNull(h)&&(h=!1),this.pulse=h,GameLib.API.Component.call(this,GameLib.Component.PARTICLE_ENGINE,l)},GameLib.D3.API.ParticleEngine.prototype=Object.create(GameLib.Component.prototype),GameLib.D3.API.ParticleEngine.prototype.constructor=GameLib.D3.API.ParticleEngine,GameLib.D3.API.ParticleEngine.FromObject=function(e){var t=null;e.templateParticle&&(t=e.templateParticle instanceof Object?GameLib.D3.API.Particle.FromObject(e.templateParticle):e.templateParticle);var i=null;e.camera&&(i=e.camera instanceof Object?GameLib.D3.API.Camera.FromObject(e.camera):e.camera);var n=null;e.position&&(n=GameLib.API.Vector3.FromObject(e.position));var a=null;return e.direction&&(a=GameLib.API.Vector3.FromObject(e.direction)),new GameLib.D3.API.ParticleEngine(e.id,e.name,n,a,e.enabled,t,e.particlesPerSecond,e.frequency,e.elapsed,i,e.pulse,e.parentEntity)},G
this.rotationFn&&(this.instance.rotation=new Function("data",this.rotationFn).bind(this),this.publish(GameLib.Event.ANIMATION_COMPILE_SUCCESS,{component:this,type:GameLib.D3.Animation.ANIMATION_FUNCTION_TYPE_ROTATION})),this.translationFn&&(this.instance.translation=new Function("data",this.translationFn).bind(this),this.publish(GameLib.Event.ANIMATION_COMPILE_SUCCESS,{component:this,type:GameLib.D3.Animation.ANIMATION_FUNCTION_TYPE_TRANSLATION})),this.scaleFn&&(this.instance.scale=new Function("data",this.scaleFn).bind(this),this.publish(GameLib.Event.ANIMATION_COMPILE_SUCCESS,{component:this,type:GameLib.D3.Animation.ANIMATION_FUNCTION_TYPE_SCALE}))}catch(e){console.error(e),this.publish(GameLib.Event.ANIMATION_COMPILE_FAILED,{component:this})}},GameLib.D3.Animation.prototype.toApiObject=function(){return new GameLib.D3.API.Animation(this.id,this.name,this.rotationSpeed,this.translationSpeed,this.scaleSpeed,this.rotationFn,this.translationFn,this.scaleFn,this.blocking,this.applyToMeshWhenDone,this.meshes.map(function(e){return GameLib.Utils.IdOrNull(e)}),GameLib.Utils.IdOrNull(this.parentEntity))},GameLib.D3.Animation.FromObject=function(e){var t=GameLib.D3.API.Animation.FromObject(e);return new GameLib.D3.Animation(t)},GameLib.D3.Animation.prototype.launchEditor=function(){GameLib.Event.Emit(GameLib.Event.GET_RUNTIME,null,function(e){this.coder=e.coder,this.coder.isNotCodeMirrorThrow()}.bind(this));var e=null;this.functionType===GameLib.D3.Animation.ANIMATION_FUNCTION_TYPE_ROTATION&&(this.rotationFn="//when the animation is complete, return true\nreturn true;",e="rotationFn"),this.functionType===GameLib.D3.Animation.ANIMATION_FUNCTION_TYPE_TRANSLATION&&(this.translationFn="//when the animation is complete, return true\nreturn true;",e="translationFn"),this.functionType===GameLib.D3.Animation.ANIMATION_FUNCTION_TYPE_SCALE&&(this.scaleFn="//when the animation is complete, return true\nreturn true;",e="scaleFn"),e?(this.editor=this.coder.instance(document.body,{value:this[e],mode:"javascript",lineNumbers:!0,scrollbarStyle:"overlay"}),this.editor.on("change",function(){this[e]=this.editor.getValue(),this.updateInstance()}.bind(this))):console.warn("invalid function type selected")},GameLib.D3.Animation.prototype.closeEditor=function(){var e=this.editor.getWrapperElement();e.parentElement.removeChild(e)},GameLib.D3.Animation.prototype.addMesh=function(e){GameLib.Utils.PushUnique(this.meshes,e),GameLib.Event.Emit(GameLib.Event.ANIMATION_MESH_ADDED,{animation:this,mesh:e})},GameLib.D3.Animation.prototype.removeMesh=function(e){var t=this.meshes.indexOf(e);this.meshes.splice(t,1),GameLib.Event.Emit(GameLib.Event.ANIMATION_MESH_REMOVED,{animation:this,mesh:e})},GameLib.D3.Audio=function(e,t){if(this.graphics=e,this.graphics.isNotThreeThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.D3.Audio)return t;GameLib.D3.API.Audio.call(this,t.id,t.name,t.path,t.loop,t.volume,t.camera,t.overplay,t.pause,t.parentEntity),this.camera instanceof GameLib.D3.API.Camera&&(this.camera=new GameLib.D3.Camera(this.graphics,this.camera)),GameLib.Component.call(this,{camera:GameLib.D3.Camera})},GameLib.D3.Audio.prototype=Object.create(GameLib.D3.API.Audio.prototype),GameLib.D3.Audio.prototype.constructor=GameLib.D3.Audio,GameLib.D3.Audio.prototype.createInstance=function(){if(GameLib.Utils.UndefinedOrNull(this.camera)||GameLib.Utils.UndefinedOrNull(this.camera.instance))return void console.log("audio not ready to create instance");GameLib.Event.Emit(GameLib.Event.GET_API_URL,null,function(e){this.apiUrl=e.apiUrl}.bind(this));var e=new THREE.AudioListener;this.camera.instance.add(e),this.instance=new THREE.Audio(e),(new THREE.AudioLoader).load(this.apiUrl+this.path+"?ts="+Date.now(),function(e){this.instance.setBuffer(e),this.instance.setLoop(this.loop),this.instance.setVolume(this.volume),GameLib.Component.prototype.createInstance.call(this)}.bind(this))},GameLib.D3.Audio.prototype.updateInstance=function(e){"loop"===e&&this.instance.setLoop(this.loop),"volume"===e&&this.instance.setVolume(this.volume),"paused"===e&&(this.paused?
;GameLib.D3.API.Material.call(this,t.id,t.materialType,t.name,t.opacity,t.side,t.transparent,t.specular,t.lightMapIntensity,t.aoMapIntensity,t.color,t.emissive,t.emissiveIntensity,t.combine,t.shininess,t.reflectivity,t.refractionRatio,t.fog,t.wireframe,t.wireframeLineWidth,t.wireframeLineCap,t.wireframeLineJoin,t.vertexColors,t.skinning,t.morphTargets,t.morphNormals,t.lineWidth,t.lineCap,t.lineJoin,t.dashSize,t.gapWidth,t.blending,t.blendSrc,t.blendDst,t.blendEquation,t.depthTest,t.depthFunc,t.depthWrite,t.polygonOffset,t.polygonOffsetFactor,t.polygonOffsetUnits,t.alphaTest,t.clippingPlanes,t.clipShadows,t.visible,t.overdraw,t.flatShading,t.bumpScale,t.normalScale,t.displacementScale,t.displacementBias,t.roughness,t.metalness,t.pointSize,t.pointSizeAttenuation,t.spriteRotation,t.envMapIntensity,t.alphaMap,t.aoMap,t.bumpMap,t.diffuseMap,t.displacementMap,t.emissiveMap,t.environmentMap,t.lightMap,t.metalnessMap,t.normalMap,t.roughnessMap,t.specularMap,t.parentEntity),this.specular=new GameLib.Color(e,this.specular,this),this.color=new GameLib.Color(e,this.color,this),this.emissive=new GameLib.Color(e,this.emissive,this),this.alphaMap&&this.alphaMap instanceof GameLib.D3.API.Texture&&(this.alphaMap=new GameLib.D3.Texture(this.graphics,this.alphaMap)),this.aoMap&&this.aoMap instanceof GameLib.D3.API.Texture&&(this.aoMap=new GameLib.D3.Texture(this.graphics,this.aoMap)),this.bumpMap&&this.bumpMap instanceof GameLib.D3.API.Texture&&(this.bumpMap=new GameLib.D3.Texture(this.graphics,this.bumpMap)),this.diffuseMap&&this.diffuseMap instanceof GameLib.D3.API.Texture&&(this.diffuseMap=new GameLib.D3.Texture(this.graphics,this.diffuseMap)),this.displacementMap&&this.displacementMap instanceof GameLib.D3.API.Texture&&(this.displacementMap=new GameLib.D3.Texture(this.graphics,this.displacementMap)),this.emissiveMap&&this.emissiveMap instanceof GameLib.D3.API.Texture&&(this.emissiveMap=new GameLib.D3.Texture(this.graphics,this.emissiveMap)),this.environmentMap&&this.environmentMap instanceof GameLib.D3.API.Texture&&(this.environmentMap=new GameLib.D3.Texture(this.graphics,this.environmentMap)),this.lightMap&&this.lightMap instanceof GameLib.D3.API.Texture&&(this.lightMap=new GameLib.D3.Texture(this.graphics,this.lightMap)),this.metalnessMap&&this.metalnessMap instanceof GameLib.D3.API.Texture&&(this.metalnessMap=new GameLib.D3.Texture(this.graphics,this.metalnessMap)),this.normalMap&&this.normalMap instanceof GameLib.D3.API.Texture&&(this.normalMap=new GameLib.D3.Texture(this.graphics,this.normalMap)),this.roughnessMap&&this.roughnessMap instanceof GameLib.D3.API.Texture&&(this.roughnessMap=new GameLib.D3.Texture(this.graphics,this.roughnessMap)),this.specularMap&&this.specularMap instanceof GameLib.D3.API.Texture&&(this.specularMap=new GameLib.D3.Texture(this.graphics,this.specularMap)),GameLib.Component.call(this,{alphaMap:GameLib.D3.Texture,aoMap:GameLib.D3.Texture,bumpMap:GameLib.D3.Texture,diffuseMap:GameLib.D3.Texture,displacementMap:GameLib.D3.Texture,emissiveMap:GameLib.D3.Texture,environmentMap:GameLib.D3.Texture,lightMap:GameLib.D3.Texture,metalnessMap:GameLib.D3.Texture,normalMap:GameLib.D3.Texture,roughnessMap:GameLib.D3.Texture,specularMap:GameLib.D3.Texture})},GameLib.D3.Material.prototype=Object.create(GameLib.D3.API.Material.prototype),GameLib.D3.Material.prototype.constructor=GameLib.D3.Material,GameLib.D3.Material.TYPE_MULTIPLY_OPERATION=0,GameLib.D3.Material.TYPE_MIX_OPERATION=1,GameLib.D3.Material.TYPE_ADD_OPERATION=2,GameLib.D3.Material.TYPE_NO_COLORS=0,GameLib.D3.Material.TYPE_FACE_COLORS=1,GameLib.D3.Material.TYPE_VERTEX_COLORS=2,GameLib.D3.Material.TYPE_NO_BLENDING=0,GameLib.D3.Material.TYPE_NORMAL_BLENDING=1,GameLib.D3.Material.TYPE_ADDITIVE_BLENDING=2,GameLib.D3.Material.TYPE_SUBTRACTIVE_BLENDING=3,GameLib.D3.Material.TYPE_MULTIPLY_BLENDING=4,GameLib.D3.Material.TYPE_CUSTOM_BLENDING=5,GameLib.D3.Material.TYPE_ZERO_FACTOR=200,GameLib.D3.Material.TYPE_ONE_FACTOR=201,GameLib.D3.Material.TYPE_SRC_COLOR_FACTOR=202,GameLib.D3.Material.TYPE_ONE_MINUS_SRC_COLOR_FACTOR=203,GameLib.D3.Material.TYPE_SRC_ALPHA_FACTOR=204
"rotation"!==e&&"quaternion"!==e&&"useQuaternion"!==e||this.updateInstanceRotation(),"parentMesh"===e&&this.parentMesh&&this.parentMesh.instance&&this.instance.parent!==this.parentMesh.instance&&(this.instance.parent=this.parentMesh.instance),"scale"===e&&this.updateInstanceScale(),"position"===e&&this.updateInstancePosition(),"up"===e&&(this.instance.up.x=this.up.x,this.instance.up.y=this.up.y,this.instance.up.z=this.up.z),"name"===e&&(this.instance.name=this.name),"materials"===e&&1===this.materials.length&&this.materials[0].instance&&(this.instance.material=this.materials[0].instance),"renderOrder"===e&&(this.instance.renderOrder=this.renderOrder),"visible"===e&&(this.instance.visible=this.visible),this.helper&&(this.removeHelper(),this.createHelper())},GameLib.D3.Mesh.prototype.updateVerticesFromGeometryInstance=function(e){if(this.vertices=[],this.faces=[],e instanceof THREE.BufferGeometry){var t=e.getAttribute("position").array,i=e.getAttribute("uv").array;e.groups.map(function(e){for(var n=e.materialIndex,a=e.start,s=e.count,o=[],r=[],c=a;c<s;c++){var m=new GameLib.D3.Vertex(this.graphics,new GameLib.D3.API.Vertex(new GameLib.Vector3(this.graphics,new GameLib.API.Vector3(t[3*c],t[3*c+1],t[3*c+2])))),h=new GameLib.Vector2(this.graphics,new GameLib.API.Vector2(i[2*c],i[2*c+1]));r.push(h);var l=this.vertices.reduce(function(e,t,i){return t.position.equals(m.position)&&(e=i),e},-1),p=l;-1===l&&(this.vertices.push(m),p=this.vertices.length-1),o.push(p),3===o.length&&(this.faces.push(new GameLib.D3.Face(this.graphics,new GameLib.D3.API.Face(null,null,o[0],o[1],o[2],n,[[r[0],r[1],r[2]]]))),r=[],o=[])}}.bind(this)),console.log("todo : update vertices from buffer geometry")}else{var n=0;e.faces.map(function(t,i){n++,n%100==0&&console.log("processed "+n+" faces"),this.faces.push(new GameLib.D3.Face(this.graphics,new GameLib.D3.API.Face(null,null,t.a,t.b,t.c,t.materialIndex,[[new GameLib.API.Vector2(e.faceVertexUvs[0][i][0].x,e.faceVertexUvs[0][i][0].y),new GameLib.API.Vector2(e.faceVertexUvs[0][i][1].x,e.faceVertexUvs[0][i][1].y),new GameLib.API.Vector2(e.faceVertexUvs[0][i][2].x,e.faceVertexUvs[0][i][2].y)]],new GameLib.Color(this.graphics,new GameLib.API.Color(t.color.r,t.color.g,t.color.b)),t.vertexColors.map(function(e){return new GameLib.Color(this.graphics,new GameLib.API.Color(e.r,e.g,e.b))}.bind(this)),t.vertexNormals.map(function(e){return new GameLib.Vector3(this.graphics,new GameLib.API.Vector3(e.x,e.y,e.z))}.bind(this)),new GameLib.Vector3(this.graphics,new GameLib.API.Vector3(t.normal.x,t.normal.y,t.normal.z)))))}.bind(this)),n=0,e.vertices.map(function(e){n++,n%100==0&&console.log("processed "+n+" vertices"),this.vertices.push(new GameLib.D3.Vertex(this.graphics,new GameLib.D3.API.Vertex(new GameLib.Vector3(this.graphics,new GameLib.API.Vector3(e.x,e.y,e.z)))))}.bind(this))}},GameLib.D3.Mesh.prototype.applyBones=function(e){this.skinIndices.map(function(t){e.skinIndices.push(new THREE.Vector4(t.x,t.y,t.z,t.w))}),this.skinWeights.map(function(t){e.skinWeights.push(new THREE.Vector4(t.x,t.y,t.z,t.w))})},GameLib.D3.Mesh.prototype.addChild=function(e,t){if(!this.instance)throw new Error("mesh instance not loaded yet : "+this.name);if(GameLib.Utils.UndefinedOrNull(e))throw new Error("no child mesh instance");if(GameLib.Utils.UndefinedOrNull(t))throw new Error("no child mesh");this.instance.add(e),e.parent=this.instance,t.parentMesh=this},GameLib.D3.Mesh.prototype.setParentMesh=function(e){if(GameLib.Utils.UndefinedOrNull(e)){if(!(this.instance&&this.instance.parent&&this.parentScene.instance))throw new Error("Not enough information to detach");this.instance.parent.updateMatrixWorld();var t=new THREE.Vector3;t.setFromMatrixPosition(this.instance.matrixWorld),THREE.SceneUtils.detach(this.instance,this.instance.parent,this.parentScene.instance),this.parentMesh=null,this.position.x=t.x,this.position.y=t.y,this.position.z=t.z,this.updateInstancePosition()}else{if(!this.instance)throw new Error("No valid instance at time of adding to parent for mesh "+this.name);if(!(e instanceof GameLib.D3.Mesh))throw new Error("Not a
this.templateParticle.mesh.updateInstance("position",!0)),"direction"===e&&(this.direction.instance.x=this.direction.x,this.direction.instance.y=this.direction.y,this.direction.instance.z=this.direction.z,this.templateParticle.direction=this.direction.clone(),this.templateParticle.direction.updateInstance("direction",!0))},GameLib.D3.ParticleEngine.prototype.remove=function(){if(this.removeSubscription)return void console.log("already another remove subscription for "+this.name);this.removeSubscription=GameLib.Event.Subscribe(GameLib.Event.REMOVE_PARTICLE_ENGINE,function(e){e.component===this&&(this.isClone?(GameLib.Event.Emit(GameLib.Event.REMOVE_COMPONENT,{component:this.templateParticle.mesh}),GameLib.Event.Emit(GameLib.Event.REMOVE_COMPONENT,{component:this.templateParticle}),GameLib.Event.Emit(GameLib.Event.REMOVE_COMPONENT,{component:this})):GameLib.Component.prototype.remove.call(this),this.removeSubscription.remove(),this.removeSubscription=null)}.bind(this)),this.disabledForRemoval=!0},GameLib.D3.ParticleEngine.prototype.clone=function(){var e=this.templateParticle.mesh.clone(),t=this.templateParticle.clone();t.mesh=e,t.instance=e.instance;var i=GameLib.Component.prototype.clone.call(this);return i.templateParticle=t,i},GameLib.D3.ParticleEngine.prototype.processParticles=function(e){},GameLib.D3.ParticleEngine.prototype.createNewParticle=function(e){},GameLib.D3.ParticleEngine.prototype.toApiObject=function(){return new GameLib.D3.API.ParticleEngine(this.id,this.name,this.position.toApiObject(),this.direction.toApiObject(),this.enabled,GameLib.Utils.IdOrNull(this.templateParticle),this.particlesPerSecond,this.frequency,this.elapsed,GameLib.Utils.IdOrNull(this.camera),this.pulse,GameLib.Utils.IdOrNull(this.parentEntity))},GameLib.D3.ParticleEngine.FromObject=function(e,t){var i=GameLib.D3.API.ParticleEngine.FromObject(t);return new GameLib.D3.ParticleEngine(e,i)},GameLib.D3.Particle=function(e,t){if(this.graphics=e,this.graphics.isNotThreeThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.D3.Particle)return t;if(GameLib.D3.API.Particle.call(this,t.id,t.name,t.lifeTime,t.elapsed,t.mesh,t.opacityType,t.opacityFactor,t.positionOffsetType,t.positionOffset,t.positionOffsetFn,t.directionType,t.direction,t.directionFn,t.speedType,t.speed,t.scaleType,t.scale,t.scaleFn,t.rotationType,t.rotation,t.rotationFn,t.parentEngine,t.parentEntity),this.mesh instanceof GameLib.D3.API.Mesh&&(this.mesh=new GameLib.D3.Mesh(e,this.mesh)),!(this.positionOffset instanceof GameLib.API.Vector3))throw console.warn("positionOffset not instance of API.Vector3"),new Error("positionOffset not instance of API.Vector3");if(this.positionOffset=new GameLib.Vector3(e,this.positionOffset,this),!(this.direction instanceof GameLib.API.Vector3))throw console.warn("direction not instance of API.Vector3"),new Error("direction not instance of API.Vector3");if(this.direction=new GameLib.Vector3(e,this.direction,this),!(this.scale instanceof GameLib.API.Vector3))throw console.warn("scale not instance of API.Vector3"),new Error("scale not instance of API.Vector3");if(this.scale=new GameLib.Vector3(e,this.scale,this),!(this.rotation instanceof GameLib.API.Vector3))throw console.warn("rotation not instance of API.Vector3"),new Error("rotation not instance of API.Vector3");this.rotation=new GameLib.Vector3(e,this.rotation,this),GameLib.Component.call(this,{mesh:GameLib.D3.Mesh,parentEngine:GameLib.D3.ParticleEngine})},GameLib.D3.Particle.prototype=Object.create(GameLib.D3.API.Particle.prototype),GameLib.D3.Particle.prototype.constructor=GameLib.D3.Particle,GameLib.D3.Particle.OPACITY_TYPE_CONSTANT=1,GameLib.D3.Particle.OPACITY_TYPE_DECREASE_LINEAR=2,GameLib.D3.Particle.OPACITY_TYPE_INCREASE_LINEAR=3,GameLib.D3.Particle.POSITION_OFFSET_TYPE_CONSTANT=1,GameLib.D3.Particle.POSITION_OFFSET_TYPE_RANDOM=2,GameLib.D3.Particle.POSITION_OFFSET_TYPE_FUNCTION=3,GameLib.D3.Particle.DIRECTION_TYPE_CONSTANT=1,GameLib.D3.Particle.DIRECTION_TYPE_RANDOM=2,GameLib.D3.Particle.DIRECTION_TYPE_RANDOM_NORMALIZED=3,GameLib.D3.Particle.DIRECTION_TYPE_FUNCTION=4,Game
this.instance.domElement.height=this.height,"clearColor"===e&&this.instance.setClearColor(new THREE.Color(this.clearColor.r,this.clearColor.g,this.clearColor.b),1-this.clearColor.a),"autoClear"===e&&(this.instance.autoClear=this.autoClear),"preserveDrawingBuffer"===e&&(this.instance.preserveDrawingBuffer=this.preserveDrawingBuffer),this.clippingPlanes.length>0?this.instance.clippingPlanes=this.clippingPlanes.map(function(e){if(!e.isClippingPlane||!e.instance||!e.instance.clipping)throw new Error("is not a clipping plane or no clipping plane instance");return e.instance.clipping}):this.instance.clippingPlanes=[],"sortObjects"===e&&(this.instance.sortObjects=this.sortObjects);else try{this.createInstance()}catch(e){console.error(e.message)}},GameLib.D3.Renderer.prototype.toApiObject=function(){return new GameLib.D3.API.Renderer(this.id,this.name,this.autoClear,this.localClipping,this.width,this.height,this.preserveDrawingBuffer,GameLib.Utils.IdOrNull(this.domElement),this.clearColor.toApiObject(),GameLib.Utils.IdOrNull(this.camera),this.scenes.map(function(e){return GameLib.Utils.IdOrNull(e)}),this.viewports.map(function(e){return GameLib.Utils.IdOrNull(e)}),this.clippingPlanes.map(function(e){return GameLib.Utils.IdOrNull(e)}),GameLib.Utils.IdOrNull(this.bufferScene),GameLib.Utils.IdOrNull(this.bufferCamera),GameLib.Utils.IdOrNull(this.renderTarget),GameLib.Utils.IdOrNull(this.defaultScene),this.sortObjects,GameLib.Utils.IdOrNull(this.parentEntity))},GameLib.D3.Renderer.FromObject=function(e,t){var i=GameLib.D3.API.Renderer.FromObject(t);return new GameLib.D3.Renderer(e,i)},GameLib.D3.Renderer.prototype.render=function(e,t){this.instance&&(GameLib.Utils.UndefinedOrNull(t)&&(t=this.scenes),this.viewports.length>1&&(this.instance.autoClear=!1),t.length>1&&(this.instance.autoClear=!1),this.instance.clear(),this.bufferScene&&this.bufferScene.instance&&this.bufferCamera&&this.bufferCamera.instance&&this.renderTarget&&this.renderTarget.instance&&this.instance.render(this.bufferScene.instance,this.bufferCamera.instance,this.renderTarget.instance),this.viewports.map(function(e){this.instance.setViewport(e.x*this.width,e.y*this.height,e.width*this.width,e.height*this.height),t.map(function(e){e.instance&&(this.camera.instance||e.renderCamera||e.renderCamera.instance)&&(e.renderCamera&&e.renderCamera.instance?this.instance.render(e.instance,e.renderCamera.instance):this.instance.render(e.instance,this.camera.instance))}.bind(this))}.bind(this)))},GameLib.D3.Renderer.prototype.setSize=function(e,t){this.width=e,this.height=t,this.instance?this.instance.setSize(this.width,this.height):console.log("renderer not ready to set size")},GameLib.D3.RigidBody=function(e,t){if(this.physics=e,this.physics.isNotCannonThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.D3.RigidBody)return t;GameLib.D3.API.RigidBody.call(this,t.id,t.name,t.mass,t.friction,t.position,t.quaternion,t.velocity,t.angularVelocity,t.linearDamping,t.angularDamping,t.allowSleep,t.sleepSpeedLimit,t.sleepTimeLimit,t.collisionFilterGroup,t.collisionFilterMask,t.fixedRotation,t.shapes,t.kinematic,t.parentMesh,t.parentPhysicsWorld,t.parentEntity),this.position=new GameLib.Vector3(this.physics,this.position,this),this.quaternion=new GameLib.Quaternion(this.physics,this.quaternion,this),this.velocity=new GameLib.Vector3(this.physics,this.velocity,this),this.angularVelocity=new GameLib.Vector3(this.physics,this.angularVelocity,this),this.force=new GameLib.Vector3(this.physics),this.forcePoint=new GameLib.Vector3(this.physics),GameLib.Component.call(this,{shapes:[GameLib.D3.Shape],parentMesh:GameLib.D3.Mesh,parentPhysicsWorld:GameLib.D3.PhysicsWorld})},GameLib.D3.RigidBody.prototype=Object.create(GameLib.D3.API.RigidBody.prototype),GameLib.D3.RigidBody.prototype.constructor=GameLib.D3.RigidBody,GameLib.D3.RigidBody.prototype.createInstance=function(){this.instance=new CANNON.Body({mass:this.mass,friction:this.friction,position:this.position.instance,quaternion:this.quaternion.instance,velocity:this.velocity.instance,angularVelocity:this.angularVelocity.instance,
if(!t)return null;var i=GameLib.D3.API.Skeleton.FromObject(t);return new GameLib.D3.Skeleton(e,i)},GameLib.D3.Solver=function(e,t){if(this.physics=e,this.physics.isNotCannonThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.D3.Solver)return t;GameLib.D3.API.Solver.call(this,t.id,t.name,t.solverType,t.iterations,t.tolerance,t.parentEntity),GameLib.Component.call(this)},GameLib.D3.Solver.prototype=Object.create(GameLib.D3.API.Solver.prototype),GameLib.D3.Solver.prototype.constructor=GameLib.D3.Solver,GameLib.D3.Solver.prototype.createInstance=function(){if(this.solverType===GameLib.D3.API.Solver.GS_SOLVER)this.instance=new CANNON.GSSolver;else{if(this.solverType!==GameLib.D3.API.Solver.SPLIT_SOLVER)throw new Error("unsupported solver type: "+this.solverType);this.instance=new CANNON.SplitSolver}this.instance.tolerance=this.tolerance,this.instance.iterations=this.iterations,GameLib.Component.prototype.createInstance.call(this)},GameLib.D3.Solver.prototype.updateInstance=function(){this.solverType===GameLib.D3.API.Solver.GS_SOLVER&&(this.instance instanceof CANNON.GSSolver||(this.instance=new CANNON.GSSolver)),this.solverType===GameLib.D3.API.Solver.SPLIT_SOLVER&&(this.instance instanceof CANNON.SplitSolver||(this.instance=new CANNON.SplitSolver)),this.instance.iterations=this.iterations,this.instance.tolerance=this.tolerance},GameLib.D3.Solver.prototype.toApiObject=function(){return new GameLib.D3.API.Solver(this.id,this.name,this.solverType,this.iterations,this.tolerance,GameLib.Utils.IdOrNull(this.parentEntity))},GameLib.D3.Solver.FromObject=function(e,t){var i=GameLib.D3.API.Solver.FromObject(t);return new GameLib.D3.Solver(e,i)},GameLib.D3.Spline=function(e,t){if(this.graphics=e,this.graphics.isNotThreeThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.D3.Spline)return t;GameLib.D3.API.Spline.call(this,t.id,t.name,t.vertices,t.parentEntity),this.vertices=this.vertices.map(function(t){return new GameLib.Vector3(e,t,this)}),GameLib.Component.call(this)},GameLib.D3.Spline.prototype=Object.create(GameLib.D3.API.Spline.prototype),GameLib.D3.Spline.prototype.constructor=GameLib.D3.Spline,GameLib.D3.Spline.prototype.createInstance=function(){var e=this.vertices.map(function(e){if(GameLib.Utils.UndefinedOrNull(e))throw new Error("no vertex");if(GameLib.Utils.UndefinedOrNull(e.instance))throw new Error("no vertex instance");return e.instance});this.instance=THREE.CatmullRomCurve3(e),GameLib.Component.prototype.createInstance.call(this)},GameLib.D3.Spline.prototype.updateInstance=function(){var e=this.vertices.map(function(e){if(GameLib.Utils.UndefinedOrNull(e))throw new Error("no vertex");if(GameLib.Utils.UndefinedOrNull(e.instance))throw new Error("no vertex instance");return e.instance});this.instance=new THREE.CatmullRomCurve3(e)},GameLib.D3.Spline.prototype.toApiObject=function(){return new GameLib.D3.API.Spline(this.id,this.name,this.vertices.map(function(e){return e.toApiObject()}),GameLib.Utils.IdOrNull(this.parentEntity))},GameLib.D3.Spline.FromObject=function(e,t){var i=GameLib.D3.API.Spline.FromObject(t);return new GameLib.D3.Spline(e,i)},GameLib.D3.Spline.prototype.getPointAt=function(e){var t=this.instance.getPointAt(e);return new GameLib.Vector3(this.graphics,new GameLib.API.Vector3(t.x,t.y,t.z),this,.1)},GameLib.D3.Texture=function(e,t){if(this.graphics=e,this.graphics.isNotThreeThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.D3.Texture)return t;GameLib.D3.API.Texture.call(this,t.id,t.textureType,t.name,t.image,t.images,t.wrapS,t.wrapT,t.repeat,t.data,t.format,t.mapping,t.magFilter,t.minFilter,t.textureType,t.anisotropy,t.offset,t.generateMipmaps,t.flipY,t.mipmaps,t.unpackAlignment,t.premultiplyAlpha,t.encoding,t.canvas,t.animated,t.reverseAnimation,t.forward,t.parentEntity),this.offset=new GameLib.Vector2(this.graphics,this.offset,this),this.repeat=new GameLib.Vector2(this.graphics,this.repeat,this),this.image instanceof GameLib.API.Image&&(this.image=new GameLib.Image(this.graphics,this.image)),this.images=this.images.map(function(e){return e instanceof
"statisticsType"===e&&this.createInstance()},GameLib.StatisticsRuntime.prototype.isNotStatsThrow=function(){if(this.instance!==Stats)throw console.error("Only stats supported"),new Error("Only stats supported")},GameLib.Stats=function(e,t){if(this.stats=e,this.stats.isNotStatsThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.Stats)return t;GameLib.API.Stats.call(this,t.id,t.name,t.domElement,t.parentEntity),GameLib.Component.call(this,{domElement:GameLib.DomElement})},GameLib.Stats.prototype=Object.create(GameLib.Component.prototype),GameLib.Stats.prototype.constructor=GameLib.Stats,GameLib.Stats.prototype.createInstance=function(){this.instance=this.stats.instance(),this.resize(),this.domElement.instance.parentElement.appendChild(this.instance.dom),GameLib.Component.prototype.createInstance.call(this)},GameLib.Stats.prototype.updateInstance=function(){this.instance=new this.stats},GameLib.Stats.prototype.toApiObject=function(){return new GameLib.API.Stats(this.id,this.name,GameLib.Utils.IdOrNull(this.domElement),GameLib.Utils.IdOrNull(this.parentEntity))},GameLib.Stats.FromObject=function(e,t){var i=GameLib.API.Stats.FromObject(t);return new GameLib.Stats(e,i)},GameLib.Stats.prototype.resize=function(){console.log("override stats resize per implementation")},GameLib.Stats.prototype.start=function(){this.instance.begin()},GameLib.Stats.prototype.end=function(){this.instance.end()},GameLib.System=function(e){if(GameLib.Utils.UndefinedOrNull(e)&&(e={}),e instanceof GameLib.System)return e;GameLib.API.System.call(this,e.id,e.name,e.systemType,e.parentEntity),this.started=!1,this.paused=!1;var t={};e.systemType===GameLib.System.SYSTEM_TYPE_INPUT&&(t.mouseControls=[GameLib.Controls.Mouse],t.keyboardControls=[GameLib.Controls.Keyboard],t.touchControls=[GameLib.Controls.Touch],t.editorControls=[GameLib.Controls.D3.Editor]),e.systemType===GameLib.System.SYSTEM_TYPE_AUDIO&&(t.audioComponents=[GameLib.D3.Audio]),GameLib.Component.call(this,t)},GameLib.System.prototype=Object.create(GameLib.API.System.prototype),GameLib.System.prototype.constructor=GameLib.System,GameLib.System.SYSTEM_TYPE_NONE=0,GameLib.System.SYSTEM_TYPE_RENDER=1,GameLib.System.SYSTEM_TYPE_ANIMATION=2,GameLib.System.SYSTEM_TYPE_INPUT=4,GameLib.System.SYSTEM_TYPE_STORAGE=8,GameLib.System.SYSTEM_TYPE_GUI=16,GameLib.System.SYSTEM_TYPE_PHYSICS=32,GameLib.System.SYSTEM_TYPE_LINKING=64,GameLib.System.SYSTEM_TYPE_CUSTOM=128,GameLib.System.SYSTEM_TYPE_VISUALIZATION=256,GameLib.System.SYSTEM_TYPE_PARTICLE=512,GameLib.System.SYSTEM_TYPE_AUDIO=1024,GameLib.System.SYSTEM_TYPE_ALL=65535,GameLib.System.prototype.createInstance=function(){this.instance=!0,GameLib.Component.prototype.createInstance.call(this)},GameLib.System.prototype.start=function(){this.started=!0,console.log("starting "+this.name)},GameLib.System.prototype.stop=function(){this.started=!1,console.log("stopping "+this.name)},GameLib.System.prototype.toApiObject=function(){return new GameLib.API.System(this.id,this.name,this.systemType,GameLib.Utils.IdOrNull(this.parentEntity))},GameLib.System.prototype.restart=function(){console.log("restarting system : "+this.name),this.stop(),this.start()},GameLib.System.Animation=function(e){GameLib.System.call(this,e),this.animations={},this.latest={},this.textures={},this.textureIds=[],this.animationMeshAddedSubscription=null,this.animationMeshRemovedSubscription=null,this.instanceCreatedSubscription=null,this.removeComponentSubscription=null,this.textureAnimatedSubscription=null,this.animateTextureInstanceSubscription=null},GameLib.System.Animation.prototype=Object.create(GameLib.System.prototype),GameLib.System.Animation.prototype.constructor=GameLib.System.Animation,GameLib.System.Animation.prototype.start=function(){GameLib.System.prototype.start.call(this),this.beforeRenderSubscription=GameLib.Event.Subscribe(GameLib.Event.BEFORE_RENDER,this.beforeRender.bind(this)),GameLib.EntityManager.Instance.queryComponents(GameLib.Component.ANIMATION).map(function(e){e.meshes.map(function(t){this.attachAnimation(e,t)}.bind(this))}.bind(this)),this.animation
logarithmic:GameLib.D3.Particle.SPEED_TYPE_LOGARITHMIC,"1 / log":GameLib.D3.Particle.SPEED_TYPE_ONE_OVER_LOG,exp:GameLib.D3.Particle.SPEED_TYPE_EXP,"1 / exp":GameLib.D3.Particle.SPEED_TYPE_ONE_OVER_EXP}));else if("scaleType"===i)o.push(e.add(n,i,{constant:GameLib.D3.Particle.SCALE_TYPE_CONSTANT,linear:GameLib.D3.Particle.SCALE_TYPE_LINEAR,exponential:GameLib.D3.Particle.SCALE_TYPE_EXPONENTIAL,random:GameLib.D3.Particle.SCALE_TYPE_RANDOM,"random (x = y)":GameLib.D3.Particle.SCALE_TYPE_RANDOM_X_EQUALS_Y,function:GameLib.D3.Particle.SCALE_TYPE_FUNCTION}));else if("rotationType"===i)o.push(e.add(n,i,{constant:GameLib.D3.Particle.ROTATION_TYPE_CONSTANT,random:GameLib.D3.Particle.ROTATION_TYPE_RANDOM,function:GameLib.D3.Particle.ROTATION_TYPE_FUNCTION}));else if("broadphaseType"===i)o.push(e.add(n,i,{naive:GameLib.D3.Broadphase.BROADPHASE_TYPE_NAIVE,grid:GameLib.D3.Broadphase.BROADPHASE_TYPE_GRID,sap:GameLib.D3.Broadphase.BROADPHASE_TYPE_SAP}));else if("solverType"===i)o.push(e.add(n,i,{gs:GameLib.D3.API.Solver.GS_SOLVER,split:GameLib.D3.API.Solver.SPLIT_SOLVER}));else if("meshType"===i)o.push(e.add(n,i,{normal:GameLib.D3.API.Mesh.MESH_TYPE_NORMAL,curve:GameLib.D3.API.Mesh.MESH_TYPE_CURVE,skinned:GameLib.D3.API.Mesh.MESH_TYPE_SKINNED,plane:GameLib.D3.API.Mesh.MESH_TYPE_PLANE,sphere:GameLib.D3.API.Mesh.MESH_TYPE_SPHERE,box:GameLib.D3.API.Mesh.MESH_TYPE_BOX,cylinder:GameLib.D3.API.Mesh.MESH_TYPE_CYLINDER,text:GameLib.D3.API.Mesh.MESH_TYPE_TEXT}));else if("cameraType"===i)o.push(e.add(n,i,{perspective:GameLib.D3.Camera.CAMERA_TYPE_PERSPECTIVE,orthographic:GameLib.D3.Camera.CAMERA_TYPE_ORTHOGONAL}));else if("materialType"===i)o.push(e.add(n,i,{standard:GameLib.D3.Material.MATERIAL_TYPE_STANDARD,basic:GameLib.D3.Material.MATERIAL_TYPE_BASIC,phong:GameLib.D3.Material.MATERIAL_TYPE_PHONG,points:GameLib.D3.Material.MATERIAL_TYPE_POINTS,toon:GameLib.D3.Material.MATERIAL_TYPE_TOON,"line basic":GameLib.D3.Material.MATERIAL_TYPE_LINE_BASIC}));else if("side"===i)o.push(e.add(n,i,{double:GameLib.D3.Material.TYPE_DOUBLE_SIDE,front:GameLib.D3.Material.TYPE_FRONT_SIDE,back:GameLib.D3.Material.TYPE_BACK_SIDE}));else if("combine"===i)o.push(e.add(n,i,{multiply:GameLib.D3.Material.TYPE_MULTIPLY_OPERATION,mix:GameLib.D3.Material.TYPE_MIX_OPERATION,add:GameLib.D3.Material.TYPE_ADD_OPERATION}));else if("vertexColors"===i)o.push(e.add(n,i,{none:GameLib.D3.Material.TYPE_NO_COLORS,face:GameLib.D3.Material.TYPE_FACE_COLORS,vertex:GameLib.D3.Material.TYPE_VERTEX_COLORS}));else if("blending"===i)o.push(e.add(n,i,{none:GameLib.D3.Material.TYPE_NO_BLENDING,normal:GameLib.D3.Material.TYPE_NORMAL_BLENDING,additive:GameLib.D3.Material.TYPE_ADDITIVE_BLENDING,subtractive:GameLib.D3.Material.TYPE_SUBTRACTIVE_BLENDING,multiply:GameLib.D3.Material.TYPE_MULTIPLY_BLENDING,custom:GameLib.D3.Material.TYPE_CUSTOM_BLENDING}));else if("blendSrc"===i)o.push(e.add(n,i,{zero:GameLib.D3.Material.TYPE_ZERO_FACTOR,one:GameLib.D3.Material.TYPE_ONE_FACTOR,"source color":GameLib.D3.Material.TYPE_SRC_COLOR_FACTOR,"one minus source color":GameLib.D3.Material.TYPE_ONE_MINUS_SRC_COLOR_FACTOR,"source alpha":GameLib.D3.Material.TYPE_SRC_ALPHA_FACTOR,"one minus source alpha":GameLib.D3.Material.TYPE_ONE_MINUS_SRC_ALPHA_FACTOR,"destination alpha":GameLib.D3.Material.TYPE_DST_ALPHA_FACTOR,"one minus destination alpha":GameLib.D3.Material.TYPE_ONE_MINUS_DST_ALPHA_FACTOR,"destination color":GameLib.D3.Material.TYPE_DST_COLOR_FACTOR,"one minus destination color":GameLib.D3.Material.TYPE_ONE_MINUS_DST_COLOR_FACTOR,"source alpha saturate":GameLib.D3.Material.TYPE_SRC_ALPHA_SATURATE_FACTOR}));else if("blendDst"===i)o.push(e.add(n,i,{zero:GameLib.D3.Material.TYPE_ZERO_FACTOR,one:GameLib.D3.Material.TYPE_ONE_FACTOR,"source color":GameLib.D3.Material.TYPE_SRC_COLOR_FACTOR,"one minus source color":GameLib.D3.Material.TYPE_ONE_MINUS_SRC_COLOR_FACTOR,"source alpha":GameLib.D3.Material.TYPE_SRC_ALPHA_FACTOR,"one minus source alpha":GameLib.D3.Material.TYPE_ONE_MINUS_SRC_ALPHA_FACTOR,"destination alpha":GameLib.D3.Material.TYPE_DST_ALPHA_FACTOR,"one minus destination alpha":GameLib.D3.Material.TYPE_ONE
this.parentEntityChangeSubscription=this.subscribe(GameLib.Event.PARENT_ENTITY_CHANGE,this.onParentEntityChange),this.instanceCreatedSubscription=this.subscribe(GameLib.Event.INSTANCE_CREATED,this.instanceCreated),this.instanceClonedSubscription=this.subscribe(GameLib.Event.INSTANCE_CLONED,this.instanceCloned),this.removeMeshSubscription=this.subscribe(GameLib.Event.REMOVE_MESH,this.removeMesh),this.imageChangedSubscription=this.subscribe(GameLib.Event.IMAGE_CHANGED,this.imageChanged),this.materialTypeChangedSubscription=this.subscribe(GameLib.Event.MATERIAL_TYPE_CHANGED,this.materialTypeChanged),this.arrayItemAddedSubscription=this.subscribe(GameLib.Event.ARRAY_ITEM_ADDED,this.arrayItemAdded)},GameLib.System.Linking.prototype.link=function(e,t){for(var i in e.linkedObjects)if(e.linkedObjects.hasOwnProperty(i))if(e.linkedObjects[i]instanceof Array){var n=[];e[i]=e[i].map(function(a){return a===t.component.id?(n.push({parent:e,property:i,child:t.component}),t.component):a}),n.map(function(e){GameLib.Event.Emit(GameLib.Event.COMPONENT_LINKED,e)})}else e[i]&&e[i]===t.component.id&&(e[i]=t.component,GameLib.Event.Emit(GameLib.Event.COMPONENT_LINKED,{parent:e,property:i,child:t.component}))},GameLib.System.Linking.prototype.resolveDependencies=function(e){if(!e.loaded)return!1;var t=this.dependencies[e.id];if(GameLib.Utils.UndefinedOrNull(t))return!1;t.map(function(t){if(this.link(t,{component:e}),GameLib.Utils.PushUnique(this.resolved,e),GameLib.Utils.UndefinedOrNull(t.dependencies)||t.dependencies instanceof Array&&0===t.dependencies.length){if(!t.loaded||GameLib.Utils.UndefinedOrNull(t.instance))try{t.performInstanceCreation()}catch(e){console.error(e)}}else{var i=t.dependencies.indexOf(e.id);-1!==i&&t.dependencies.splice(i,1),0===t.dependencies.length&&t.performInstanceCreation()}}.bind(this)),delete this.dependencies[e.id],GameLib.Event.Emit(GameLib.Event.UNRESOLVED_DEPENDENCIES_UPDATE,{dependencies:this.dependencies}),GameLib.Utils.IsEmpty(this.dependencies)&&(GameLib.Event.Emit(GameLib.Event.COMPONENTS_LINKED,{components:this.resolved.map(function(e){return e})}),this.resolved=[])},GameLib.System.Linking.prototype.registerDependencies=function(e){e.dependencies&&e.dependencies.length>0&&(e.dependencies=e.dependencies.reduce(function(t,i){var n=GameLib.EntityManager.Instance.findComponentById(i);return n&&n.loaded?(this.link(e,{component:n}),GameLib.Utils.PushUnique(this.resolved,n)):(GameLib.Utils.UndefinedOrNull(this.dependencies[i])&&(this.dependencies[i]=[]),-1===this.dependencies[i].indexOf(e)&&(this.dependencies[i].push(e),GameLib.Event.Emit(GameLib.Event.UNRESOLVED_DEPENDENCIES_UPDATE,{dependencies:this.dependencies})),t.push(i)),t}.bind(this),[]),0===e.dependencies.length&&e.performInstanceCreation())},GameLib.System.Linking.prototype.componentCreated=function(e){var t=e.component;this.registerDependencies(t),this.resolveDependencies(t)},GameLib.System.Linking.prototype.componentCloned=function(e){if(this.componentCreated(e),e.component instanceof GameLib.D3.Mesh){if(!(e.parent instanceof GameLib.D3.Mesh))throw new Error("no scene parent");e.parent.parentScene&&e.parent.parentScene.addClone(e.component)}},GameLib.System.Linking.prototype.registerDependenciesDirect=function(e){this.registerDependencies(e.component)},GameLib.System.Linking.prototype.removeComponent=function(e){if(!e.component)return void console.error("no component to remove");var t=e.component;t.parentEntity instanceof GameLib.Entity&&t.parentEntity.removeComponent(t),t instanceof GameLib.D3.Mesh&&t.parentScene instanceof GameLib.D3.Scene&&(t.removeHelper(),t.parentScene.removeObject(t)),t instanceof GameLib.D3.Light&&t.parentScene instanceof GameLib.D3.Scene&&t.parentScene.removeObject(t),t instanceof GameLib.Entity&&GameLib.EntityManager.Instance.removeEntity(t)},GameLib.System.Linking.prototype.imageChanged=function(e){GameLib.EntityManager.Instance.queryComponents(GameLib.Component.MATERIAL).map(function(t){-1!==t.getTextures().indexOf(e.texture)&&t.updateInstance()})},GameLib.System.Linking.prototype.arrayItemAdded=function(e){e.component i
GameLib.Vector2.prototype.copy=function(e){return GameLib.Utils.UndefinedOrNull(e)?new GameLib.Vector2(this.graphics,new GameLib.API.Vector2(this.x,this.y),this.parentObject,this.grain):(this.x=e.x,this.y=e.y,this)},GameLib.Vector2.prototype.equals=function(e){return this.x==e.x&&this.y==e.y},GameLib.Vector2.prototype.add=function(e){if(!(e instanceof GameLib.API.Vector2||e instanceof GameLib.API.Vector3||e instanceof GameLib.API.Vector4||e instanceof GameLib.API.Quaternion))throw console.warn("Could not add Vector2"),new Error("Could not add Vector2");this.x+=e.x,this.y+=e.y},GameLib.Vector2.prototype.subtract=function(e){if(!(e instanceof GameLib.API.Vector2||e instanceof GameLib.API.Vector3||e instanceof GameLib.API.Vector4||e instanceof GameLib.API.Quaternion))throw console.warn("Could not subtract Vector2"),new Error("Could not subtract Vector2");this.x-=e.x,this.y-=e.y},GameLib.Vector2.prototype.multiply=function(e){if(e instanceof GameLib.API.Vector2||e instanceof GameLib.API.Vector3||e instanceof GameLib.API.Vector4||e instanceof GameLib.API.Quaternion)this.x*=e.x,this.y*=e.y;else{if("number"!=typeof e)throw console.warn("Could not multiply Vector2"),new Error("Could not multiply Vector2");this.x*=e,this.y*=e}},GameLib.Vector2.prototype.divide=function(e){if(e instanceof GameLib.API.Vector2||e instanceof GameLib.API.Vector3||e instanceof GameLib.API.Vector4||e instanceof GameLib.API.Quaternion)this.x*=1/e.x,this.y*=1/e.y;else{if("number"!=typeof e)throw console.warn("Could not divide Vector2"),new Error("Could not divide Vector2");this.x*=1/e,this.y*=1/e}},GameLib.Vector2.prototype.clamp=function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this},GameLib.Vector2.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},GameLib.Vector2.prototype.dot=function(e){return this.x*e.x+this.y*e.y},GameLib.Vector2.prototype.normalize=function(){return this.multiply(1/this.length())},GameLib.Vector2.prototype.angle=function(){var e=Math.atan2(this.y,this.x);return e<0&&(e+=2*Math.PI),e},GameLib.Vector2.prototype.lerp=function(e,t){return new GameLib.Vector2(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},GameLib.Vector3=function(e,t,i,n){if(this.implementation=e,e instanceof GameLib.GraphicsRuntime)this.physics=null,this.graphics=e,this.graphics.isNotThreeThrow();else{if(!(e instanceof GameLib.PhysicsRuntime))throw new Error("Unhandled implementation : "+e);this.graphics=null,this.physics=e,this.physics.isNotCannonThrow()}if(GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.Vector3)return t;GameLib.API.Vector3.call(this,t.x,t.y,t.z),GameLib.Utils.UndefinedOrNull(i)&&(i=this),this.parentObject=i,GameLib.Utils.UndefinedOrNull(n)&&(n=.001),this.grain=n,this.createInstance()},GameLib.Vector3.prototype=Object.create(GameLib.API.Vector3.prototype),GameLib.Vector3.prototype.constructor=GameLib.Vector3,GameLib.Vector3.prototype.createInstance=function(){this.graphics?this.instance=new THREE.Vector3(this.x,this.y,this.z):this.physics&&(this.instance=new CANNON.Vec3(this.x,this.y,this.z))},GameLib.Vector3.prototype.updateInstance=function(e,t){this.instance.x=this.x,this.instance.y=this.y,this.instance.z=this.z,!t&&this.parentObject&&this.parentObject!==this&&this.parentObject.updateInstance&&this.parentObject.updateInstance(e)},GameLib.Vector3.prototype.toApiObject=function(){return new GameLib.API.Vector3(this.x,this.y,this.z)},GameLib.Vector3.prototype.copy=function(){return new GameLib.Vector3(this.implementation,new GameLib.API.Vector3(this.x,this.y,this.z),this.parentObject,this.grain)},GameLib.Vector3.prototype.clone=function(){return new GameLib.Vector3(this.implementation,new GameLib.API.Vector3(this.x,this.y,this.z),this.parentObject,this.grain)},GameLib.Vector3.prototype.negativeCopy=function(){return new GameLib.Vector3(this.implementation,new GameLib.API.Vector3(-this.x,-this.y,-this.z),this.parentObject,this.grain)},GameLib.Vector3.prototype.applyAxisAngle=function(e,t){this.instance.applyAxisAngle(new THREE.Vector3(e.x,e.y,e.z),t),this.x=th