meta-client
Version:
Meta.js (Client)
1 lines • 6.08 kB
JavaScript
'use strict';Object.defineProperty(exports,'__esModule',{value:true});exports.timer=exports.on=undefined;var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if('value'in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _config=require('../../config');var _config2=_interopRequireDefault(_config);var _three=require('three');var _Device=require('./Device/Device');var _Device2=_interopRequireDefault(_Device);var _Meta2=require('./Meta/Meta');var _Meta3=_interopRequireDefault(_Meta2);var _Graphics=require('./Meta/Graphics/Graphics');var _Graphics2=_interopRequireDefault(_Graphics);var _Cube=require('./Meta/Graphics/Geometries/Cube');var _Cube2=_interopRequireDefault(_Cube);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function')}}var scope=void 0;var renderer=void 0,scene=void 0,camera=void 0,controls=void 0,container=void 0;var animate=void 0;var stop=false;var instance=false;var clock=void 0;var _default=void 0;var Space=function(){function Space(props){var _this=this;_classCallCheck(this,Space);_default={color:_config2.default.space.color};var _Meta=props&&props.Meta!==undefined?props.Meta:false;var _color=props&&props.color!==undefined?props.color:_default.color;clock=new _three.Clock;if(instance){Space.clear();Space.get().renderer.setClearColor(_color);Space.get().scene.fog=new _three.Fog(_color,0,5);return Space.get()}scope=this;instance=this;this.events=[];this.Meta=[];this.intervals=[];document.body.style.margin='0';this.renderer=new _three.WebGLRenderer({antialias:true});this.renderer.setSize(innerWidth,innerHeight);this.renderer.setViewport(0,0,innerWidth,innerHeight);this.renderer.setPixelRatio(window.devicePixelRatio);this.renderer.setClearColor(_color);this.renderer.gammaInput=true;this.renderer.gammaOutput=true;this.renderer.autoClear=true;this.renderer.domElement.id='renderer';this.renderer.domElement.style.position='fixed';this.renderer.domElement.style.zIndex='0';this.renderer.domElement.style.left='0';this.renderer.domElement.style.top='0';this.renderer.animate(scope.render);document.body.appendChild(this.renderer.domElement);this.scene=new _three.Scene;this.scene.fog=new _three.Fog(_color,0,6.25);this.camera=new _three.PerspectiveCamera(55,innerWidth/innerHeight,.01,1000);this.scene.add(this.camera);var light=new _three.AmbientLight(16777215,.5);light.position.set(25,50,25);this.scene.add(light);light=new _three.DirectionalLight(16777215,1);light.position.set(25,25,25);this.scene.add(light);light=new _three.DirectionalLight(16777215,1);light.position.set(-25,25,-25);this.scene.add(light);addEventListener('resize',function(event){_this.camera.aspect=window.innerWidth/window.innerHeight;_this.camera.updateProjectionMatrix();_this.renderer.setSize(window.innerWidth,window.innerHeight)});this.container=new _three.Object3D;this.scene.add(this.container);this.device=new _Device2.default(this);if(_Meta)this.add(_Meta);this.render();window.__SPACE__=this;return this}_createClass(Space,[{key:'on',value:function on(eventName,callback){if(typeof eventName=='function'){callback=eventName;eventName='p'}if(eventName=='t')eventName='touch';if(eventName=='r')eventName='release';if(eventName=='p')eventName='point';if(this.events[eventName]){this.events[eventName].push(callback)}else{this.events[eventName]=[callback]}return this}},{key:'go',value:function go(eventName){var _this2=this;for(var _len=arguments.length,rest=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){rest[_key-1]=arguments[_key]}if(this.events[eventName]){this.events[eventName].forEach(function(cb){cb.apply(undefined,rest.concat([_this2]))})}return this}},{key:'add',value:function add(Meta){this.Meta.push(Meta)}},{key:'start',value:function start(Meta){this.container.add(Meta.graphics.mesh)}},{key:'remove',value:function remove(Meta){}},{key:'end',value:function end(Meta){this.container.remove(Meta.graphics.mesh)}},{key:'life',value:function life(){var time=clock.getElapsedTime();this.Meta.forEach(function(Meta){if(Meta._physics!==null&&Meta.body!==undefined){Meta.graphics.mesh.position.copy(Meta.body.getPosition());Meta.graphics.mesh.quaternion.copy(Meta.body.getQuaternion())}else{Meta.lifes.map(function(life){life(Meta,time)})}Meta.life()})}},{key:'render',value:function render(){if(stop)return;scope.life();if(scope!==undefined&&scope.device!==undefined&&scope.device.render!==undefined)scope.device.render();_Meta3.default.getWorld().step();scope.renderer.render(scope.scene,scope.camera)}},{key:'timer',value:function timer(fun,interval){fun();var _interval=setInterval(fun,interval);this.intervals.push(_interval)}}],[{key:'get',value:function get(){if(!instance)new Space;return instance}},{key:'clear',value:function clear(options){if(!instance)return;var _Meta=options!==undefined&&options.Meta!==undefined?options.Meta:true;var _events=options!==undefined&&options.events!==undefined?options.events:true;var _intervals=options!==undefined&&options.intervals!==undefined?options.intervals:true;if(scope&&scope.container&&scope.container.children){for(var i=scope.container.children.length-1;i>=0;i--){scope.container.remove(scope.container.children[i])}}_Meta3.default.clear();if(_Meta)scope.Meta=[];if(_events)scope.events=[];if(_intervals)scope.intervals.forEach(function(interval){clearInterval(interval)});scope.intervals=[]}}]);return Space}();exports.default=Space;var on=function on(eventName,callback){return Space.get().on(eventName,callback)};var timer=function timer(fun,interval){return Space.get().timer(fun,interval)};exports.on=on;exports.timer=timer;