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

14 lines
416 KiB
JavaScript
Raw Normal View History

function GameLib(){}var __DATE__="Fri Dec 01 2017 17:42:45 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
runtimeComponent=fn(runtime.graphics,rawComponentObject)):info.runtime===GameLib.Component.PHYSICS_RUNTIME?(GameLib.Utils.UndefinedOrNull(runtime.physics)&&console.warn("no runtime physics"),runtimeComponent=fn(runtime.physics,rawComponentObject)):info.runtime===GameLib.Component.GUI_RUNTIME?(GameLib.Utils.UndefinedOrNull(runtime.gui)&&console.warn("no runtime gui"),runtimeComponent=fn(runtime.gui,rawComponentObject)):info.runtime===GameLib.Component.SOCKET_RUNTIME?(GameLib.Utils.UndefinedOrNull(runtime.sockets)&&console.warn("no runtime sockets"),runtimeComponent=fn(runtime.sockets,rawComponentObject)):info.runtime===GameLib.Component.STATISTICS_RUNTIME?(GameLib.Utils.UndefinedOrNull(runtime.statistics)&&console.warn("no runtime statistics"),runtimeComponent=fn(runtime.statistics,rawComponentObject)):info.runtime===GameLib.Component.DEFAULT_RUNTIME?runtimeComponent=fn(rawComponentObject):(console.log("unknown runtime object found : "+rawComponentObject.name),console.error(rawComponentObject)),runtimeComponent},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.Utils.UndefinedOrNull(a)&&(a=null),this.parentEntity=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.Utils.UndefinedOrNull(r)&&(r=null),this.parentEntity=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.Utils.UndefinedOrNull(i)&&(i=null),this.parentEntity=i},GameLib.API.Clock.prototype=Object.create(GameLib.Component.prototype),GameLib.API.Clock.prototype.constructor=GameLib.API.Clock,GameLib.API.Clock.FromObject=function(e){return new GameLib.API.Clock(e.id,e.name,e.parentEntity)},GameLib.API.Color=function(e,t,i,n){GameLib.Utils.UndefinedOrNull(e)&&(e=1),this.r=e,GameLib.Utils.UndefinedOrNull(t)&&(t=1),this.g=t,GameLib.Utils.UndefinedOrNull(i)&&(i=1),this.b=i,GameLib.Utils.UndefinedOrNull(n)&&(n=0),this.a=n},GameLib.API.Color.FromObject=function(e){return GameLib.Utils.UndefinedOrNull(e)&&(e={}),new GameLib.API.Color(e.r,e.g,e.b,e.a)},GameLib.API.Color.prototype.toHex=function(){this.r<0&&(this.r=0),this.g<0&&(this.g=0),this.b<0&&(this.b=0),this.r>1&&(this.r=1),this.g>1&&(this.g=1),this.b>1&&(this.b=1);var e=Math.floor(this.r>=1?255:256*this.r).toString(16),t=Math.floor(this.g>=1?255:256*this.g).toString(16),i=Math.floor(this.b>=1?255:256*this.b).toString(16);return e.length<2&&(e="0"+e),t.length<2&&(t="0"+t),i.length<2&&(i="0"+i),"#"+e+t+i},GameLib.API.Color.prototype.fromHex=function(e){var t=e.match(new RegExp("#+(..)(..)(..)"));this.r=parseInt(t[1],16)/255,this.g=parseInt(t[2],16)/255,this.b=parseInt(t[3],16)/255},GameLib.API.DomElement=function(e,t,i,n){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(t="DOM Element ("+this.id+")"),this.name=t,GameLib
this.position=r,GameLib.Utils.UndefinedOrNull(G)&&(G=new GameLib.API.Quaternion),this.quaternion=G,GameLib.Utils.UndefinedOrNull(c)&&(c=new GameLib.API.Vector3(0,0,0)),this.lookAt=c,GameLib.Utils.UndefinedOrNull(h)&&(h=-100),this.minX=h,GameLib.Utils.UndefinedOrNull(m)&&(m=100),this.maxX=m,GameLib.Utils.UndefinedOrNull(l)&&(l=-100),this.minY=l,GameLib.Utils.UndefinedOrNull(p)&&(p=100),this.maxY=p,GameLib.Utils.UndefinedOrNull(u)&&(u=-100),this.minZ=u,GameLib.Utils.UndefinedOrNull(b)&&(b=100),this.maxZ=b,GameLib.Utils.UndefinedOrNull(d)&&(d=0),this.offsetX=d,GameLib.Utils.UndefinedOrNull(L)&&(L=0),this.offsetY=L,GameLib.Utils.UndefinedOrNull(E)&&(E=30),this.eyeSeparation=E,GameLib.Utils.UndefinedOrNull(y)&&(y=150),this.focalLength=y,GameLib.Utils.UndefinedOrNull(f)&&(f=null),this.parentEntity=f},GameLib.D3.API.Camera.prototype=Object.create(GameLib.Component.prototype),GameLib.D3.API.Camera.prototype.constructor=GameLib.D3.API.Camera,GameLib.D3.API.Camera.FromObject=function(e){return new GameLib.D3.API.Camera(e.id,e.cameraType,e.name,e.fov,e.aspect,e.near,e.far,GameLib.API.Vector3.FromObject(e.position),GameLib.API.Vector3.FromObject(e.lookAt),e.minX,e.maxX,e.minY,e.maxY,e.minZ,e.maxZ,e.offsetX,e.offsetY,GameLib.API.Quaternion.FromObject(e.quaternion),e.parentEntity,e.eyeSeparation,e.focalLength)},GameLib.D3.API.Composer=function(e,t,i,n,a,s){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(t="Composer ("+e+")"),this.name=t,GameLib.Utils.UndefinedOrNull(i)&&(i=null),this.renderer=i,GameLib.Utils.UndefinedOrNull(n)&&(n=null),this.renderTarget=n,GameLib.Utils.UndefinedOrNull(a)&&(a=[]),this.passes=a,GameLib.Utils.UndefinedOrNull(s)&&(s=null),this.parentEntity=s},GameLib.D3.API.Composer.prototype=Object.create(GameLib.Component.prototype),GameLib.D3.API.Composer.prototype.constructor=GameLib.D3.API.Composer,GameLib.D3.API.Composer.FromObject=function(e){return new GameLib.D3.API.Composer(e.id,e.name,e.renderer,e.renderTarget,e.passes,e.parentEntity)},GameLib.D3.API.Controls=function(e,t,i,n,a){if(GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(this instanceof GameLib.D3.Controls.Editor&&(t=GameLib.D3.Controls.CONTROLS_TYPE_EDITOR),this instanceof GameLib.D3.Controls.Touch&&(t=GameLib.D3.Controls.CONTROLS_TYPE_TOUCH),this instanceof GameLib.D3.Controls.Keyboard&&(t=GameLib.D3.Controls.CONTROLS_TYPE_KEYBOARD),this instanceof GameLib.D3.Controls.Mouse&&(t=GameLib.D3.Controls.CONTROLS_TYPE_MOUSE),GameLib.Utils.UndefinedOrNull(t)))throw new Error("Could not determine controls type from this");this.controlsType=t,GameLib.Utils.UndefinedOrNull(i)&&(t===GameLib.D3.Controls.CONTROLS_TYPE_EDITOR&&(i="Editing Controls"),t===GameLib.D3.Controls.CONTROLS_TYPE_TOUCH&&(i="Touch Controls"),t===GameLib.D3.Controls.CONTROLS_TYPE_KEYBOARD&&(i="Keyboard Controls"),t===GameLib.D3.Controls.CONTROLS_TYPE_MOUSE&&(i="Mouse Controls"),i+=" ("+this.id+")"),this.name=i,GameLib.Utils.UndefinedOrNull(n)&&(n=null),this.domElement=n,GameLib.Utils.UndefinedOrNull(a)&&(a=null),this.parentEntity=a},GameLib.D3.API.Controls.prototype=Object.create(GameLib.Component.prototype),GameLib.D3.API.Controls.prototype.constructor=GameLib.D3.API.Controls,GameLib.D3.API.Controls.FromObject=function(e){return new GameLib.D3.API.Controls(e.id,e.controlsType,e.name,e.domElement,e.parentEntity)},GameLib.D3.API.CustomCode=function(e,t,i,n,a){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(t="CustomCode ("+this.id+")"),this.name=t,GameLib.Utils.UndefinedOrNull(i)&&(i=42),this.eventId=i,GameLib.Utils.UndefinedOrNull(n)&&(n="return null;\n//@ sourceURL="+this.name+".js"),this.code=n,GameLib.Utils.UndefinedOrNull(a)&&(a=null),this.parentEntity=a},GameLib.D3.API.CustomCode.prototype=Object.create(GameLib.Component.prototype),GameLib.D3.API.CustomCode.prototype.constructor=GameLib.D3.API.CustomCode,GameLib.D3.API.CustomCode.FromObject=function(e){return new GameLib.D3.API.CustomCode(e.id,e.name,e.eventId,
GameLib.Utils.UndefinedOrNull(i)&&(i=new GameLib.API.Vector3(0,-9.81,0)),this.gravity=i,GameLib.Utils.UndefinedOrNull(n)&&(n=new GameLib.D3.API.Broadphase(null,"Broadphase (Physics World "+this.id+")")),this.broadphase=n,GameLib.Utils.UndefinedOrNull(a)&&(a=new GameLib.D3.API.Solver(null,"Solver (Physics World "+this.id+")")),this.solver=a,GameLib.Utils.UndefinedOrNull(s)&&(s=[]),this.rigidBodies=s,GameLib.Utils.UndefinedOrNull(o)&&(o=[]),this.contactMaterials=o,GameLib.Utils.UndefinedOrNull(r)&&(r=!0),this.allowSleep=r,GameLib.Utils.UndefinedOrNull(c)&&(c=new GameLib.D3.API.FrictionContactMaterial(null,"Default Contact Material (Physics World "+this.id+")")),this.defaultContactMaterial=c,GameLib.Utils.UndefinedOrNull(h)&&(h=null),this.parentEntity=h},GameLib.D3.API.PhysicsWorld.prototype=Object.create(GameLib.Component.prototype),GameLib.D3.API.PhysicsWorld.prototype.constructor=GameLib.D3.API.PhysicsWorld,GameLib.D3.API.PhysicsWorld.FromObject=function(e){return new GameLib.D3.API.PhysicsWorld(e.id,e.name,GameLib.API.Vector3.FromObject(e.gravity),e.broadphase,e.solver,e.rigidBodies,e.contactMaterials,e.allowSleep,e.defaultContactMaterial,e.parentEntity)},GameLib.D3.API.RaycastVehicle=function(e,t,i,n,a,s,o){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(t="RaycastVehicle ("+this.id+")"),this.name=t,GameLib.Utils.UndefinedOrNull(i)&&(i=null),this.chassis=i,GameLib.Utils.UndefinedOrNull(n)&&(n=[]),this.wheels=n,GameLib.Utils.UndefinedOrNull(a)&&(a=[]),this.raycastWheels=a,GameLib.Utils.UndefinedOrNull(s)&&(s=null),this.parentWorld=s,GameLib.Utils.UndefinedOrNull(o)&&(o=null),this.parentEntity=o},GameLib.D3.API.RaycastVehicle.prototype=Object.create(GameLib.Component.prototype),GameLib.D3.API.RaycastVehicle.prototype.constructor=GameLib.D3.API.RaycastVehicle,GameLib.D3.API.RaycastVehicle.FromObject=function(e){return new GameLib.D3.API.RaycastVehicle(e.id,e.name,e.chassis,e.wheels,e.raycastWheels,e.parentWorld,e.parentEntity)},GameLib.D3.API.RaycastWheel=function(e,t,i,n,a,s,o,r,c,h,m,l,p,u,b,d,L,G){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(t="RaycastWheel ("+this.id+")"),this.name=t,GameLib.Utils.UndefinedOrNull(i)&&(i=.5),this.radius=i,GameLib.Utils.UndefinedOrNull(n)&&(n=new GameLib.API.Vector3(0,0,-1)),this.directionLocal=n,GameLib.Utils.UndefinedOrNull(a)&&(a=30),this.suspensionStiffness=a,GameLib.Utils.UndefinedOrNull(s)&&(s=.3),this.suspensionRestLength=s,GameLib.Utils.UndefinedOrNull(o)&&(o=5),this.frictionSlip=o,GameLib.Utils.UndefinedOrNull(r)&&(r=2.3),this.dampingRelaxation=r,GameLib.Utils.UndefinedOrNull(c)&&(c=4.4),this.dampingCompression=c,GameLib.Utils.UndefinedOrNull(h)&&(h=1e5),this.maxSuspensionForce=h,GameLib.Utils.UndefinedOrNull(m)&&(m=.01),this.rollInfluence=m,GameLib.Utils.UndefinedOrNull(l)&&(l=new GameLib.API.Vector3(0,1,0)),this.axleLocal=l,GameLib.Utils.UndefinedOrNull(p)&&(p=new GameLib.API.Vector3(1,1,0)),this.chassisConnectionPointLocal=p,GameLib.Utils.UndefinedOrNull(u)&&(u=.3),this.maxSuspensionTravel=u,GameLib.Utils.UndefinedOrNull(b)&&(b=-30),this.customSlidingRotationalSpeed=b,GameLib.Utils.UndefinedOrNull(d)&&(d=!0),this.useCustomSlidingRotationalSpeed=d,GameLib.Utils.UndefinedOrNull(L)&&(L=null),this.parentEntity=L,GameLib.Utils.UndefinedOrNull(G)&&(G=null),this.parentMesh=G},GameLib.D3.API.RaycastWheel.prototype=Object.create(GameLib.Component.prototype),GameLib.D3.API.RaycastWheel.prototype.constructor=GameLib.D3.API.RaycastWheel,GameLib.D3.API.RaycastWheel.FromObject=function(e){return new GameLib.D3.API.RaycastWheel(e.id,e.name,e.radius,e.directionLocal,e.suspensionStiffness,e.suspensionRestLength,e.frictionSlip,e.dampingRelaxation,e.dampingCompression,e.maxSuspensionForce,e.rollInfluence,e.axleLocal,e.chassisConnectionPointLocal,e.maxSuspensionTravel,e.customSlidingRotationalSpeed,e.useCustomSlidingRotationalSpeed,e.parentEntity,e.parentMesh)},GameLib.D3.API.Raycaster=function(e,t,i,n){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id
this.instance.quaternion.y=this.quaternion.y,this.instance.quaternion.z=this.quaternion.z,this.instance.quaternion.w=this.quaternion.w,this.instance.lookAt(this.lookAt.instance),this.instance.updateProjectionMatrix(),GameLib.Component.prototype.createInstance.call(this)},GameLib.D3.Camera.prototype.updateInstance=function(e){GameLib.Utils.UndefinedOrNull(e)&&console.warn("no camera property specified for : "+this.name),"cameraType"===e&&(this.cameraType!==GameLib.D3.Camera.CAMERA_TYPE_ORTHOGONAL||this.instance instanceof THREE.OrthographicCamera||this.createInstance(),this.cameraType!==GameLib.D3.Camera.CAMERA_TYPE_PERSPECTIVE||this.instance instanceof THREE.PerspectiveCamera||this.createInstance()),"aspect"!==e&&"minX"!==e&&"maxX"!==e&&"minY"!==e&&"maxY"!==e&&"minZ"!==e&&"maxZ"!==e&&"offsetX"!==e&&"offsetY"!==e&&"fov"!==e&&"near"!==e&&"far"!==e&&"eyeSeparation"!==e&&"focalLength"!==e||(this.cameraType===GameLib.D3.Camera.CAMERA_TYPE_ORTHOGONAL&&(this.minX=this.aspect*this.minY,this.maxX=this.aspect*this.maxY,this.instance.left=this.minX+this.offsetX,this.instance.right=this.maxX+this.offsetX,this.instance.bottom=this.minY+this.offsetY,this.instance.top=this.maxY+this.offsetY,this.instance.near=this.minZ,this.instance.far=this.maxZ),this.cameraType!==GameLib.D3.Camera.CAMERA_TYPE_PERSPECTIVE&&this.cameraType!==GameLib.D3.Camera.CAMERA_TYPE_STEREO||(this.instance.fov=this.fov,this.instance.aspect=this.aspect,this.instance.near=this.near,this.instance.far=this.far),this.cameraType===GameLib.D3.Camera.CAMERA_TYPE_STEREO&&(this.instance.eyeSeparation=this.eyeSeparation,this.instance.focalLength=this.focalLength,this.instance.update(this.instance))),"position"===e&&(this.instance.position.x=this.position.x,this.instance.position.y=this.position.y,this.instance.position.z=this.position.z),"quaternion"===e&&(this.instance.quaternion.x=this.quaternion.x,this.instance.quaternion.y=this.quaternion.y,this.instance.quaternion.z=this.quaternion.z,this.instance.quaternion.w=this.quaternion.w),"lookAt"===e&&(this.lookAt.instance.x=this.lookAt.x,this.lookAt.instance.y=this.lookAt.y,this.lookAt.instance.z=this.lookAt.z,this.instance.lookAt(this.lookAt.instance)),this.instance.updateProjectionMatrix()},GameLib.D3.Camera.prototype.resize=function(e,t){camera.aspect=e/t,camera.updateInstance()},GameLib.D3.Camera.prototype.toApiObject=function(){return new GameLib.D3.API.Camera(this.id,this.cameraType,this.name,this.fov,this.aspect,this.near,this.far,this.position.toApiObject(),this.lookAt.toApiObject(),this.minX,this.maxX,this.minY,this.maxY,this.minZ,this.maxZ,this.offsetX,this.offsetY,this.quaternion.toApiObject(),GameLib.Utils.IdOrNull(this.parentEntity),this.eyeSeparation,this.focalLength)},GameLib.D3.Camera.FromObject=function(e,t){var i=GameLib.D3.API.Camera.FromObject(t);return new GameLib.D3.Camera(e,i)},GameLib.D3.Composer=function(e,t){if(this.graphics=e,this.graphics.isNotThreeThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.D3.Composer)return t;GameLib.D3.API.Composer.call(this,t.id,t.name,t.renderer,t.renderTarget,t.passes,t.parentEntity),GameLib.Component.call(this,GameLib.Component.COMPONENT_COMPOSER,{renderer:GameLib.D3.Renderer,renderTarget:GameLib.D3.RenderTarget,passes:[GameLib.D3.Pass]})},GameLib.D3.Composer.prototype=Object.create(GameLib.D3.API.Composer.prototype);GameLib.D3.Composer.prototype.constructor=GameLib.D3.Composer,GameLib.D3.Composer.prototype.createInstance=function(){console.log("GameLib.D3.Composer.prototype.createInstance() - fix me"),GameLib.Component.prototype.createInstance.call(this)},GameLib.D3.Composer.prototype.updateInstance=function(){console.log("GameLib.D3.Composer.prototype.updateInstance() - fix me")},GameLib.D3.Composer.prototype.toApiObject=function(){return new GameLib.D3.API.Composer(this.id,this.name,GameLib.Utils.IdOrNull(this.renderer),GameLib.Utils.IdOrNull(this.renderTarget),this.passes.map(function(e){return GameLib.Utils.IdOrNull(e)}),GameLib.Utils.IdOrNull(this.parentEntity))},GameLib.D3.Composer.FromObject=function(e,t){var i=GameLib.D3.API.Composer.FromObj
;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,GameLib.Component.COMPONENT_MATERIAL,{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.
this.instance.rotation.y=this.rotation.y,this.instance.rotation.z=this.rotation.z),this.instance.scale.x=this.scale.x,this.instance.scale.y=this.scale.y,this.instance.scale.z=this.scale.z,this.instance.up.x=this.up.x,this.instance.up.y=this.up.y,this.instance.up.z=this.up.z,this.instance.renderOrder=this.renderOrder,this.instance.visible=this.visible,GameLib.Component.prototype.createInstance.call(this)},GameLib.D3.Mesh.prototype.updateInstance=function(e){GameLib.Utils.UndefinedOrNull(e)&&console.warn("unknown mesh property update"),"isBufferMesh"===e&&(this.isBufferMesh&&!(this.instance.geometry instanceof THREE.BufferGeometry)||!this.isBufferMesh&&this.instance.geometry instanceof THREE.BufferGeometry)&&(this.instance.geometry=this.createInstanceGeometry(this.instance.geometry)),"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 h=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])))),m=new GameLib.Vector2(this.graphics,new GameLib.API.Vector2(i[2*c],i[2*c+1]));r.push(m);var l=this.vertices.reduce(function(e,t,i){return t.position.equals(h.position)&&(e=i),e},-1),p=l;-1===l&&(this.vertices.push(h),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.UndefinedOr
GameLib.D3.ParticleEngine.prototype=Object.create(GameLib.D3.API.ParticleEngine.prototype),GameLib.D3.ParticleEngine.prototype.constructor=GameLib.D3.ParticleEngine,GameLib.D3.ParticleEngine.prototype.createInstance=function(){this.instance=!0,GameLib.Component.prototype.createInstance.call(this)},GameLib.D3.ParticleEngine.prototype.updateInstance=function(e){"particlesPerSecond"===e&&(this.frequency=Number(1/this.particlesPerSecond)),"frequency"===e&&(this.particlesPerSecond=Math.round(1/this.frequency)),"position"===e&&(this.position.instance.x=this.position.x,this.position.instance.y=this.position.y,this.position.instance.z=this.position.z,this.templateParticle.mesh.position=this.position.clone(),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.c
;GameLib.D3.API.RenderTarget.call(this,t.id,t.name,t.width,t.height,t.stencilBuffer,t.texture),GameLib.Component.call(this,GameLib.Component.COMPONENT_RENDER_TARGET,{texture:GameLib.D3.Texture})},GameLib.D3.RenderTarget.prototype=Object.create(GameLib.D3.API.RenderTarget.prototype),GameLib.D3.RenderTarget.prototype.constructor=GameLib.D3.RenderTarget,GameLib.D3.RenderTarget.prototype.createInstance=function(){if(GameLib.Utils.UndefinedOrNull(this.texture))throw new Error("no texture");if(GameLib.Utils.UndefinedOrNull(this.texture.instance))throw new Error("no texture instance");this.instance=new THREE.WebGLRenderTarget(this.width,this.height,{stencilBuffer:this.stencilBuffer}),this.instance.texture=this.texture.instance,GameLib.Component.prototype.createInstance.call(this)},GameLib.D3.RenderTarget.prototype.updateInstance=function(){if(this.instance)this.instance.setSize(this.width,this.height),this.instance.stencilBuffer=this.stencilBuffer,this.texture&&this.texture.instance?(this.instance.texture=this.texture.instance,this.instance.texture.needsUpdate=!0):this.instance.texture=null;else try{this.createInstance()}catch(e){console.error(e)}},GameLib.D3.RenderTarget.prototype.toApiObject=function(){return new GameLib.D3.API.RenderTarget(this.id,this.name,this.width,this.height,this.stencilBuffer,GameLib.Utils.IdOrNull(this.texture),GameLib.Utils.IdOrNull(this.parentEntity))};GameLib.D3.RenderTarget.FromObject=function(e,t){var i=GameLib.D3.API.RenderTarget.FromObject(t);return new GameLib.D3.RenderTarget(e,i)},GameLib.D3.Renderer=function(e,t){if(this.graphics=e,this.graphics.isNotThreeThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.D3.Renderer)return t;GameLib.D3.API.Renderer.call(this,t.id,t.name,t.autoClear,t.localClipping,t.width,t.height,t.preserveDrawingBuffer,t.domElement,t.clearColor,t.camera,t.scenes,t.viewports,t.clippingPlanes,t.bufferScene,t.bufferCamera,t.renderTarget,t.defaultScene,t.sortObjects,t.parentEntity),this.clearColor=new GameLib.Color(this.graphics,this.clearColor,this),this.domElement instanceof GameLib.API.DomElement&&(this.domElement=new GameLib.DomElement(this.domElement)),this.camera instanceof GameLib.D3.API.Camera&&(this.camera=new GameLib.D3.Camera(this.graphics,this.camera)),this.scenes=this.scenes.map(function(e){return e instanceof GameLib.D3.API.Scene?new GameLib.D3.Scene(this.graphics,e):e}.bind(this)),this.viewports=this.viewports.map(function(e){return e instanceof GameLib.D3.API.Viewport?new GameLib.D3.Viewport(this.graphics,e):e}.bind(this)),this.clippingPlanes=this.clippingPlanes.map(function(e){return e instanceof GameLib.D3.API.Mesh?new GameLib.D3.Mesh.Plane(this.graphics,e,e.width,e.height,e.widthSegments,e.heightSegments,e.heightMapScale,e.isHeightMap,e.isClippingPlane,e.distanceFromOrigin):e}.bind(this)),this.bufferScene instanceof GameLib.D3.API.Scene&&(this.bufferScene=new GameLib.D3.Scene(this.graphics,this.bufferScene)),this.bufferCamera instanceof GameLib.D3.API.Camera&&(this.bufferCamera=new GameLib.D3.Camera(this.graphics,this.bufferCamera)),this.renderTarget instanceof GameLib.D3.API.RenderTarget&&(this.renderTarget=new GameLib.D3.RenderTarget(this.graphics,this.renderTarget)),GameLib.Component.call(this,GameLib.Component.COMPONENT_RENDERER,{domElement:GameLib.DomElement,camera:GameLib.D3.Camera,scenes:[GameLib.D3.Scene],viewports:[GameLib.D3.Viewport],clippingPlanes:[GameLib.D3.Mesh.Plane],bufferScene:GameLib.D3.Scene,bufferCamera:GameLib.D3.Camera,renderTarget:GameLib.D3.RenderTarget,defaultScene:GameLib.D3.Scene})},GameLib.D3.Renderer.prototype=Object.create(GameLib.D3.API.Renderer.prototype),GameLib.D3.Renderer.prototype.constructor=GameLib.D3.Renderer,GameLib.D3.Renderer.prototype.createInstance=function(){if(GameLib.Utils.UndefinedOrNull(this.domElement))throw new Error("no dom element");if(GameLib.Utils.UndefinedOrNull(this.domElement.instance))throw new Error("no dom element instance");this.instance=new THREE.WebGLRenderer({canvas:this.domElement.instance}),this.clippingPlanes.length>0&&(this.instance.clippingPlanes=this.clippingPlanes.m
GameLib.D3.Shape.Plane.prototype.createInstance=function(){this.instance=new CANNON.Plane,GameLib.D3.Shape.prototype.createInstance.call(this)},GameLib.D3.Shape.Plane.prototype.updateInstance=function(){},GameLib.D3.Shape.Plane.FromObject=function(e,t){var i=GameLib.D3.API.Shape.FromObject(t);return new GameLib.D3.Shape.Plane(e,i)},GameLib.D3.Shape.Sphere=function(e,t,i){this.physics=e,this.physics.isNotCannonThrow(),GameLib.Utils.UndefinedOrNull(i)&&(i=1),this.radius=i,GameLib.D3.Shape.call(this,this.physics,t)},GameLib.D3.Shape.Sphere.prototype=Object.create(GameLib.D3.Shape.prototype),GameLib.D3.Shape.Sphere.prototype.constructor=GameLib.D3.Shape.Sphere,GameLib.D3.Shape.Sphere.prototype.createInstance=function(){this.instance=new CANNON.Sphere(this.radius),GameLib.D3.Shape.prototype.createInstance.call(this)},GameLib.D3.Shape.Sphere.prototype.updateInstance=function(){this.instance.radius=this.radius,this.instance.updateBoundingSphereRadius()},GameLib.D3.Shape.Sphere.prototype.toApiObject=function(){var e=GameLib.D3.Shape.prototype.toApiObject.call(this);return e.radius=this.radius,e},GameLib.D3.Shape.Sphere.FromObject=function(e,t){var i=GameLib.D3.API.Shape.FromObject(t);return new GameLib.D3.Shape.Sphere(e,i,t.radius)},GameLib.D3.Shape.TriMesh=function(e,t,i,n){this.physics=e,this.physics.isNotCannonThrow(),GameLib.Utils.UndefinedOrNull(i)&&(i=[]),this.vertices=i,GameLib.Utils.UndefinedOrNull(n)&&(n=[]),this.indices=n,GameLib.D3.Shape.call(this,this.physics,t)},GameLib.D3.Shape.TriMesh.prototype=Object.create(GameLib.D3.Shape.prototype),GameLib.D3.Shape.TriMesh.prototype.constructor=GameLib.D3.Shape.TriMesh,GameLib.D3.Shape.TriMesh.prototype.createInstance=function(){this.instance=new CANNON.TriMesh(this.vertices,this.indices),GameLib.D3.Shape.prototype.createInstance.call(this)},GameLib.D3.Shape.TriMesh.prototype.updateInstance=function(){this.instance.vertices=this.vertices,this.instance.indices=this.indices,this.instance.updateAABB(),this.instance.updateBoundingSphereRadius(),this.instance.updateEdges(),this.instance.updateNormals(),this.instance.updateTree()},GameLib.D3.Skeleton=function(e,t){if(this.graphics=e,this.graphics.isNotThreeThrow(),GameLib.Utils.UndefinedOrNull(t)&&(t={}),t instanceof GameLib.D3.Skeleton)return t;GameLib.D3.API.Skeleton.call(this,t.id,t.name,t.bones,t.boneInverses,t.useVertexTexture,t.boneTextureWidth,t.boneTextureHeight,t.boneMatrices,t.boneTexture,t.parentEntity),this.bones=this.bones.map(function(e){if(e instanceof GameLib.D3.API.Bone)return new GameLib.D3.Bone(this.graphics,e);throw console.warn("apiBone not an instance of API.Bone"),new Error("apiBone not an instance of API.Bone")}.bind(this)),this.boneInverses=this.boneInverses.map(function(e){if(e instanceof GameLib.API.Matrix4)return new GameLib.Matrix4(this.graphics,e,this);throw console.warn("boneInverse not an instance of API.Matrix4"),new Error("boneInverse not an instance of API.Matrix4")}.bind(this)),this.boneMatrices=this.boneMatrices.map(function(e){if(e instanceof GameLib.API.Matrix4)return new GameLib.Matrix4(this.graphics,e,this);throw console.warn("boneMatrices not an instance of API.Matrix4"),new Error("boneMatrices not an instance of API.Matrix4")}.bind(this)),GameLib.Component.call(this,GameLib.Component.COMPONENT_SKELETON,{bones:[GameLib.D3.Bone]})},GameLib.D3.Skeleton.prototype=Object.create(GameLib.D3.API.Skeleton.prototype),GameLib.D3.Skeleton.prototype.constructor=GameLib.D3.Skeleton,GameLib.D3.Skeleton.prototype.createInstance=function(e){var t=this.bones.map(function(e){if(GameLib.Utils.UndefinedOrNull(e))throw new Error("no bone");if(GameLib.Utils.UndefinedOrNull(e.instance))throw new Error("no bone instance");return e.instance}),i=this.bones.reduce(function(e,t){return e||(0===t.parentBoneIds.length?t.instance:null)},null);if(GameLib.Utils.UndefinedOrNull(i))throw new Error("could not find parent bone instance");this.instance=new THREE.Skeleton(t),this.rootBoneInstance=i,this.instance.useVertexTexture=this.useVertexTexture,this.boneIdToBone={},this.bones.map(function(e){this.boneIdToBone[e.id]=e}.bind
GameLib.Matrix4.prototype.transpose=function(){return this.temp[0].x=this.rows[0].x,this.temp[0].y=this.rows[1].x,this.temp[0].z=this.rows[2].x,this.temp[0].w=this.rows[3].x,this.temp[1].x=this.rows[0].y,this.temp[1].y=this.rows[1].y,this.temp[1].z=this.rows[2].y,this.temp[1].w=this.rows[3].y,this.temp[2].x=this.rows[0].z,this.temp[2].y=this.rows[1].z,this.temp[2].z=this.rows[2].z,this.temp[2].w=this.rows[3].z,this.temp[3].x=this.rows[0].w,this.temp[3].y=this.rows[1].w,this.temp[3].z=this.rows[2].w,this.temp[3].w=this.rows[3].w,this.rows[0].x=this.temp[0].x,this.rows[0].y=this.temp[0].y,this.rows[0].z=this.temp[0].z,this.rows[0].w=this.temp[0].w,this.rows[1].x=this.temp[1].x,this.rows[1].y=this.temp[1].y,this.rows[1].z=this.temp[1].z,this.rows[1].w=this.temp[1].w,this.rows[2].x=this.temp[2].x,this.rows[2].y=this.temp[2].y,this.rows[2].z=this.temp[2].z,this.rows[2].w=this.temp[2].w,this.rows[3].x=this.temp[3].x,this.rows[3].y=this.temp[3].y,this.rows[3].z=this.temp[3].z,this.rows[3].w=this.temp[3].w,this},GameLib.Mouse=function(e){if(GameLib.Utils.UndefinedOrNull(e)&&(e={}),e instanceof GameLib.Mouse)return e;GameLib.API.Mouse.call(this,e.id,e.name,e.x,e.y,e.parentEntity),GameLib.Component.call(this,GameLib.Component.COMPONENT_MOUSE)},GameLib.Mouse.prototype=Object.create(GameLib.API.Mouse.prototype),GameLib.Mouse.prototype.constructor=GameLib.Mouse,GameLib.Mouse.prototype.createInstance=function(){this.instance=!0,GameLib.Component.prototype.createInstance.call(this)},GameLib.Mouse.prototype.updateInstance=function(e){GameLib.Utils.UndefinedOrNull(e)&&console.warn("unknown property update for Mouse: "+e)},GameLib.Mouse.prototype.toApiObject=function(){return new GameLib.API.Mouse(this.id,this.name,this.x,this.y,this.parentEntity)},GameLib.Mouse.prototype.FromObject=function(e){return new GameLib.Mouse(GameLib.API.Mouse.FromObject(e))},GameLib.PhysicsRuntime=function(e,t,i){GameLib.Utils.UndefinedOrNull(e)&&(e=GameLib.Utils.RandomId()),this.id=e,GameLib.Utils.UndefinedOrNull(t)&&(t="Physics ("+e+")"),this.name=t,GameLib.Utils.UndefinedOrNull(i)&&(i=GameLib.PhysicsRuntime.TYPE_CANNON_JS),this.physicsType=i,this.createInstance()},GameLib.PhysicsRuntime.TYPE_CANNON_JS=1,GameLib.PhysicsRuntime.prototype.createInstance=function(){this.physicsType===GameLib.PhysicsRuntime.TYPE_CANNON_JS?this.instance=CANNON:this.instance=null},GameLib.PhysicsRuntime.prototype.updateInstance=function(e){"physicsType"===e&&this.createInstance()},GameLib.PhysicsRuntime.prototype.isNotCannonThrow=function(){if(this.instance!==CANNON)throw console.error("Only CANNON supported"),new Error("Only CANNON supported")},GameLib.Quaternion=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.Quaternion)return t;GameLib.API.Quaternion.call(this,t.x,t.y,t.z,t.w,t.axis,t.angle),GameLib.Utils.UndefinedOrNull(i)&&(i=null),this.parentObject=i,this.axis=new GameLib.Vector3(this.implementation,this.axis,this,this.grain),Object.defineProperty(this,"angle",GameLib.Utils.LimitToPI("angle",this.angle)),GameLib.Utils.UndefinedOrNull(n)&&(n=.001),this.grain=n,this.createInstance()},GameLib.Quaternion.prototype=Object.create(GameLib.API.Quaternion.prototype),GameLib.Quaternion.prototype.constructor=GameLib.Quaternion,GameLib.Quaternion.prototype.createInstance=function(){this.graphics&&(this.instance=new THREE.Quaternion(this.x,this.y,this.z,this.w)),this.physics&&(this.instance=new CANNON.Quaternion(this.x,this.y,this.z,this.w))},GameLib.Quaternion.prototype.updateInstance=function(e){this.instance.x=this.x,this.instance.y=this.y,this.instance.z=this.z,this.instance.w=this.w,this.parentObject&&this.parentObject.updateInstance&&this.parentObject.updateInstance(e)},GameLib.Quaternion.prototype.toApiObject=function(){return new GameLib.API.Quaternion(this.x,t
;return h.onChange(this.onChange(i,n,o)),s&&h.listen(),h},GameLib.System.GUI.prototype.buildQuaternionControl=function(e,t,i){var n=t.template,a=!1;1===t.affected.length&&(n=t.affected[0],a=!0);var s=t.affected;this.controller(e,n,i,"x",.1,a,s),this.controller(e,n,i,"y",.1,a,s),this.controller(e,n,i,"z",.1,a,s),this.controller(e,n,i,"w",.1,a,s),this.controller(e,n,i,"angle",.001,a,s,-Math.PI,Math.PI),e.add(n[i].axis,"x",-1,1,.01).name("quaternion.axis.x").onChange(function(e){s.map(function(t){t.useQuaternion=!0,t[i].axis.x=Number(e),t.updateInstance("x")})}),e.add(n[i].axis,"y",-1,1,.01).name("quaternion.axis.y").onChange(function(e){s.map(function(t){t.useQuaternion=!0,t[i].axis.y=Number(e),t.updateInstance("y")})}),e.add(n[i].axis,"z",-1,1,.01).name("quaternion.axis.z").onChange(function(e){s.map(function(t){t.useQuaternion=!0,t[i].axis.z=Number(e),t.updateInstance("z")})})},GameLib.System.GUI.prototype.buildVectorControl=function(e,t,i){var n=t.template,a=!1;1===t.affected.length&&(n=t.affected[0],a=!0);var s=t.affected,o=[];GameLib.Utils.isVector4(n[i])&&o.push(this.controller(e,n,i,"w",.01,a,s)),o.push(this.controller(e,n,i,"x",.01,a,s)),o.push(this.controller(e,n,i,"y",.01,a,s)),(GameLib.Utils.isVector3(n[i])||GameLib.Utils.isVector4(n[i]))&&o.push(this.controller(e,n,i,"z",.01,a,s))},GameLib.System.GUI.prototype.buildParentSelectionControl=function(e,t,i){var n=null;"parentEntity"===i&&(n=GameLib.Entity),"parentMesh"===i&&(n=GameLib.D3.Mesh),"parentWorld"===i&&(n=GameLib.D3.PhysicsWorld),"parentScene"===i&&(n=GameLib.D3.Scene);var a=GameLib.EntityManager.Instance.queryComponents(n).reduce(function(e,t){return e[t.name]=t,e},{none:null}),s=t.template,o=t.affected;e.add(s,i,a).listen().onChange(function(e){var t=null;"null"!==e&&(t=GameLib.EntityManager.Instance.findComponentById(e)),o.map(function(e){e[i]=t,"parentEntity"===i&&GameLib.Event.Emit(GameLib.Event.PARENT_ENTITY_CHANGE,{originalEntity:this.initialValue,newEntity:t,object:e}),"parentWorld"===i&&GameLib.Event.Emit(GameLib.Event.PARENT_WORLD_CHANGE,{originalWorld:this.initialValue,newWorld:t,object:e}),"parentScene"===i&&GameLib.Event.Emit(GameLib.Event.PARENT_SCENE_CHANGE,{originalScene:this.initialValue,newScene:t,object:e})}.bind(this)),"parentEntity"===i&&GameLib.Event.Emit(GameLib.Event.BUILD_GUI,null),this.initialValue=t})},GameLib.System.GUI.prototype.buildArrayManagerControl=function(e,t,i){var n=t.template.linkedObjects[i];if(!(n instanceof Array))return void console.error("data mismatch - something not an array");var a=t.template,s=a[i],o=function(n,a){var s="invalid item";n&&n.name&&(s=n.name);var o=e.add({remove:function(){t.affected.map(function(t){t[i].splice(a,1),e.remove(o)})}},"remove").name("remove "+i+"["+a+"] - "+s);e.updateDisplay()};s.map(o);var r={},c=GameLib.EntityManager.Instance.queryComponents(n).reduce(function(e,t){return e[t.name]=t,r[t.id]=t,e},{none:null}),h={component:null,add:function(){t.affected.map(function(e){-1===e[i].indexOf(h.component)&&(e[i].push(h.component),GameLib.Event.Emit(GameLib.Event.ARRAY_ITEM_ADDED,{component:e,property:i,item:h.component}))}),GameLib.Event.Emit(GameLib.Event.BUILD_GUI)}};e.add(h,"component",c).name("select "+i).onChange(function(e){h.component="null"===e?null:r[e]}).listen(),e.add(h,"add").name("add to "+i)},GameLib.System.GUI.prototype.buildColorControl=function(e,t,i){var n=t.template,a={hexColor:n[i].toHex()};e.addColor(a,"hexColor").name(i).listen().onChange(function(e){t.affected.map(function(t){t[i].fromHex(e),t[i].updateInstance(i)})}),e.add(a,"hexColor").name(i).listen().onChange(function(e){t.affected.map(function(t){t[i].fromHex(e),t[i].updateInstance(i)})})},GameLib.System.GUI.prototype.buildSelectControl=function(e,t,i){var n=null;t.template[i]?n=t.template[i].constructor:t.template.linkedObjects[i]&&(n=t.template.linkedObjects[i]);var a=t.template,s=GameLib.EntityManager.Instance.queryComponents(n),o={},r=s.reduce(function(e,t){return e[t.name]=t,o[t.id]=t,e},{none:null});e.add(a,i,r).name(i).listen().onChange(function(e){var n=null;"null"!==e&&(n=o[e]),t.affected.map(func
GameLib.Event.Emit(GameLib.Event.TOUCH_CANCEL,this.touches[e.changedTouches[t].identifier]),delete this.touches[e.changedTouches[t].identifier]},GameLib.System.Input.prototype.onTouchEnd=function(e){this.sensitivityCounter=0;for(var t=0;t<e.changedTouches.length;t++)this.touches[e.changedTouches[t].identifier].ended=!0,this.touches[e.changedTouches[t].identifier].event=e,GameLib.Event.Emit(GameLib.Event.TOUCH_END,this.touches[e.changedTouches[t].identifier]),delete this.touches[e.changedTouches[t].identifier]},GameLib.System.Input.prototype.onKeyDown=function(e){console.log("input system emitted keypress "+e.code),GameLib.Event.Emit(GameLib.Event.KEY_DOWN,{code:e.code});var t=null;if("Delete"===e.code){t=GameLib.EntityManager.Instance.queryComponents([GameLib.D3.Mesh]);var i=[];t.map(function(e){if(e.selected){i.push(e),e.removeHelper();var t=e.parentScene;t.removeObject(e),t.buildIdToObject()}}.bind(this)),GameLib.Event.Emit(GameLib.Event.REMOVE_MESH,{meshes:i})}"ControlLeft"===e.code&&(this.controlLeft=!0),"KeyA"===e.code&&(this.selectAll=!this.selectAll,t=GameLib.EntityManager.Instance.queryComponents([GameLib.D3.Mesh]),t.map(function(e){this.selectAll?this.selectMesh(e):this.deSelectMesh(e)}.bind(this)),GameLib.Event.Emit(GameLib.Event.BUILD_GUI,null)),"KeyP"===e.code&&GameLib.Event.Emit(GameLib.Event.GAME_PAUSE)},GameLib.System.Input.prototype.onKeyUp=function(e){GameLib.Event.Emit(GameLib.Event.KEY_UP,{code:e.code}),"ControlLeft"===e.code&&(this.controlLeft=!1)},GameLib.System.Input.prototype.onMouseDown=function(e){GameLib.Event.Emit(GameLib.Event.MOUSE_DOWN,{event:e})},GameLib.System.Input.prototype.onMouseMove=function(e){GameLib.Event.Emit(GameLib.Event.MOUSE_MOVE,{event:e})},GameLib.System.Input.prototype.onMouseWheel=function(e){GameLib.Event.Emit(GameLib.Event.MOUSE_WHEEL,{event:e})},GameLib.System.Input.prototype.onMouseUp=function(e){GameLib.Event.Emit(GameLib.Event.MOUSE_UP,{event:e})},GameLib.System.Input.prototype.onMouseDownEdit=function(e){2===e.button&&this.editorControls.map(function(t){if(!this.controlLeft){this.mouse.position.x=e.offsetX/e.target.width*2-1,this.mouse.position.y=-e.offsetY/e.target.height*2+1;var i=GameLib.EntityManager.Instance.queryComponents(GameLib.D3.Scene),n=i.reduce(function(e,i){return t.raycaster.instance.setFromCamera(this.mouse.position,t.camera.instance),n=t.raycaster.getIntersectedObjects(i.meshes),n.map(function(t){e.push(t)}),e}.bind(this),[]);n.sort(function(e,t){return e.distance<t.distance?-1:e.distance>t.distance?1:0});var a=n.map(function(e){return e.mesh}),s=a[0];s&&(e.preventDefault(),e.stopImmediatePropagation(),s.selected?this.deSelectMesh(s):this.selectMesh(s),GameLib.Event.Emit(GameLib.Event.BUILD_GUI,null))}}.bind(this))},GameLib.System.Input.prototype.onMouseMoveEdit=function(e){},GameLib.System.Input.prototype.onMouseUpEdit=function(e){this.editorControls.map(function(e){e.camera.position.x=e.camera.instance.position.x,e.camera.position.y=e.camera.instance.position.y,e.camera.position.z=e.camera.instance.position.z,e.camera.quaternion.x=e.camera.instance.quaternion.x,e.camera.quaternion.y=e.camera.instance.quaternion.y,e.camera.quaternion.z=e.camera.instance.quaternion.z,e.camera.quaternion.w=e.camera.instance.quaternion.w,e.camera.lookAt.x=e.instance.center.x,e.camera.lookAt.y=e.instance.center.y,e.camera.lookAt.z=e.instance.center.z,e.camera.lookAt.instance.copy(e.instance.center)})};GameLib.System.Input.prototype.onMouseWheelEdit=function(e){this.editorControls.map(function(e){e.camera.position.x=e.camera.instance.position.x,e.camera.position.y=e.camera.instance.position.y,e.camera.position.z=e.camera.instance.position.z})},GameLib.System.Input.prototype.selectMesh=function(e){!0!==e.selected&&(e.selected=!0,e.createHelper(),GameLib.Event.Emit(GameLib.Event.MESH_SELECTED,{mesh:e}))},GameLib.System.Input.prototype.deSelectMesh=function(e){e.selected=!1,e.removeHelper(),GameLib.Event.Emit(GameLib.Event.MESH_DESELECTED,{mesh:e})},GameLib.System.Linking=function(e){GameLib.System.call(this,e),this.dependencies={},this.resolved=[],this.componentCreatedSu
GameLib.Utils.IsEmpty(e.data)?i({message:"font is empty"}):t(e)})}.bind(this),function(e){i(e)})},GameLib.System.Storage.prototype.loadImage=function(e){console.log("loading image : "+e.image.name),this.publish(GameLib.Event.GET_API_URL,null,function(t){var i=this.onImageLoaded,n=this.onImageProgress,a=this.onImageError,s=e.image,o=t.apiUrl+s.path+s.fileName+s.extension+"?ts="+Date.now(),r=new XMLHttpRequest;r.withCredentials=!0,r.open("OPTIONS",o),r.setRequestHeader("Content-Type","application/json"),r.onload=function(){var t=new XMLHttpRequest;t.withCredentials=!0,t.open("GET",o),t.setRequestHeader("Content-Type",s.contentType),t.responseType="blob",t.onload=function(){var t=!1,n="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QoWEQMQBXD4hQAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAABRSURBVGje7c8xDQAwCAAwmA3koA/PU8FB0jpo1nRc9uI4AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBgX0fjEoBa8xN1z4AAAAASUVORK5CYII=";try{"application/json"!==this.response.type&&(n=window.URL.createObjectURL(this.response),t=!0)}catch(e){}var a=document.createElement("img");a.onload=function(){t&&window.URL.revokeObjectURL(n),s.instance=a,s.createInstance(),i&&i(s,e.createTexture)},a.src=n},t.onprogress=function(e){var t=0;0!==e.total&&(t=Math.round(100*Number(e.loaded/e.total))),n&&n(s,t),s.size=e.total},t.onerror=function(e){console.warn("image load failed for image "+s.name),a&&a(s,e)},t.send()},r.onerror=function(e){console.warn("image pre-flight request failed for image "+s.name),a&&a(s,e)},r.send()}.bind(this),function(e){throw console.error(e.message),new Error(e.message)})},GameLib.System.Storage.prototype.stop=function(){GameLib.System.prototype.stop.call(this),this.loginSubscription.remove(),this.loadSubscription.remove(),this.saveSubscription.remove(),this.loadImageSubscription.remove(),this.loadFontSubscription.remove(),this.blenderDataSubscription.remove(),this.imageUploadCompleteSubscription.remove(),this.deleteSubscription.remove(),this.fetchComponentTypesSubscription.remove(),this.fetchComponentsSubscription.remove()},GameLib.System.Visualization=function(e,t,i){GameLib.System.call(this,e),GameLib.Utils.UndefinedOrNull(t)&&GameLib.Event.Emit(GameLib.Event.GET_GRAPHICS_RUNTIME,null,function(e){t=e}.bind(this),function(){t=null}.bind(this)),this.graphics=t,GameLib.Utils.UndefinedOrNull(i)&&GameLib.Event.Emit(GameLib.Event.GET_PHYSICS_RUNTIME,null,function(e){i=e}.bind(this),function(){i=null}.bind(this)),this.physics=i,this.visualizationSubscription=null,this.stopVisualizationSubscription=null},GameLib.System.Visualization.prototype=Object.create(GameLib.System.prototype),GameLib.System.Visualization.prototype.constructor=GameLib.System.Visualization,GameLib.System.Visualization.prototype.start=function(){GameLib.System.prototype.start.call(this),this.visualizationSubscription=this.subscribe(GameLib.Event.VISUALIZE,this.visualize),this.stopVisualizationSubscription=this.subscribe(GameLib.Event.STOP_VISUALIZE,this.stopVisualize)},GameLib.System.Visualization.prototype.visualize=function(e){var t=e.shape;t.parentMesh;t.setFromMesh();var i=new GameLib.D3.API.Mesh;if(i.name="Visualization Mesh for Shape "+t.name,t instanceof GameLib.D3.Shape.HeightMap)for(var n=new CANNON.Vec3,a=new CANNON.Vec3,s=new CANNON.Vec3,o=0;o<t.heightData.length-1;o++)for(var r=0;r<t.heightData[o].length-1;r++)for(var c=0;c<2;c++){t.instance.getConvexTrianglePillar(o,r,0===c),n.copy(t.instance.pillarConvex.vertices[0]),a.copy(t.instance.pillarConvex.vertices[1]),s.copy(t.instance.pillarConvex.vertices[2]),n.vadd(t.instance.pillarOffset,n),a.vadd(t.instance.pillarOffset,a),s.vadd(t.instance.pillarOffset,s),i.vertices.push(new GameLib.D3.API.Vertex(new GameLib.API.Vector3(n.x,n.y,n.z)),new GameLib.D3.API.Vertex(new GameLib.API.Vector3(a.x,a.y,a.z)),new GameLib.D3.API.Vertex(new GameLib.API.Vector3(s.x,s.y,s.z)));var h=i.vertices.length-3;i.faces.push(new GameLib.D3.API.Face(null,null,h,h+1,h+2))}new GameLib.D3.Mesh(this.graphics,i)},GameLib.System.Visualization.prototype.stopVisuali