UNPKG

@phaserjs/phaser

Version:
1 lines 482 kB
(function(global,factory){if(typeof define==="function"&&define.amd){define(["exports","@swc/helpers","regenerator-runtime"],factory)}else if(typeof exports!=="undefined"){factory(exports,require("@swc/helpers"),require("regenerator-runtime"))}else{var mod={exports:{}};factory(mod.exports,global.helpers,global.regeneratorRuntime);global.phaser=mod.exports}})(this,function(_exports,swcHelpers,_regeneratorRuntime){"use strict";_regeneratorRuntime=swcHelpers.interopRequireDefault(_regeneratorRuntime);Object.defineProperty(_exports,"__esModule",{value:true});_exports.WebGL1=_exports.Animation=_exports.Scenes=_exports.Geom=_exports.Events=_exports.Time=_exports.Input=_exports.Game=_exports.Color=_exports.Display=_exports.Camera=_exports.Config=_exports.CreateGame=_exports.Scene=_exports.Loader=_exports.GameObjects=_exports.Device=_exports.Textures=_exports.Math=_exports.DOM=_exports.World=void 0;var _console,_console1,_results;var __defProp=Object.defineProperty;var __markAsModule=function(target){return __defProp(target,"__esModule",{value:true})};var __export=function(target,all){__markAsModule(target);for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var animation_exports={};__export(animation_exports,{AddFrame:function(){return AddFrame},AddFrames:function(){return AddFrames},Animation:function(){return Animation},AnimationFrame:function(){return AnimationFrame},CalculateDuration:function(){return CalculateDuration},CreateAnimData:function(){return CreateAnimData},CreateAnimationFromAtlas:function(){return CreateAnimationFromAtlas},LinkFrames:function(){return LinkFrames},Play:function(){return Play},RemoveFrame:function(){return RemoveFrame},RemoveFrames:function(){return RemoveFrames}});function CalculateDuration(animation,frameRate,duration){var totalFrames=animation.frames.size;if(!Number.isFinite(duration)&&!Number.isFinite(frameRate)){animation.frameRate=24;animation.duration=24/totalFrames*1e3}else if(duration&&!Number.isFinite(frameRate)){animation.duration=duration;animation.frameRate=totalFrames/(duration/1e3)}else{animation.frameRate=frameRate;animation.duration=totalFrames/frameRate*1e3}animation.msPerFrame=1e3/animation.frameRate;return animation}function LinkFrames(animation){var totalFrames=animation.frames.size;if(totalFrames===0){return animation}var i=0;var framePercent=1/totalFrames;var firstFrame;var prevFrame2;for(var _i=0,_iter=animation.frames.values();_i<_iter.length;_i++){var frame2=_iter[_i];if(!prevFrame2){frame2.isFirst=true;animation.firstFrame=frame2;firstFrame=frame2}else{prevFrame2.nextFrame=frame2;frame2.prevFrame=prevFrame2}prevFrame2=frame2;i++;frame2.progress=framePercent*i;if(i===totalFrames){frame2.isLast=true;frame2.nextFrame=firstFrame;firstFrame.prevFrame=frame2}}return animation}function AddFrame(animation,frame2){animation.frames.add(frame2);CalculateDuration(animation,animation.frameRate);return LinkFrames(animation)}function AddFrames(animation){for(var _len=arguments.length,frames=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){frames[_key-1]=arguments[_key]}frames.forEach(function(frame2){animation.frames.add(frame2)});CalculateDuration(animation,animation.frameRate);return LinkFrames(animation)}var Animation=function(){"use strict";function _class(config){swcHelpers.classCallCheck(this,_class);swcHelpers.defineProperty(this,"key",void 0);swcHelpers.defineProperty(this,"frames",void 0);swcHelpers.defineProperty(this,"firstFrame",void 0);swcHelpers.defineProperty(this,"msPerFrame",void 0);swcHelpers.defineProperty(this,"frameRate",void 0);swcHelpers.defineProperty(this,"duration",void 0);swcHelpers.defineProperty(this,"skipMissedFrames",void 0);swcHelpers.defineProperty(this,"delay",void 0);swcHelpers.defineProperty(this,"hold",void 0);swcHelpers.defineProperty(this,"repeat",void 0);swcHelpers.defineProperty(this,"repeatDelay",void 0);swcHelpers.defineProperty(this,"yoyo",void 0);swcHelpers.defineProperty(this,"showOnStart",void 0);swcHelpers.defineProperty(this,"hideOnComplete",void 0);swcHelpers.defineProperty(this,"paused",void 0);var key=config.key,_frames=config.frames,frames=_frames===void 0?[]:_frames,_frameRate=config.frameRate,frameRate=_frameRate===void 0?null:_frameRate,_duration=config.duration,duration=_duration===void 0?null:_duration,_skipMissedFrames=config.skipMissedFrames,skipMissedFrames=_skipMissedFrames===void 0?true:_skipMissedFrames,_delay=config.delay,delay=_delay===void 0?0:_delay,_repeat=config.repeat,repeat=_repeat===void 0?0:_repeat,_repeatDelay=config.repeatDelay,repeatDelay=_repeatDelay===void 0?0:_repeatDelay,_yoyo=config.yoyo,yoyo=_yoyo===void 0?false:_yoyo,_showOnStart=config.showOnStart,showOnStart=_showOnStart===void 0?false:_showOnStart,_hideOnComplete=config.hideOnComplete,hideOnComplete=_hideOnComplete===void 0?false:_hideOnComplete,_paused=config.paused,paused=_paused===void 0?false:_paused;this.key=key;this.skipMissedFrames=skipMissedFrames;this.delay=delay;this.repeat=repeat;this.repeatDelay=repeatDelay;this.yoyo=yoyo;this.showOnStart=showOnStart;this.hideOnComplete=hideOnComplete;this.paused=paused;this.frames=new Set(frames);CalculateDuration(this,frameRate,duration);LinkFrames(this)}swcHelpers.createClass(_class,[{key:"getTotalFrames",value:function getTotalFrames(){return this.frames.size}},{key:"destroy",value:function destroy(){this.frames.clear()}}]);return _class}();var AnimationFrame=function(){"use strict";function _class(texture,frame2){swcHelpers.classCallCheck(this,_class);swcHelpers.defineProperty(this,"texture",void 0);swcHelpers.defineProperty(this,"frame",void 0);swcHelpers.defineProperty(this,"isFirst",false);swcHelpers.defineProperty(this,"isLast",false);swcHelpers.defineProperty(this,"isKeyFrame",false);swcHelpers.defineProperty(this,"nextFrame",void 0);swcHelpers.defineProperty(this,"prevFrame",void 0);swcHelpers.defineProperty(this,"duration",0);swcHelpers.defineProperty(this,"progress",0);this.texture=texture;this.frame=frame2}swcHelpers.createClass(_class,[{key:"destroy",value:function destroy(){this.texture=null;this.frame=null;this.nextFrame=null;this.prevFrame=null}}]);return _class}();function CreateAnimData(param,param1,param2,param3,param4,param5,param6,param7,param8,param9){var currentAnim=param===void 0?"":param,frameRate=param1===void 0?0:param1,duration=param2===void 0?0:param2,delay=param3===void 0?0:param3,repeat=param4===void 0?0:param4,repeatDelay=param5===void 0?0:param5,yoyo=param6===void 0?false:param6,hold=param7===void 0?0:param7,showOnStart=param8===void 0?false:param8,hideOnComplete=param9===void 0?false:param9;return{currentAnim:currentAnim,frameRate:frameRate,duration:duration,delay:delay,repeat:repeat,repeatDelay:repeatDelay,yoyo:yoyo,hold:hold,showOnStart:showOnStart,hideOnComplete:hideOnComplete,stopAfter:0,startFrame:0,timeScale:1,onStart:null,onRepeat:null,onComplete:null,nextFrameTime:0,repeatCount:0,isPlaying:false,forceRestart:false,pendingStart:false,playingForward:true}}function GetFramesInRange(texture,config){var _prefix=config.prefix,prefix=_prefix===void 0?"":_prefix,_start=config.start,start=_start===void 0?0:_start,_zeroPad=config.zeroPad,zeroPad=_zeroPad===void 0?0:_zeroPad,_suffix=config.suffix,suffix=_suffix===void 0?"":_suffix;var end=config.end;var output=[];var diff2=start<end?1:-1;end+=diff2;for(var i=start;i!==end;i+=diff2){var frameKey=prefix+i.toString().padStart(zeroPad,"0")+suffix;output.push(texture.getFrame(frameKey))}return output}var instance;var TextureManagerInstance={get:function(){return instance},set:function(manager){if(instance){throw new Error("Cannot instantiate TextureManager more than once")}instance=manager}};function GetTexture(key){return TextureManagerInstance.get().get(key)}var queue=[];var BindingQueue={add:function(texture,glConfig){queue.push({texture:texture,glConfig:glConfig})},get:function(){return queue},clear:function(){queue.length=0}};function UpdateFrameUVs(frame2){var x=frame2.x,y=frame2.y,width=frame2.width,height=frame2.height;var baseTextureWidth=frame2.texture.width;var baseTextureHeight=frame2.texture.height;frame2.u0=x/baseTextureWidth;frame2.v0=y/baseTextureHeight;frame2.u1=(x+width)/baseTextureWidth;frame2.v1=(y+height)/baseTextureHeight;return frame2}var Frame=function(){"use strict";function _class(texture,key,x,y,width,height){swcHelpers.classCallCheck(this,_class);swcHelpers.defineProperty(this,"texture",void 0);swcHelpers.defineProperty(this,"key",void 0);swcHelpers.defineProperty(this,"x",void 0);swcHelpers.defineProperty(this,"y",void 0);swcHelpers.defineProperty(this,"width",void 0);swcHelpers.defineProperty(this,"height",void 0);swcHelpers.defineProperty(this,"trimmed",false);swcHelpers.defineProperty(this,"sourceSizeWidth",void 0);swcHelpers.defineProperty(this,"sourceSizeHeight",void 0);swcHelpers.defineProperty(this,"spriteSourceSizeX",void 0);swcHelpers.defineProperty(this,"spriteSourceSizeY",void 0);swcHelpers.defineProperty(this,"spriteSourceSizeWidth",void 0);swcHelpers.defineProperty(this,"spriteSourceSizeHeight",void 0);swcHelpers.defineProperty(this,"pivot",void 0);swcHelpers.defineProperty(this,"u0",void 0);swcHelpers.defineProperty(this,"v0",void 0);swcHelpers.defineProperty(this,"u1",void 0);swcHelpers.defineProperty(this,"v1",void 0);this.texture=texture;this.key=key;this.x=x;this.y=y;this.width=width;this.height=height;this.sourceSizeWidth=width;this.sourceSizeHeight=height;UpdateFrameUVs(this)}swcHelpers.createClass(_class,[{key:"destroy",value:function destroy(){this.texture=null}}]);return _class}();function SetFrameSize(frame2,width,height){frame2.width=width;frame2.height=height;frame2.sourceSizeWidth=width;frame2.sourceSizeHeight=height;return UpdateFrameUVs(frame2)}var Texture=function(){"use strict";function _class(image,width,height,glConfig){swcHelpers.classCallCheck(this,_class);swcHelpers.defineProperty(this,"key","");swcHelpers.defineProperty(this,"locked",true);swcHelpers.defineProperty(this,"width",void 0);swcHelpers.defineProperty(this,"height",void 0);swcHelpers.defineProperty(this,"image",void 0);swcHelpers.defineProperty(this,"binding",void 0);swcHelpers.defineProperty(this,"firstFrame",void 0);swcHelpers.defineProperty(this,"frames",void 0);swcHelpers.defineProperty(this,"data",void 0);if(image){width=image.width;height=image.height}this.image=image;this.width=width;this.height=height;this.frames=new Map();this.data={};this.addFrame("__BASE",0,0,width,height);BindingQueue.add(this,glConfig)}swcHelpers.createClass(_class,[{key:"addFrame",value:function addFrame(key,x,y,width,height){if(this.frames.has(key)){return null}var frame2=new Frame(this,key,x,y,width,height);this.frames.set(key,frame2);if(!this.firstFrame||this.firstFrame.key==="__BASE"){this.firstFrame=frame2}return frame2}},{key:"getFrame",value:function getFrame(key){if(!key){return this.firstFrame}if(swcHelpers._instanceof(key,Frame)){key=key.key}var frame2=this.frames.get(key);if(!frame2){console.warn("Frame missing: ".concat(key));frame2=this.firstFrame}return frame2}},{key:"setSize",value:function setSize(width,height){this.width=width;this.height=height;var frame2=this.frames.get("__BASE");SetFrameSize(frame2,width,height)}},{key:"update",value:function update(image,glConfig){this.image=image;this.setSize(image.width,image.height);BindingQueue.add(this,glConfig)}},{key:"destroy",value:function destroy(){if(this.binding){this.binding.destroy()}this.frames.clear();this.binding=null;this.data=null;this.image=null;this.firstFrame=null}}]);return _class}();function CreateAnimationFromAtlas(config){var texture=swcHelpers._instanceof(config.texture,Texture)?config.texture:GetTexture(config.texture);var frames=[];GetFramesInRange(texture,config).forEach(function(frame2){frames.push(new AnimationFrame(texture,frame2))});return new Animation(swcHelpers.objectSpread({frames:frames},config))}function Play(animation,param){var config=param===void 0?{}:param;for(var _len=arguments.length,sprites=new Array(_len>2?_len-2:0),_key=2;_key<_len;_key++){sprites[_key-2]=arguments[_key]}var data=CreateAnimData(animation.key,animation.frameRate,animation.duration,animation.delay,animation.repeat,animation.repeatDelay,animation.yoyo,animation.hold,animation.showOnStart,animation.hideOnComplete);Object.assign(data,config);data.nextFrameTime=animation.msPerFrame+data.delay;sprites.forEach(function(sprite){if(!sprite||!sprite.animData){return}var spriteAnimData=sprite.animData;if(spriteAnimData.isPlaying){if(sprite.currentAnimation!==animation){spriteAnimData.isPlaying=false;if(spriteAnimData.onComplete){spriteAnimData.onComplete(sprite,sprite.currentAnimation)}}else if(!data.forceRestart){return}}Object.assign(spriteAnimData,data);sprite.currentAnimation=animation;sprite.currentFrame=animation.firstFrame;sprite.play()});return sprites}function RemoveFrame(animation,frame2){animation.frames.delete(frame2);CalculateDuration(animation,animation.frameRate);return LinkFrames(animation)}function RemoveFrames(animation){for(var _len=arguments.length,frames=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){frames[_key-1]=arguments[_key]}frames.forEach(function(frame2){animation.frames.delete(frame2)});CalculateDuration(animation,animation.frameRate);return LinkFrames(animation)}var camera_exports={};__export(camera_exports,{StaticCamera:function(){return StaticCamera},WorldCamera:function(){return WorldCamera}});var TYPES_ENUM={i8:"i8",ui8:"ui8",ui8c:"ui8c",i16:"i16",ui16:"ui16",i32:"i32",ui32:"ui32",f32:"f32",f64:"f64",eid:"eid"};var TYPES_NAMES={i8:"Int8",ui8:"Uint8",ui8c:"Uint8Clamped",i16:"Int16",ui16:"Uint16",i32:"Int32",ui32:"Uint32",eid:"Uint32",f32:"Float32",f64:"Float64"};var TYPES={i8:Int8Array,ui8:Uint8Array,ui8c:Uint8ClampedArray,i16:Int16Array,ui16:Uint16Array,i32:Int32Array,ui32:Uint32Array,f32:Float32Array,f64:Float64Array,eid:Uint32Array};var UNSIGNED_MAX={uint8:Math.pow(2,8),uint16:Math.pow(2,16),uint32:Math.pow(2,32)};var roundToMultiple=function(mul){return function(x){return Math.ceil(x/mul)*mul}};var roundToMultiple4=roundToMultiple(4);var $storeRef=Symbol("storeRef");var $storeSize=Symbol("storeSize");var $storeMaps=Symbol("storeMaps");var $storeFlattened=Symbol("storeFlattened");var $storeBase=Symbol("storeBase");var $storeType=Symbol("storeType");var $storeArrayCounts=Symbol("storeArrayCount");var $storeSubarrays=Symbol("storeSubarrays");var $subarrayCursors=Symbol("subarrayCursors");var $subarray=Symbol("subarray");var $subarrayFrom=Symbol("subarrayFrom");var $subarrayTo=Symbol("subarrayTo");var $parentArray=Symbol("subStore");var $tagStore=Symbol("tagStore");var $queryShadow=Symbol("queryShadow");var $serializeShadow=Symbol("serializeShadow");var $indexType=Symbol("indexType");var $indexBytes=Symbol("indexBytes");var $isEidType=Symbol("isEidType");var stores={};var resize=function(ta,size){var newBuffer=new ArrayBuffer(size*ta.BYTES_PER_ELEMENT);var newTa=new ta.constructor(newBuffer);newTa.set(ta,0);return newTa};var createShadow=function(store,key){if(!ArrayBuffer.isView(store)){var shadowStore=store[$parentArray].slice(0).fill(0);store[key]=store.map(function(_,eid){var from=store[eid][$subarrayFrom];var to=store[eid][$subarrayTo];return shadowStore.subarray(from,to)})}else{store[key]=store.slice(0).fill(0)}};var resizeSubarray=function(metadata,store,size){var cursors=metadata[$subarrayCursors];var type=store[$storeType];var length=store[0].length;var indexType=length<=UNSIGNED_MAX.uint8?"ui8":length<=UNSIGNED_MAX.uint16?"ui16":"ui32";var arrayCount=metadata[$storeArrayCounts][type];var summedLength=Array(arrayCount).fill(0).reduce(function(a,p){return a+length},0);var array=new TYPES[type](roundToMultiple4(summedLength*size));array.set(metadata[$storeSubarrays][type]);metadata[$storeSubarrays][type]=array;array[$indexType]=TYPES_NAMES[indexType];array[$indexBytes]=TYPES[indexType].BYTES_PER_ELEMENT;var start=cursors[type];var end=0;for(var eid=0;eid<size;eid++){var from=cursors[type]+eid*length;var to=from+length;store[eid]=metadata[$storeSubarrays][type].subarray(from,to);store[eid][$subarrayFrom]=from;store[eid][$subarrayTo]=to;store[eid][$subarray]=true;store[eid][$indexType]=TYPES_NAMES[indexType];store[eid][$indexBytes]=TYPES[indexType].BYTES_PER_ELEMENT;end=to}cursors[type]=end;store[$parentArray]=metadata[$storeSubarrays][type].subarray(start,end)};var resizeRecursive=function(metadata,store,size){Object.keys(store).forEach(function(key){var ta=store[key];if(Array.isArray(ta)){resizeSubarray(metadata,ta,size);store[$storeFlattened].push(ta)}else if(ArrayBuffer.isView(ta)){store[key]=resize(ta,size);store[$storeFlattened].push(store[key])}else if(typeof ta==="object"){resizeRecursive(metadata,store[key],size)}})};var resizeStore=function(store,size){if(store[$tagStore])return;store[$storeSize]=size;store[$storeFlattened].length=0;Object.keys(store[$subarrayCursors]).forEach(function(k){store[$subarrayCursors][k]=0});resizeRecursive(store,store,size)};var resetStoreFor=function(store,eid){if(store[$storeFlattened]){store[$storeFlattened].forEach(function(ta){if(ArrayBuffer.isView(ta))ta[eid]=0;else ta[eid].fill(0)})}};var createTypeStore=function(type,length){var totalBytes=length*TYPES[type].BYTES_PER_ELEMENT;var buffer=new ArrayBuffer(totalBytes);var store=new TYPES[type](buffer);store[$isEidType]=type===TYPES_ENUM.eid;return store};var createArrayStore=function(metadata,type,length){var size=metadata[$storeSize];var store=Array(size).fill(0);store[$storeType]=type;store[$isEidType]=type===TYPES_ENUM.eid;var cursors=metadata[$subarrayCursors];var indexType=length<UNSIGNED_MAX.uint8?"ui8":length<UNSIGNED_MAX.uint16?"ui16":"ui32";if(!length)throw new Error("bitECS - Must define component array length");if(!TYPES[type])throw new Error("bitECS - Invalid component array property type ".concat(type));if(!metadata[$storeSubarrays][type]){var arrayCount=metadata[$storeArrayCounts][type];var summedLength=Array(arrayCount).fill(0).reduce(function(a,p){return a+length},0);var array=new TYPES[type](roundToMultiple4(summedLength*size));metadata[$storeSubarrays][type]=array;array[$indexType]=TYPES_NAMES[indexType];array[$indexBytes]=TYPES[indexType].BYTES_PER_ELEMENT}var start=cursors[type];var end=0;for(var eid=0;eid<size;eid++){var from=cursors[type]+eid*length;var to=from+length;store[eid]=metadata[$storeSubarrays][type].subarray(from,to);store[eid][$subarrayFrom]=from;store[eid][$subarrayTo]=to;store[eid][$subarray]=true;store[eid][$indexType]=TYPES_NAMES[indexType];store[eid][$indexBytes]=TYPES[indexType].BYTES_PER_ELEMENT;end=to}cursors[type]=end;store[$parentArray]=metadata[$storeSubarrays][type].subarray(start,end);return store};var isArrayType=function(x){return Array.isArray(x)&& typeof x[0]==="string"&& typeof x[1]==="number"};var _obj,_obj1;var createStore=function(schema,size){var $store=Symbol("store");if(!schema||!Object.keys(schema).length){stores[$store]=(_obj={},swcHelpers.defineProperty(_obj,$storeSize,size),swcHelpers.defineProperty(_obj,$tagStore,true),swcHelpers.defineProperty(_obj,$storeBase,function(){return stores[$store]}),_obj);return stores[$store]}schema=JSON.parse(JSON.stringify(schema));var arrayCounts={};var collectArrayCounts=function(s){var keys=Object.keys(s);for(var _i=0;_i<keys.length;_i++){var k=keys[_i];if(isArrayType(s[k])){if(!arrayCounts[s[k][0]])arrayCounts[s[k][0]]=0;arrayCounts[s[k][0]]++}else if(swcHelpers._instanceof(s[k],Object)){collectArrayCounts(s[k])}}};collectArrayCounts(schema);var metadata=(_obj1={},swcHelpers.defineProperty(_obj1,$storeSize,size),swcHelpers.defineProperty(_obj1,$storeMaps,{}),swcHelpers.defineProperty(_obj1,$storeSubarrays,{}),swcHelpers.defineProperty(_obj1,$storeRef,$store),swcHelpers.defineProperty(_obj1,$subarrayCursors,Object.keys(TYPES).reduce(function(a,type){return swcHelpers.objectSpread({},a,swcHelpers.defineProperty({},type,0))},{})),swcHelpers.defineProperty(_obj1,$storeFlattened,[]),swcHelpers.defineProperty(_obj1,$storeArrayCounts,arrayCounts),_obj1);if(swcHelpers._instanceof(schema,Object)&&Object.keys(schema).length){var recursiveTransform=function(a,k){if(typeof a[k]==="string"){a[k]=createTypeStore(a[k],size);a[k][$storeBase]=function(){return stores[$store]};metadata[$storeFlattened].push(a[k])}else if(isArrayType(a[k])){var _k=a[k],type=_k[0],length=_k[1];a[k]=createArrayStore(metadata,type,length);a[k][$storeBase]=function(){return stores[$store]};metadata[$storeFlattened].push(a[k])}else if(swcHelpers._instanceof(a[k],Object)){a[k]=Object.keys(a[k]).reduce(recursiveTransform,a[k])}return a};stores[$store]=Object.assign(Object.keys(schema).reduce(recursiveTransform,schema),metadata);stores[$store][$storeBase]=function(){return stores[$store]};return stores[$store]}};var SparseSet=function(){var dense=[];var sparse=[];dense.sort=function SparseSet(comparator){var result=Array.prototype.sort.call(this,comparator);for(var i=0;i<dense.length;i++){sparse[dense[i]]=i}return result};var has=function(val){return dense[sparse[val]]===val};var add=function(val){if(has(val))return;sparse[val]=dense.push(val)-1};var remove=function(val){if(!has(val))return;var index=sparse[val];var swapped=dense.pop();if(swapped!==val){dense[index]=swapped;sparse[swapped]=index}};return{add:add,remove:remove,has:has,sparse:sparse,dense:dense}};var newEntities=new Map();var $entityMasks=Symbol("entityMasks");var $entityComponents=Symbol("entityComponents");var $entitySparseSet=Symbol("entitySparseSet");var $entityArray=Symbol("entityArray");var $entityIndices=Symbol("entityIndices");var $removedEntities=Symbol("removedEntities");var defaultSize=1e5;var globalEntityCursor=0;var globalSize=defaultSize;var getGlobalSize=function(){return globalSize};var removed=[];var getEntityCursor=function(){return globalEntityCursor};var eidToWorld=new Map();var addEntity=function(world2){if(globalEntityCursor+1>=defaultSize){console.error("bitECS - max entities of ".concat(defaultSize," reached, increase with setDefaultSize function."));return}var eid=removed.length>0?removed.shift():globalEntityCursor++;world2[$entitySparseSet].add(eid);eidToWorld.set(eid,world2);world2[$notQueries].forEach(function(q){var match=queryCheckEntity(world2,q,eid);if(match)queryAddEntity(q,eid)});world2[$entityComponents].set(eid,new Set());return eid};var removeEntity=function(world2,eid){if(!world2[$entitySparseSet].has(eid))return;world2[$queries].forEach(function(q){queryRemoveEntity(world2,q,eid)});removed.push(eid);world2[$entitySparseSet].remove(eid);world2[$entityComponents].delete(eid);world2[$localEntities].delete(world2[$localEntityLookup].get(eid));world2[$localEntityLookup].delete(eid);for(var i=0;i<world2[$entityMasks].length;i++)world2[$entityMasks][i][eid]=0};function Any(){for(var _len=arguments.length,comps=new Array(_len),_key=0;_key<_len;_key++){comps[_key]=arguments[_key]}return function QueryAny(){return comps}}function All(){for(var _len=arguments.length,comps=new Array(_len),_key=0;_key<_len;_key++){comps[_key]=arguments[_key]}return function QueryAll(){return comps}}function None(){for(var _len=arguments.length,comps=new Array(_len),_key=0;_key<_len;_key++){comps[_key]=arguments[_key]}return function QueryNone(){return comps}}var $queries=Symbol("queries");var $notQueries=Symbol("notQueries");var $queryAny=Symbol("queryAny");var $queryAll=Symbol("queryAll");var $queryNone=Symbol("queryNone");var $queryMap=Symbol("queryMap");var $dirtyQueries=Symbol("$dirtyQueries");var $queryComponents=Symbol("queryComponents");var $enterQuery=Symbol("enterQuery");var $exitQuery=Symbol("exitQuery");var registerQuery=function(world2,query){var components2=[];var notComponents=[];var changedComponents=[];query[$queryComponents].forEach(function(c){if(typeof c==="function"){var ref=c(),comp=ref[0],mod=ref[1];if(!world2[$componentMap].has(comp))registerComponent(world2,comp);if(mod==="not"){notComponents.push(comp)}if(mod==="changed"){changedComponents.push(comp);components2.push(comp)}}else{if(!world2[$componentMap].has(c))registerComponent(world2,c);components2.push(c)}});var mapComponents=function(c){return world2[$componentMap].get(c)};var allComponents=components2.concat(notComponents).map(mapComponents);var sparseSet=SparseSet();var archetypes=[];var changed=[];var toRemove=SparseSet();var entered=[];var exited=[];var generations=allComponents.map(function(c){return c.generationId}).reduce(function(a,v){if(a.includes(v))return a;a.push(v);return a},[]);var reduceBitflags=function(a,c){if(!a[c.generationId])a[c.generationId]=0;a[c.generationId]|=c.bitflag;return a};var masks=components2.map(mapComponents).reduce(reduceBitflags,{});var notMasks=notComponents.map(mapComponents).reduce(reduceBitflags,{});var hasMasks=allComponents.reduce(reduceBitflags,{});var flatProps=components2.filter(function(c){return!c[$tagStore]}).map(function(c){return Object.getOwnPropertySymbols(c).includes($storeFlattened)?c[$storeFlattened]:[c]}).reduce(function(a,v){return a.concat(v)},[]);var shadows=flatProps.map(function(prop){var $=Symbol();createShadow(prop,$);return prop[$]},[]);var q=Object.assign(sparseSet,{archetypes:archetypes,changed:changed,components:components2,notComponents:notComponents,changedComponents:changedComponents,allComponents:allComponents,masks:masks,notMasks:notMasks,hasMasks:hasMasks,generations:generations,flatProps:flatProps,toRemove:toRemove,entered:entered,exited:exited,shadows:shadows});world2[$queryMap].set(query,q);world2[$queries].add(q);allComponents.forEach(function(c){c.queries.add(q)});if(notComponents.length)world2[$notQueries].add(q);for(var eid=0;eid<getEntityCursor();eid++){if(!world2[$entitySparseSet].has(eid))continue;var match=queryCheckEntity(world2,q,eid);if(match)queryAddEntity(q,eid)}};var diff=function(q,clearDiff){if(clearDiff)q.changed=[];var flatProps=q.flatProps,shadows=q.shadows;for(var i=0;i<q.dense.length;i++){var eid=q.dense[i];var dirty=false;for(var pid=0;pid<flatProps.length;pid++){var prop=flatProps[pid];var shadow=shadows[pid];if(ArrayBuffer.isView(prop[eid])){for(var i2=0;i2<prop[eid].length;i2++){if(prop[eid][i2]!==shadow[eid][i2]){dirty=true;shadow[eid][i2]=prop[eid][i2];break}}}else{if(prop[eid]!==shadow[eid]){dirty=true;shadow[eid]=prop[eid]}}}if(dirty)q.changed.push(eid)}return q.changed};var flatten=function(a,v){return a.concat(v)};var aggregateComponentsFor=function(mod){return function(x){return x.filter(function(f){return f.name===mod().constructor.name}).reduce(flatten)}};var getAnyComponents=aggregateComponentsFor(Any);var getAllComponents=aggregateComponentsFor(All);var getNoneComponents=aggregateComponentsFor(None);var defineQuery=function(){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}var components2=void 0;var any=void 0,all=void 0,none=void 0;if(Array.isArray(args[0])){components2=args[0]}else{any=getAnyComponents(args);all=getAllComponents(args);none=getNoneComponents(args)}if(components2===void 0||components2[$componentMap]!==void 0){return function(world2){return world2?world2[$entityArray]:components2[$entityArray]}}var query=function defineQuery(world2,param){var clearDiff=param===void 0?true:param;if(!world2[$queryMap].has(query))registerQuery(world2,query);var q=world2[$queryMap].get(query);commitRemovals(world2);if(q.changedComponents.length)return diff(q,clearDiff);return q.dense};query[$queryComponents]=components2;query[$queryAny]=any;query[$queryAll]=all;query[$queryNone]=none;return query};var queryCheckEntity=function(world2,q,eid){var masks=q.masks,notMasks=q.notMasks,generations=q.generations;var or=0;for(var i=0;i<generations.length;i++){var generationId=generations[i];var qMask=masks[generationId];var qNotMask=notMasks[generationId];var eMask=world2[$entityMasks][generationId][eid];if(qNotMask&&(eMask&qNotMask)!==0){return false}if(qMask&&(eMask&qMask)!==qMask){return false}}return true};var queryAddEntity=function(q,eid){if(q.has(eid))return;q.add(eid);q.entered.push(eid)};var queryCommitRemovals=function(q){for(var i=q.toRemove.dense.length-1;i>=0;i--){var eid=q.toRemove.dense[i];q.toRemove.remove(eid);q.remove(eid)}};var commitRemovals=function(world2){if(!world2[$dirtyQueries].size)return;world2[$dirtyQueries].forEach(queryCommitRemovals);world2[$dirtyQueries].clear()};var queryRemoveEntity=function(world2,q,eid){if(!q.has(eid)||q.toRemove.has(eid))return;q.toRemove.add(eid);world2[$dirtyQueries].add(q);q.exited.push(eid)};var $componentMap=Symbol("componentMap");var components=[];var defineComponent=function(schema){var component=createStore(schema,getGlobalSize());if(schema&&Object.keys(schema).length)components.push(component);return component};var incrementBitflag=function(world2){world2[$bitflag]*=2;if(world2[$bitflag]>=2**31){world2[$bitflag]=1;world2[$entityMasks].push(new Uint32Array(world2[$size]))}};var registerComponent=function(world2,component){if(!component)throw new Error("bitECS - Cannot register null or undefined component");var queries=new Set();var notQueries=new Set();var changedQueries=new Set();world2[$queries].forEach(function(q){if(q.allComponents.includes(component)){queries.add(q)}});world2[$componentMap].set(component,{generationId:world2[$entityMasks].length-1,bitflag:world2[$bitflag],store:component,queries:queries,notQueries:notQueries,changedQueries:changedQueries});if(component[$storeSize]<getGlobalSize()){resizeStore(component,getGlobalSize())}incrementBitflag(world2)};var hasComponent=function(world2,component,eid){var registeredComponent=world2[$componentMap].get(component);if(!registeredComponent)return;var generationId=registeredComponent.generationId,bitflag=registeredComponent.bitflag;var mask=world2[$entityMasks][generationId][eid];return(mask&bitflag)===bitflag};var addComponent=function(world2,component,eid,param){var reset=param===void 0?true:param;if(eid===void 0)throw new Error("bitECS - entity is undefined.");if(!world2[$entitySparseSet].has(eid))throw new Error("bitECS - entity does not exist in the world.");if(!world2[$componentMap].has(component))registerComponent(world2,component);if(hasComponent(world2,component,eid))return;var c=world2[$componentMap].get(component);var generationId=c.generationId,bitflag=c.bitflag,queries=c.queries,notQueries=c.notQueries;world2[$entityMasks][generationId][eid]|=bitflag;queries.forEach(function(q){if(q.toRemove.has(eid))q.toRemove.remove(eid);var match=queryCheckEntity(world2,q,eid);if(match)queryAddEntity(q,eid);if(!match)queryRemoveEntity(world2,q,eid)});world2[$entityComponents].get(eid).add(component);if(reset)resetStoreFor(component,eid)};var removeComponent=function(world2,component,eid,param){var reset=param===void 0?false:param;var c=world2[$componentMap].get(component);var generationId=c.generationId,bitflag=c.bitflag,queries=c.queries,notQueries=c.notQueries;if(!(world2[$entityMasks][generationId][eid]&bitflag))return;world2[$entityMasks][generationId][eid]&=~bitflag;queries.forEach(function(q){if(q.toRemove.has(eid))q.toRemove.remove(eid);var match=queryCheckEntity(world2,q,eid);if(match)queryAddEntity(q,eid);if(!match)queryRemoveEntity(world2,q,eid)});world2[$entityComponents].get(eid).delete(component);if(reset)resetStoreFor(component,eid)};var $size=Symbol("size");var $resizeThreshold=Symbol("resizeThreshold");var $bitflag=Symbol("bitflag");var $archetypes=Symbol("archetypes");var $localEntities=Symbol("localEntities");var $localEntityLookup=Symbol("localEntityLookp");var worlds=[];var createWorld=function(param){var obj=param===void 0?{}:param;var world2=obj;resetWorld(world2);worlds.push(world2);return world2};var resetWorld=function(world2){var size=getGlobalSize();world2[$size]=size;if(world2[$entityArray])world2[$entityArray].forEach(function(eid){return removeEntity(world2,eid)});world2[$entityMasks]=[new Uint32Array(size)];world2[$entityComponents]=new Map();world2[$archetypes]=[];world2[$entitySparseSet]=SparseSet();world2[$entityArray]=world2[$entitySparseSet].dense;world2[$bitflag]=1;world2[$componentMap]=new Map();world2[$queryMap]=new Map();world2[$queries]=new Set();world2[$notQueries]=new Set();world2[$dirtyQueries]=new Set();world2[$localEntities]=new Map();world2[$localEntityLookup]=new Map();return world2};var Types=TYPES_ENUM;var TRANSFORM={IS_ROOT:0,X:1,Y:2,ROTATION:3,SCALE_X:4,SCALE_Y:5,SKEW_X:6,SKEW_Y:7,AXIS_ALIGNED:8,FRAME_X1:9,FRAME_Y1:10,FRAME_X2:11,FRAME_Y2:12,LOCAL_A:13,LOCAL_B:14,LOCAL_C:15,LOCAL_D:16,LOCAL_TX:17,LOCAL_TY:18,BOUNDS_X1:19,BOUNDS_Y1:20,BOUNDS_X2:21,BOUNDS_Y2:22,ORIGIN_X:23,ORIGIN_Y:24,WORLD_A:25,WORLD_B:26,WORLD_C:27,WORLD_D:28,WORLD_TX:29,WORLD_TY:30,FRAME_WIDTH:31,FRAME_HEIGHT:32,IN_VIEW:33,UPDATED:34};var Transform2DComponent=defineComponent({data:[Types.f32,35]});var world=createWorld();var GameObjectWorld=world;function AddTransform2DComponent(id){addComponent(GameObjectWorld,Transform2DComponent,id);var data=Transform2DComponent.data[id];data[TRANSFORM.SCALE_X]=1;data[TRANSFORM.SCALE_Y]=1;data[TRANSFORM.AXIS_ALIGNED]=1}function NOOP(){}var Matrix4=function(){"use strict";function _class(src){swcHelpers.classCallCheck(this,_class);swcHelpers.defineProperty(this,"data",void 0);swcHelpers.defineProperty(this,"onChange",void 0);var data=new Float32Array(16);this.data=data;this.onChange=NOOP;if(src){if(Array.isArray(src)){this.fromArray(src)}else{this.fromArray(src.data)}}else{data[0]=1;data[5]=1;data[10]=1;data[15]=1}}swcHelpers.createClass(_class,[{key:"set",value:function set(m00,m01,m02,m03,m10,m11,m12,m13,m20,m21,m22,m23,m30,m31,m32,m33){this.data.set([m00,m01,m02,m03,m10,m11,m12,m13,m20,m21,m22,m23,m30,m31,m32,m33]);this.onChange(this);return this}},{key:"toArray",value:function toArray(param,param1){var dst=param===void 0?[]:param,index=param1===void 0?0:param1;var data=this.data;for(var i=0;i<16;i++){dst[index+i]=data[i]}return dst}},{key:"fromArray",value:function fromArray(src,param){var index=param===void 0?0:param;var data=this.data;for(var i=0;i<16;i++){data[i]=src[index+i]}this.onChange(this);return this}},{key:"toString",value:function toString(){return"[ mat4="+this.data.join(", ")+" ]"}},{key:"destroy",value:function destroy(){this.onChange=NOOP;this.data=null}}]);return _class}();function SetBounds(id,x,y,right,bottom){var data=Transform2DComponent.data[id];data[TRANSFORM.BOUNDS_X1]=x;data[TRANSFORM.BOUNDS_Y1]=y;data[TRANSFORM.BOUNDS_X2]=right;data[TRANSFORM.BOUNDS_Y2]=bottom}var DIRTY={TRANSFORM:0,CHILD_TRANSFORM:1,COLOR:2,CHILD_COLOR:3,CHILD_CACHE:4,WORLD_TRANSFORM:5,DISPLAY_LIST:6,SELF:7};var DirtyComponent=defineComponent({data:[Types.ui8,8]});var instance2;var frame=0;var elapsed=0;var GameInstance={get:function(){return instance2},set:function(game){instance2=game},getFrame:function(){return frame},setFrame:function(current){frame=current},getElapsed:function(){return elapsed},setElapsed:function(current){elapsed=current}};var HIERARCHY={WORLD:0,PARENT:1,NEXT:2,PREV:3,FIRST:4,LAST:5,NUM_CHILDREN:6,DEPTH:7};var HierarchyComponent=defineComponent({data:[Types.ui32,8]});function GetParentID(id){return HierarchyComponent.data[id][HIERARCHY.PARENT]}function SetDirtyChildCache(id){DirtyComponent.data[id][DIRTY.CHILD_CACHE]=1}function SetDirtyChildTransform(id){DirtyComponent.data[id][DIRTY.CHILD_TRANSFORM]=1}var PERMISSION={VISIBLE:0,VISIBLE_CHILDREN:1,WILL_UPDATE:2,WILL_UPDATE_CHILDREN:3,WILL_RENDER:4,WILL_RENDER_CHILDREN:5,WILL_CACHE_CHILDREN:6,WILL_TRANSFORM_CHILDREN:7,WILL_COLOR_CHILDREN:8,CUSTOM_DISPLAY_LIST:9};var PermissionsComponent=defineComponent({data:[Types.ui8,10]});function WillCacheChildren(id){return!!PermissionsComponent.data[id][PERMISSION.WILL_CACHE_CHILDREN]}var prevParentID;var prevFrame;function SetDirtyParents(childID){var id=GetParentID(childID);var frame2=GameInstance.getFrame();if(id===prevParentID&&frame2===prevFrame){return}prevParentID=id;prevFrame=frame2;while(id){SetDirtyChildTransform(id);if(WillCacheChildren(id)){SetDirtyChildCache(id)}id=GetParentID(id)}}function SetDirtyTransform(id){DirtyComponent.data[id][DIRTY.TRANSFORM]=1;SetDirtyParents(id)}function UpdateExtent(id,width,height){var data=Transform2DComponent.data[id];var x=-data[TRANSFORM.ORIGIN_X]*width;var y=-data[TRANSFORM.ORIGIN_Y]*height;data[TRANSFORM.FRAME_X1]=x;data[TRANSFORM.FRAME_Y1]=y;data[TRANSFORM.FRAME_X2]=x+width;data[TRANSFORM.FRAME_Y2]=y+height;data[TRANSFORM.FRAME_WIDTH]=width;data[TRANSFORM.FRAME_HEIGHT]=height;SetDirtyTransform(id)}var Size=function(){"use strict";function _class(id,param,param1){var width=param===void 0?0:param,height=param1===void 0?0:param1;swcHelpers.classCallCheck(this,_class);swcHelpers.defineProperty(this,"id",void 0);swcHelpers.defineProperty(this,"_data",void 0);this.id=id;this._data=Transform2DComponent.data[id];this.set(width,height)}swcHelpers.createClass(_class,[{key:"set",value:function set(width,param){var height=param===void 0?width:param;this.width=width;this.height=height;return this}},{key:"width",get:function get(){return this._data[TRANSFORM.FRAME_WIDTH]},set:function set(value){UpdateExtent(this.id,value,this.height)}},{key:"height",get:function get(){return this._data[TRANSFORM.FRAME_HEIGHT]},set:function set(value){UpdateExtent(this.id,this.width,value)}},{key:"x",get:function get(){return this.width},set:function set(value){this.width=value}},{key:"y",get:function get(){return this.height},set:function set(value){this.height=value}},{key:"destroy",value:function destroy(){this._data=null}}]);return _class}();var BaseCamera=function(){"use strict";function _class(width,height){swcHelpers.classCallCheck(this,_class);swcHelpers.defineProperty(this,"id",addEntity(GameObjectWorld));swcHelpers.defineProperty(this,"type","BaseCamera");swcHelpers.defineProperty(this,"name","");swcHelpers.defineProperty(this,"size",void 0);swcHelpers.defineProperty(this,"matrix",void 0);swcHelpers.defineProperty(this,"isDirty",void 0);swcHelpers.defineProperty(this,"_data",void 0);var id=this.id;AddTransform2DComponent(id);this.matrix=new Matrix4();this.size=new Size(id,width,height);this._data=Transform2DComponent.data[id];this.reset(width,height)}swcHelpers.createClass(_class,[{key:"preRender",value:function preRender(){return this.isDirty}},{key:"postRender",value:function postRender(){this.isDirty=false}},{key:"getBoundsX",value:function getBoundsX(){return this._data[TRANSFORM.BOUNDS_X1]}},{key:"getBoundsY",value:function getBoundsY(){return this._data[TRANSFORM.BOUNDS_Y1]}},{key:"getBoundsRight",value:function getBoundsRight(){return this._data[TRANSFORM.BOUNDS_X2]}},{key:"getBoundsBottom",value:function getBoundsBottom(){return this._data[TRANSFORM.BOUNDS_Y2]}},{key:"getMatrix",value:function getMatrix(){return this.matrix.data}},{key:"reset",value:function reset(width,height){this.size.set(width,height);this.isDirty=true;SetBounds(this.id,0,0,width,height)}},{key:"destroy",value:function destroy(){var id=this.id;removeComponent(GameObjectWorld,Transform2DComponent,id);removeEntity(GameObjectWorld,id)}}]);return _class}();function ClearDirtyTransform(id){DirtyComponent.data[id][DIRTY.TRANSFORM]=0}function HasDirtyTransform(id){return!!DirtyComponent.data[id][DIRTY.TRANSFORM]}var StaticCamera=function(BaseCamera){"use strict";swcHelpers.inherits(_class,BaseCamera);function _class(width,height){swcHelpers.classCallCheck(this,_class);var _this;_this=swcHelpers.possibleConstructorReturn(this,swcHelpers.getPrototypeOf(_class).call(this,width,height));swcHelpers.defineProperty(swcHelpers.assertThisInitialized(_this),"type","StaticCamera");return _this}swcHelpers.createClass(_class,[{key:"preRender",value:function preRender(){var id=this.id;if(HasDirtyTransform(id)){this.isDirty=true;ClearDirtyTransform(id);return true}return false}}]);return _class}(BaseCamera);var Position=function(){"use strict";function _class(id,param,param1){var x=param===void 0?0:param,y=param1===void 0?0:param1;swcHelpers.classCallCheck(this,_class);swcHelpers.defineProperty(this,"id",void 0);swcHelpers.defineProperty(this,"_x",void 0);swcHelpers.defineProperty(this,"_y",void 0);swcHelpers.defineProperty(this,"_data",void 0);this.id=id;this._data=Transform2DComponent.data[id];this.set(x,y)}swcHelpers.createClass(_class,[{key:"set",value:function set(x,param){var y=param===void 0?x:param;this.x=x;this.y=y;return this}},{key:"x",get:function get(){return this._x},set:function set(value){this._x=value;this._data[TRANSFORM.X]=value;SetDirtyTransform(this.id)}},{key:"y",get:function get(){return this._y},set:function set(value){this._y=value;this._data[TRANSFORM.Y]=value;SetDirtyTransform(this.id)}},{key:"destroy",value:function destroy(){this._data=null}}]);return _class}();var WorldCamera=function(BaseCamera){"use strict";swcHelpers.inherits(_class,BaseCamera);function _class(width,height){swcHelpers.classCallCheck(this,_class);var _this;_this=swcHelpers.possibleConstructorReturn(this,swcHelpers.getPrototypeOf(_class).call(this,width,height));swcHelpers.defineProperty(swcHelpers.assertThisInitialized(_this),"type","WorldCamera");swcHelpers.defineProperty(swcHelpers.assertThisInitialized(_this),"position",void 0);_this.position=new Position(_this.id,0,0);return _this}swcHelpers.createClass(_class,[{key:"x",get:function get(){return this.position.x},set:function set(value){this.position.x=value}},{key:"y",get:function get(){return this.position.y},set:function set(value){this.position.y=value}},{key:"setPosition",value:function setPosition(x,y){this.position.set(x,y);return this}},{key:"preRender",value:function preRender(){var id=this.id;if(HasDirtyTransform(id)){var x=this.x;var y=this.y;var w=this.size.width;var h=this.size.height;var ox=-x+w/2;var oy=-y+h/2;var bx=ox-w/2;var by=oy-h/2;SetBounds(id,bx,by,bx+w,by+h);var data=this.matrix.data;data[12]=this.x;data[13]=this.y;ClearDirtyTransform(id);this.isDirty=true;return true}return false}}]);return _class}(BaseCamera);var color_exports={};__export(color_exports,{CloneColor:function(){return CloneColor},Color:function(){return Color},FromHSV:function(){return FromHSV},GetColorFromRGB:function(){return GetColorFromRGB},GetColorSpectrum:function(){return GetColorSpectrum},RGBAToFloat:function(){return RGBAToFloat},RGBToFloat:function(){return RGBToFloat},SetGray:function(){return SetGray},SetHSV:function(){return SetHSV}});var Color=function(){"use strict";function _class(param,param1,param2,param3){var red=param===void 0?0:param,green=param1===void 0?0:param1,blue=param2===void 0?0:param2,alpha=param3===void 0?255:param3;swcHelpers.classCallCheck(this,_class);swcHelpers.defineProperty(this,"rgba",void 0);this.rgba=new Uint8ClampedArray([red,green,blue,alpha])}swcHelpers.createClass(_class,[{key:"set",value:function set(red,green,blue,param){var alpha=param===void 0?this.alpha:param;this.rgba.set([red,green,blue,alpha]);return this}},{key:"setColor",value:function setColor(color){var rgba=this.rgba;var alpha=color>16777215?color>>>24:255;rgba.set([color>>16&255,color>>8&255,color&255,alpha]);return this}},{key:"getColor",value:function getColor(param){var includeAlpha=param===void 0?false:param;var _rgba=this.rgba,r=_rgba[0],g=_rgba[1],b=_rgba[2],a=_rgba[3];if(includeAlpha){return a<<24|r<<16|g<<8|b}else{return r<<16|g<<8|b}}},{key:"red",get:function get(){return this.rgba[0]},set:function set(value){this.rgba[0]=value}},{key:"green",get:function get(){return this.rgba[1]},set:function set(value){this.rgba[1]=value}},{key:"blue",get:function get(){return this.rgba[2]},set:function set(value){this.rgba[2]=value}},{key:"alpha",get:function get(){return this.rgba[3]},set:function set(value){this.rgba[3]=value}},{key:"r",get:function get(){return this.rgba[0]/255}},{key:"g",get:function get(){return this.rgba[1]/255}},{key:"b",get:function get(){return this.rgba[2]/255}},{key:"a",get:function get(){return this.rgba[3]/255}}]);return _class}();function CloneColor(color){return new Color(color.red,color.green,color.blue,color.alpha)}function ConvertValue(n,h,s,v){var k=(n+h*6)%6;var min=Math.min(k,4-k,1);return Math.round(255*(v-v*s*Math.max(0,min)))}function SetHSV(color,h,param,param1){var s=param===void 0?1:param,v=param1===void 0?1:param1;var r=ConvertValue(5,h,s,v);var g=ConvertValue(3,h,s,v);var b=ConvertValue(1,h,s,v);return color.set(r,g,b)}function FromHSV(h,param,param1){var s=param===void 0?1:param,v=param1===void 0?1:param1;return SetHSV(new Color(),h,s,v)}function GetColorFromRGB(red,green,blue){return red<<16|green<<8|blue}function GetColorSpectrum(param){var limit=param===void 0?1024:param;var colors=[];var range=255;var i;var r=255;var g=0;var b=0;for(i=0;i<=range;i++){colors.push(new Color(r,i,b))}g=255;for(i=range;i>=0;i--){colors.push(new Color(i,g,b))}r=0;for(i=0;i<=range;i++,g--){colors.push(new Color(r,g,i))}g=0;b=255;for(i=0;i<=range;i++,b--,r++){colors.push(new Color(r,g,b))}if(limit===1024){return colors}else{var out=[];var t=0;var inc=1024/limit;for(i=0;i<limit;i++){out.push(colors[Math.floor(t)]);t+=inc}return out}}function RGBAToFloat(red,green,blue,alpha){return alpha<<24|red<<16|green<<8|blue}function RGBToFloat(red,green,blue){return red<<16|green<<8|blue}function SetGray(color,amount){return color.set(amount,amount,amount)}var config_exports={};__export(config_exports,{BackgroundColor:function(){return BackgroundColor},Banner:function(){return Banner},BatchSize:function(){return BatchSize},Canvas:function(){return Canvas},CanvasContext:function(){return CanvasContext},DefaultOrigin:function(){return DefaultOrigin},GlobalVar:function(){return GlobalVar},MaxTextures:function(){return MaxTextures},Parent:function(){return Parent},Scenes:function(){return Scenes},Size:function(){return Size2},WebGL:function(){return WebGL},WebGLContext:function(){return WebGLContext}});var CONFIG_DEFAULTS={AUTO:"Auto",BACKGROUND_COLOR:"BackgroundColor",BANNER:"Banner",BATCH_SIZE:"BatchSize",CANVAS_CONTEXT:"CanvasContext",CANVAS:"Canvas",DEFAULT_ORIGIN:"DefaultOrigin",GLOBAL_VAR:"GlobalVar",MAX_TEXTURES:"MaxTextures",PARENT:"Parent",RENDERER:"Renderer",SCENES:"Scenes",SIZE:"Size",WEBGL_CONTEXT:"WebGLContext",WEBGL:"WebGL",WORLD_SIZE:"WorldSize",WORLD_WIDTH:"WorldWidth",WORLD_HEIGHT:"WorldHeight"};var ConfigStore=new Map();function SetBackgroundColor(color){ConfigStore.set(CONFIG_DEFAULTS.BACKGROUND_COLOR,color)}function BackgroundColor(color){return function(){SetBackgroundColor(color)}}function SetBanner(param,param1,param2,param3,param4){var title=param===void 0?"":param,version=param1===void 0?"":param1,url=param2===void 0?"":param2,color=param3===void 0?"#fff":param3,background=param4===void 0?"linear-gradient(#3e0081 40%, #00bcc3)":param4;ConfigStore.set(CONFIG_DEFAULTS.BANNER,{title:title,version:version,url:url,color:color,background:background})}function Banner(title,version,url,color,background){return function(){SetBanner(title,version,url,color,background)}}function SetBatchSize(size){ConfigStore.set(CONFIG_DEFAULTS.BATCH_SIZE,size)}function BatchSize(size){return function(){SetBatchSize(size)}}function GetBackgroundColor(){return ConfigStore.get(CONFIG_DEFAULTS.BACKGROUND_COLOR)}function GetCanvasContext(){return ConfigStore.get(CONFIG_DEFAULTS.CANVAS_CONTEXT)}function GetHeight(){return ConfigStore.get(CONFIG_DEFAULTS.SIZE).height}function GetResolution(){return ConfigStore.get(CONFIG_DEFAULTS.SIZE).resolution}function GetWidth(){return ConfigStore.get(CONFIG_DEFAULTS.SIZE).width}var CanvasRenderer=function(){"use strict";function _class(){swcHelpers.classCallCheck(this,_class);swcHelpers.defineProperty(this,"canvas",void 0);swcHelpers.defineProperty(this,"ctx",void 0);swcHelpers.defineProperty(this,"clearColor",void 0);swcHelpers.defineProperty(this,"width",void 0);swcHelpers.defineProperty(this,"height",void 0);swcHelpers.defineProperty(this,"resolution",void 0);swcHelpers.defineProperty(this,"textureIndex",void 0);swcHelpers.defineProperty(this,"flushTotal",void 0);swcHelpers.defineProperty(this,"clearBeforeRender",true);swcHelpers.defineProperty(this,"optimizeRedraw",true);swcHelpers.defineProperty(this,"autoResize",true);this.width=GetWidth();this.height=GetHeight();this.resolution=GetResolution();this.setBackgroundColor(GetBackgroundColor());var canvas=document.createElement("canvas");this.canvas=canvas;this.initContext()}swcHelpers.createClass(_class,[{key:"initContext",value:function initContext(){var ctx=this.canvas.getContext("2d",GetCanvasContext());this.ctx=ctx;this.resize(this.width,this.height,this.resolution)}},{key:"resize",value:function resize(width,height,param){var resolution=param===void 0?1:param;this.width=width*resolution;this.height=height*resolution;this.resolution=resolution;var canvas=this.canvas;canvas.width=this.width;canvas.height=this.height;if(this.autoResize){canvas.style.width=(this.width/resolution).toString()+"px";canvas.style.height=(this.height/resolution).toString()+"px"}}},{key:"setBackgroundColor",value:function setBackgroundColor(color){var r=color>>16&255;var g=color>>8&255;var b=color&255;var a=color>16777215?color>>>24:255;this.clearColor="rgba(".concat(r,", ").concat(g,", ").concat(b,", ").concat(a,")");return this}},{key:"reset",value:function reset(){var ctx=this.ctx;ctx.globalAlpha=1;ctx.globalCompositeOperation="source-over";ctx.setTransform(1,0,0,1,0,0)}},{key:"begin",value:function begin(willRedraw){}},{key:"end",value:function end(){}},{key:"render",value:function render(){}},{key:"destroy",value:function destroy(){}}]);return _class}();function SetRenderer(renderer){ConfigStore.set(CONFIG_DEFAULTS.RENDERER,renderer)}function Canvas(){return function(){SetRenderer(CanvasRenderer)}}function SetCanvasContext(contextAttributes){ConfigStore.set(CONFIG_DEFAULTS.CANVAS_CONTEXT,contextAttributes)}function CanvasContext(contextAttributes){return function(){SetCanvasContext(contextAttributes)}}function SetDefaultOrigin(param,param1){var x=param===void 0?0.5:param,y=param1===void 0?x:param1;ConfigStore.set(CONFIG_DEFAULTS.DEFAULT_ORIGIN,{x:x,y:y})}function DefaultOrigin(param,param1){var x=param===void 0?0.5:param,y=param1===void 0?x:param1;return function(){SetDefaultOrigin(x,y)}}function SetGlobalVar(name){ConfigStore.set(CONFIG_DEFAULTS.GLOBAL_VAR,name)}functi