mage-engine 3.23.12 → 3.23.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/mage.js +1089 -360
  2. package/package.json +2 -2
package/dist/mage.js CHANGED
@@ -53921,6 +53921,7 @@ if ( typeof window !== 'undefined' ) {
53921
53921
  }var three_module=/*#__PURE__*/Object.freeze({__proto__:null,ACESFilmicToneMapping:ACESFilmicToneMapping,AddEquation:AddEquation,AddOperation:AddOperation,AdditiveAnimationBlendMode:AdditiveAnimationBlendMode,AdditiveBlending:AdditiveBlending,AlphaFormat:AlphaFormat,AlwaysDepth:AlwaysDepth,AlwaysStencilFunc:AlwaysStencilFunc,AmbientLight:AmbientLight$1,AmbientLightProbe:AmbientLightProbe,AnimationClip:AnimationClip,AnimationLoader:AnimationLoader,AnimationMixer:AnimationMixer,AnimationObjectGroup:AnimationObjectGroup,AnimationUtils:AnimationUtils,ArcCurve:ArcCurve,ArrayCamera:ArrayCamera,ArrowHelper:ArrowHelper,Audio:Audio$2,AudioAnalyser:AudioAnalyser,AudioContext:AudioContext,AudioListener:AudioListener,AudioLoader:AudioLoader,AxesHelper:AxesHelper$1,AxisHelper:AxisHelper,BackSide:BackSide,BasicDepthPacking:BasicDepthPacking,BasicShadowMap:BasicShadowMap,BinaryTextureLoader:BinaryTextureLoader,Bone:Bone,BooleanKeyframeTrack:BooleanKeyframeTrack,BoundingBoxHelper:BoundingBoxHelper,Box2:Box2,Box3:Box3,Box3Helper:Box3Helper,BoxBufferGeometry:BoxGeometry,BoxGeometry:BoxGeometry,BoxHelper:BoxHelper,BufferAttribute:BufferAttribute,BufferGeometry:BufferGeometry,BufferGeometryLoader:BufferGeometryLoader,ByteType:ByteType,Cache:Cache,Camera:Camera$1,CameraHelper:CameraHelper,CanvasRenderer:CanvasRenderer,CanvasTexture:CanvasTexture,CatmullRomCurve3:CatmullRomCurve3,CineonToneMapping:CineonToneMapping,CircleBufferGeometry:CircleGeometry,CircleGeometry:CircleGeometry,ClampToEdgeWrapping:ClampToEdgeWrapping,Clock:Clock,Color:Color$1,ColorKeyframeTrack:ColorKeyframeTrack,CompressedTexture:CompressedTexture,CompressedTextureLoader:CompressedTextureLoader,ConeBufferGeometry:ConeGeometry,ConeGeometry:ConeGeometry,CubeCamera:CubeCamera,CubeReflectionMapping:CubeReflectionMapping,CubeRefractionMapping:CubeRefractionMapping,CubeTexture:CubeTexture,CubeTextureLoader:CubeTextureLoader,CubeUVReflectionMapping:CubeUVReflectionMapping,CubeUVRefractionMapping:CubeUVRefractionMapping,CubicBezierCurve:CubicBezierCurve,CubicBezierCurve3:CubicBezierCurve3,CubicInterpolant:CubicInterpolant,CullFaceBack:CullFaceBack,CullFaceFront:CullFaceFront,CullFaceFrontBack:CullFaceFrontBack,CullFaceNone:CullFaceNone,Curve:Curve,CurvePath:CurvePath,CustomBlending:CustomBlending,CustomToneMapping:CustomToneMapping,CylinderBufferGeometry:CylinderGeometry,CylinderGeometry:CylinderGeometry,Cylindrical:Cylindrical,DataTexture:DataTexture,DataTexture2DArray:DataTexture2DArray,DataTexture3D:DataTexture3D,DataTextureLoader:DataTextureLoader,DataUtils:DataUtils,DecrementStencilOp:DecrementStencilOp,DecrementWrapStencilOp:DecrementWrapStencilOp,DefaultLoadingManager:DefaultLoadingManager,DepthFormat:DepthFormat,DepthStencilFormat:DepthStencilFormat,DepthTexture:DepthTexture,DirectionalLight:DirectionalLight,DirectionalLightHelper:DirectionalLightHelper,DiscreteInterpolant:DiscreteInterpolant,DodecahedronBufferGeometry:DodecahedronGeometry,DodecahedronGeometry:DodecahedronGeometry,DoubleSide:DoubleSide,DstAlphaFactor:DstAlphaFactor,DstColorFactor:DstColorFactor,DynamicBufferAttribute:DynamicBufferAttribute,DynamicCopyUsage:DynamicCopyUsage,DynamicDrawUsage:DynamicDrawUsage,DynamicReadUsage:DynamicReadUsage,EdgesGeometry:EdgesGeometry,EdgesHelper:EdgesHelper,EllipseCurve:EllipseCurve,EqualDepth:EqualDepth,EqualStencilFunc:EqualStencilFunc,EquirectangularReflectionMapping:EquirectangularReflectionMapping,EquirectangularRefractionMapping:EquirectangularRefractionMapping,Euler:Euler,EventDispatcher:EventDispatcher,ExtrudeBufferGeometry:ExtrudeGeometry,ExtrudeGeometry:ExtrudeGeometry,FaceColors:FaceColors,FileLoader:FileLoader,FlatShading:FlatShading,Float16BufferAttribute:Float16BufferAttribute,Float32Attribute:Float32Attribute,Float32BufferAttribute:Float32BufferAttribute,Float64Attribute:Float64Attribute,Float64BufferAttribute:Float64BufferAttribute,FloatType:FloatType$1,Fog:Fog,FogExp2:FogExp2,Font:Font,FontLoader:FontLoader,FrontSide:FrontSide,Frustum:Frustum$1,GLBufferAttribute:GLBufferAttribute,GLSL1:GLSL1,GLSL3:GLSL3,GammaEncoding:GammaEncoding,GreaterDepth:GreaterDepth,GreaterEqualDepth:GreaterEqualDepth,GreaterEqualStencilFunc:GreaterEqualStencilFunc,GreaterStencilFunc:GreaterStencilFunc,GridHelper:GridHelper,Group:Group,HalfFloatType:HalfFloatType,HemisphereLight:HemisphereLight$1,HemisphereLightHelper:HemisphereLightHelper,HemisphereLightProbe:HemisphereLightProbe,IcosahedronBufferGeometry:IcosahedronGeometry,IcosahedronGeometry:IcosahedronGeometry,ImageBitmapLoader:ImageBitmapLoader,ImageLoader:ImageLoader,ImageUtils:ImageUtils,ImmediateRenderObject:ImmediateRenderObject,IncrementStencilOp:IncrementStencilOp,IncrementWrapStencilOp:IncrementWrapStencilOp,InstancedBufferAttribute:InstancedBufferAttribute,InstancedBufferGeometry:InstancedBufferGeometry,InstancedInterleavedBuffer:InstancedInterleavedBuffer,InstancedMesh:InstancedMesh,Int16Attribute:Int16Attribute,Int16BufferAttribute:Int16BufferAttribute,Int32Attribute:Int32Attribute,Int32BufferAttribute:Int32BufferAttribute,Int8Attribute:Int8Attribute,Int8BufferAttribute:Int8BufferAttribute,IntType:IntType,InterleavedBuffer:InterleavedBuffer,InterleavedBufferAttribute:InterleavedBufferAttribute,Interpolant:Interpolant,InterpolateDiscrete:InterpolateDiscrete,InterpolateLinear:InterpolateLinear,InterpolateSmooth:InterpolateSmooth,InvertStencilOp:InvertStencilOp,JSONLoader:JSONLoader,KeepStencilOp:KeepStencilOp,KeyframeTrack:KeyframeTrack,LOD:LOD,LatheBufferGeometry:LatheGeometry,LatheGeometry:LatheGeometry,Layers:Layers,LensFlare:LensFlare,LessDepth:LessDepth,LessEqualDepth:LessEqualDepth,LessEqualStencilFunc:LessEqualStencilFunc,LessStencilFunc:LessStencilFunc,Light:Light$2,LightProbe:LightProbe,Line:Line$1,Line3:Line3,LineBasicMaterial:LineBasicMaterial,LineCurve:LineCurve,LineCurve3:LineCurve3,LineDashedMaterial:LineDashedMaterial,LineLoop:LineLoop,LinePieces:LinePieces,LineSegments:LineSegments,LineStrip:LineStrip,LinearEncoding:LinearEncoding,LinearFilter:LinearFilter,LinearInterpolant:LinearInterpolant,LinearMipMapLinearFilter:LinearMipMapLinearFilter,LinearMipMapNearestFilter:LinearMipMapNearestFilter,LinearMipmapLinearFilter:LinearMipmapLinearFilter,LinearMipmapNearestFilter:LinearMipmapNearestFilter,LinearToneMapping:LinearToneMapping,Loader:Loader,LoaderUtils:LoaderUtils,LoadingManager:LoadingManager,LogLuvEncoding:LogLuvEncoding,LoopOnce:LoopOnce,LoopPingPong:LoopPingPong,LoopRepeat:LoopRepeat,LuminanceAlphaFormat:LuminanceAlphaFormat,LuminanceFormat:LuminanceFormat,MOUSE:MOUSE,Material:Material,MaterialLoader:MaterialLoader,Math:MathUtils,MathUtils:MathUtils,Matrix3:Matrix3,Matrix4:Matrix4,MaxEquation:MaxEquation,Mesh:Mesh,MeshBasicMaterial:MeshBasicMaterial,MeshDepthMaterial:MeshDepthMaterial,MeshDistanceMaterial:MeshDistanceMaterial,MeshFaceMaterial:MeshFaceMaterial,MeshLambertMaterial:MeshLambertMaterial,MeshMatcapMaterial:MeshMatcapMaterial,MeshNormalMaterial:MeshNormalMaterial,MeshPhongMaterial:MeshPhongMaterial,MeshPhysicalMaterial:MeshPhysicalMaterial,MeshStandardMaterial:MeshStandardMaterial,MeshToonMaterial:MeshToonMaterial,MinEquation:MinEquation,MirroredRepeatWrapping:MirroredRepeatWrapping,MixOperation:MixOperation,MultiMaterial:MultiMaterial,MultiplyBlending:MultiplyBlending,MultiplyOperation:MultiplyOperation,NearestFilter:NearestFilter,NearestMipMapLinearFilter:NearestMipMapLinearFilter,NearestMipMapNearestFilter:NearestMipMapNearestFilter,NearestMipmapLinearFilter:NearestMipmapLinearFilter,NearestMipmapNearestFilter:NearestMipmapNearestFilter,NeverDepth:NeverDepth,NeverStencilFunc:NeverStencilFunc,NoBlending:NoBlending,NoColors:NoColors,NoToneMapping:NoToneMapping,NormalAnimationBlendMode:NormalAnimationBlendMode,NormalBlending:NormalBlending,NotEqualDepth:NotEqualDepth,NotEqualStencilFunc:NotEqualStencilFunc,NumberKeyframeTrack:NumberKeyframeTrack,Object3D:Object3D,ObjectLoader:ObjectLoader,ObjectSpaceNormalMap:ObjectSpaceNormalMap,OctahedronBufferGeometry:OctahedronGeometry,OctahedronGeometry:OctahedronGeometry,OneFactor:OneFactor,OneMinusDstAlphaFactor:OneMinusDstAlphaFactor,OneMinusDstColorFactor:OneMinusDstColorFactor,OneMinusSrcAlphaFactor:OneMinusSrcAlphaFactor,OneMinusSrcColorFactor:OneMinusSrcColorFactor,OrthographicCamera:OrthographicCamera,PCFShadowMap:PCFShadowMap,PCFSoftShadowMap:PCFSoftShadowMap,PMREMGenerator:PMREMGenerator,ParametricBufferGeometry:ParametricGeometry,ParametricGeometry:ParametricGeometry,Particle:Particle,ParticleBasicMaterial:ParticleBasicMaterial,ParticleSystem:ParticleSystem,ParticleSystemMaterial:ParticleSystemMaterial,Path:Path,PerspectiveCamera:PerspectiveCamera,Plane:Plane$1,PlaneBufferGeometry:PlaneGeometry,PlaneGeometry:PlaneGeometry,PlaneHelper:PlaneHelper,PointCloud:PointCloud,PointCloudMaterial:PointCloudMaterial,PointLight:PointLight$1,PointLightHelper:PointLightHelper,Points:Points,PointsMaterial:PointsMaterial,PolarGridHelper:PolarGridHelper,PolyhedronBufferGeometry:PolyhedronGeometry,PolyhedronGeometry:PolyhedronGeometry,PositionalAudio:PositionalAudio,PropertyBinding:PropertyBinding,PropertyMixer:PropertyMixer,QuadraticBezierCurve:QuadraticBezierCurve,QuadraticBezierCurve3:QuadraticBezierCurve3,Quaternion:Quaternion,QuaternionKeyframeTrack:QuaternionKeyframeTrack,QuaternionLinearInterpolant:QuaternionLinearInterpolant,REVISION:REVISION,RGBADepthPacking:RGBADepthPacking,RGBAFormat:RGBAFormat,RGBAIntegerFormat:RGBAIntegerFormat,RGBA_ASTC_10x10_Format:RGBA_ASTC_10x10_Format,RGBA_ASTC_10x5_Format:RGBA_ASTC_10x5_Format,RGBA_ASTC_10x6_Format:RGBA_ASTC_10x6_Format,RGBA_ASTC_10x8_Format:RGBA_ASTC_10x8_Format,RGBA_ASTC_12x10_Format:RGBA_ASTC_12x10_Format,RGBA_ASTC_12x12_Format:RGBA_ASTC_12x12_Format,RGBA_ASTC_4x4_Format:RGBA_ASTC_4x4_Format,RGBA_ASTC_5x4_Format:RGBA_ASTC_5x4_Format,RGBA_ASTC_5x5_Format:RGBA_ASTC_5x5_Format,RGBA_ASTC_6x5_Format:RGBA_ASTC_6x5_Format,RGBA_ASTC_6x6_Format:RGBA_ASTC_6x6_Format,RGBA_ASTC_8x5_Format:RGBA_ASTC_8x5_Format,RGBA_ASTC_8x6_Format:RGBA_ASTC_8x6_Format,RGBA_ASTC_8x8_Format:RGBA_ASTC_8x8_Format,RGBA_BPTC_Format:RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:RGBA_ETC2_EAC_Format,RGBA_PVRTC_2BPPV1_Format:RGBA_PVRTC_2BPPV1_Format,RGBA_PVRTC_4BPPV1_Format:RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:RGBA_S3TC_DXT1_Format,RGBA_S3TC_DXT3_Format:RGBA_S3TC_DXT3_Format,RGBA_S3TC_DXT5_Format:RGBA_S3TC_DXT5_Format,RGBDEncoding:RGBDEncoding,RGBEEncoding:RGBEEncoding,RGBEFormat:RGBEFormat,RGBFormat:RGBFormat,RGBIntegerFormat:RGBIntegerFormat,RGBM16Encoding:RGBM16Encoding,RGBM7Encoding:RGBM7Encoding,RGB_ETC1_Format:RGB_ETC1_Format,RGB_ETC2_Format:RGB_ETC2_Format,RGB_PVRTC_2BPPV1_Format:RGB_PVRTC_2BPPV1_Format,RGB_PVRTC_4BPPV1_Format:RGB_PVRTC_4BPPV1_Format,RGB_S3TC_DXT1_Format:RGB_S3TC_DXT1_Format,RGFormat:RGFormat,RGIntegerFormat:RGIntegerFormat,RawShaderMaterial:RawShaderMaterial,Ray:Ray,Raycaster:Raycaster,RectAreaLight:RectAreaLight,RedFormat:RedFormat,RedIntegerFormat:RedIntegerFormat,ReinhardToneMapping:ReinhardToneMapping,RepeatWrapping:RepeatWrapping$1,ReplaceStencilOp:ReplaceStencilOp,ReverseSubtractEquation:ReverseSubtractEquation,RingBufferGeometry:RingGeometry,RingGeometry:RingGeometry,SRGB8_ALPHA8_ASTC_10x10_Format:SRGB8_ALPHA8_ASTC_10x10_Format,SRGB8_ALPHA8_ASTC_10x5_Format:SRGB8_ALPHA8_ASTC_10x5_Format,SRGB8_ALPHA8_ASTC_10x6_Format:SRGB8_ALPHA8_ASTC_10x6_Format,SRGB8_ALPHA8_ASTC_10x8_Format:SRGB8_ALPHA8_ASTC_10x8_Format,SRGB8_ALPHA8_ASTC_12x10_Format:SRGB8_ALPHA8_ASTC_12x10_Format,SRGB8_ALPHA8_ASTC_12x12_Format:SRGB8_ALPHA8_ASTC_12x12_Format,SRGB8_ALPHA8_ASTC_4x4_Format:SRGB8_ALPHA8_ASTC_4x4_Format,SRGB8_ALPHA8_ASTC_5x4_Format:SRGB8_ALPHA8_ASTC_5x4_Format,SRGB8_ALPHA8_ASTC_5x5_Format:SRGB8_ALPHA8_ASTC_5x5_Format,SRGB8_ALPHA8_ASTC_6x5_Format:SRGB8_ALPHA8_ASTC_6x5_Format,SRGB8_ALPHA8_ASTC_6x6_Format:SRGB8_ALPHA8_ASTC_6x6_Format,SRGB8_ALPHA8_ASTC_8x5_Format:SRGB8_ALPHA8_ASTC_8x5_Format,SRGB8_ALPHA8_ASTC_8x6_Format:SRGB8_ALPHA8_ASTC_8x6_Format,SRGB8_ALPHA8_ASTC_8x8_Format:SRGB8_ALPHA8_ASTC_8x8_Format,Scene:Scene$2,SceneUtils:SceneUtils,ShaderChunk:ShaderChunk,ShaderLib:ShaderLib,ShaderMaterial:ShaderMaterial,ShadowMaterial:ShadowMaterial,Shape:Shape,ShapeBufferGeometry:ShapeGeometry,ShapeGeometry:ShapeGeometry,ShapePath:ShapePath,ShapeUtils:ShapeUtils,ShortType:ShortType,Skeleton:Skeleton,SkeletonHelper:SkeletonHelper,SkinnedMesh:SkinnedMesh,SmoothShading:SmoothShading,Sphere:Sphere$1,SphereBufferGeometry:SphereGeometry,SphereGeometry:SphereGeometry,Spherical:Spherical,SphericalHarmonics3:SphericalHarmonics3,SplineCurve:SplineCurve,SpotLight:SpotLight$1,SpotLightHelper:SpotLightHelper,Sprite:Sprite$1,SpriteMaterial:SpriteMaterial,SrcAlphaFactor:SrcAlphaFactor,SrcAlphaSaturateFactor:SrcAlphaSaturateFactor,SrcColorFactor:SrcColorFactor,StaticCopyUsage:StaticCopyUsage,StaticDrawUsage:StaticDrawUsage,StaticReadUsage:StaticReadUsage,StereoCamera:StereoCamera,StreamCopyUsage:StreamCopyUsage,StreamDrawUsage:StreamDrawUsage,StreamReadUsage:StreamReadUsage,StringKeyframeTrack:StringKeyframeTrack,SubtractEquation:SubtractEquation,SubtractiveBlending:SubtractiveBlending,TOUCH:TOUCH,TangentSpaceNormalMap:TangentSpaceNormalMap,TetrahedronBufferGeometry:TetrahedronGeometry,TetrahedronGeometry:TetrahedronGeometry,TextBufferGeometry:TextGeometry,TextGeometry:TextGeometry,Texture:Texture,TextureLoader:TextureLoader,TorusBufferGeometry:TorusGeometry,TorusGeometry:TorusGeometry,TorusKnotBufferGeometry:TorusKnotGeometry,TorusKnotGeometry:TorusKnotGeometry,Triangle:Triangle,TriangleFanDrawMode:TriangleFanDrawMode,TriangleStripDrawMode:TriangleStripDrawMode,TrianglesDrawMode:TrianglesDrawMode,TubeBufferGeometry:TubeGeometry,TubeGeometry:TubeGeometry,UVMapping:UVMapping,Uint16Attribute:Uint16Attribute,Uint16BufferAttribute:Uint16BufferAttribute,Uint32Attribute:Uint32Attribute,Uint32BufferAttribute:Uint32BufferAttribute,Uint8Attribute:Uint8Attribute,Uint8BufferAttribute:Uint8BufferAttribute,Uint8ClampedAttribute:Uint8ClampedAttribute,Uint8ClampedBufferAttribute:Uint8ClampedBufferAttribute,Uniform:Uniform,UniformsLib:UniformsLib,UniformsUtils:UniformsUtils,UnsignedByteType:UnsignedByteType,UnsignedInt248Type:UnsignedInt248Type,UnsignedIntType:UnsignedIntType,UnsignedShort4444Type:UnsignedShort4444Type,UnsignedShort5551Type:UnsignedShort5551Type,UnsignedShort565Type:UnsignedShort565Type,UnsignedShortType:UnsignedShortType,VSMShadowMap:VSMShadowMap,Vector2:Vector2,Vector3:Vector3$1,Vector4:Vector4,VectorKeyframeTrack:VectorKeyframeTrack,Vertex:Vertex,VertexColors:VertexColors,VideoTexture:VideoTexture,WebGL1Renderer:WebGL1Renderer,WebGLCubeRenderTarget:WebGLCubeRenderTarget,WebGLMultisampleRenderTarget:WebGLMultisampleRenderTarget,WebGLRenderTarget:WebGLRenderTarget,WebGLRenderTargetCube:WebGLRenderTargetCube,WebGLRenderer:WebGLRenderer,WebGLUtils:WebGLUtils,WireframeGeometry:WireframeGeometry,WireframeHelper:WireframeHelper,WrapAroundEnding:WrapAroundEnding,XHRLoader:XHRLoader,ZeroCurvatureEnding:ZeroCurvatureEnding,ZeroFactor:ZeroFactor,ZeroSlopeEnding:ZeroSlopeEnding,ZeroStencilOp:ZeroStencilOp,sRGBEncoding:sRGBEncoding});var PREFIX = "[Mage]";
53922
53922
  var DEPRECATED = "[DEPRECATED]";
53923
53923
  var DEPRECATIONS = {
53924
+ PARTICLES_OLD: "".concat(PREFIX, " ").concat(DEPRECATED, " This Particle System is outdated and will be removed in the next major release"),
53924
53925
  PARTICLES_ADD_PARTICLE_EMITTER: "".concat(PREFIX, " ").concat(DEPRECATED, " Particles.addParticleEmitter is deprecated, use Particles.add instead. Will be removed in the next major release"),
53925
53926
  MODELS_GETMODEL: "".concat(PREFIX, " ").concat(DEPRECATED, " Models.getModel is deprecated, use Models.get instead. Will be removed in next major release"),
53926
53927
  SCRIPTS_CREATE: "".concat(PREFIX, " ").concat(DEPRECATED, " Scripts.create is deprecated, use Scripts.register instead. Will be removed in next major release."),
@@ -53944,6 +53945,8 @@ var ANIMATION_HANDLER_NOT_FOUND = "".concat(PREFIX, " AnimationHander hasn't bee
53944
53945
  var ELEMENT_NOT_SET$1 = "".concat(PREFIX, " Body hasn't been defined yet.");
53945
53946
  var ELEMENT_SET_COLOR_MISSING_COLOR = "".concat(PREFIX, " Can't set color for this element, missing color");
53946
53947
  var ELEMENT_MATERIAL_NO_SUPPORT_FOR_TEXTURE = "".concat(PREFIX, " This element's material does not support texture: ");
53948
+ var ELEMENT_SET_REFLECTIVITY_MISSING_VALUE = "".concat(PREFIX, " Can't set reflectivity for this element, missing value");
53949
+ var ELEMENT_SET_REFRACTION_RATIO_MISSING_VALUE = "".concat(PREFIX, " Can't set refraction ratio for this element, missing value");
53947
53950
  var ENTITY_NOT_SET = "".concat(PREFIX, " This entity does not have a body.");
53948
53951
  var ENTITY_TYPE_NOT_ALLOWED = "".concat(PREFIX, " The desired Entity type is not allowed.");
53949
53952
  var ENTITY_CANT_ADD_NOT_ENTITY = "".concat(PREFIX, " Entity.add requires an Entity.");
@@ -54039,73 +54042,77 @@ var LABEL_DOMELEMENT_MISSING = "".concat(PREFIX, " Could not create Label, domEl
54039
54042
 
54040
54043
  return BaseScript;
54041
54044
  }();/**!
54042
- * hotkeys-js v3.9.4
54045
+ * hotkeys-js v3.13.7
54043
54046
  * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies.
54044
54047
  *
54045
- * Copyright (c) 2022 kenny wong <wowohoo@qq.com>
54046
- * http://jaywcjlove.github.io/hotkeys
54048
+ * Copyright (c) 2024 kenny wong <wowohoo@qq.com>
54049
+ * https://github.com/jaywcjlove/hotkeys-js.git
54050
+ *
54051
+ * @website: https://jaywcjlove.github.io/hotkeys-js
54052
+
54047
54053
  * Licensed under the MIT license
54048
54054
  */
54049
54055
 
54050
- var isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false; // 绑定事件
54056
+ const isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false;
54051
54057
 
54058
+ // 绑定事件
54052
54059
  function addEvent(object, event, method, useCapture) {
54053
54060
  if (object.addEventListener) {
54054
54061
  object.addEventListener(event, method, useCapture);
54055
54062
  } else if (object.attachEvent) {
54056
- object.attachEvent("on".concat(event), function () {
54057
- method(window.event);
54058
- });
54063
+ object.attachEvent("on".concat(event), method);
54059
54064
  }
54060
- } // 修饰键转换成对应的键码
54061
-
54062
-
54063
- function getMods(modifier, key) {
54064
- var mods = key.slice(0, key.length - 1);
54065
-
54066
- for (var i = 0; i < mods.length; i++) {
54067
- mods[i] = modifier[mods[i].toLowerCase()];
54065
+ }
54066
+ function removeEvent(object, event, method, useCapture) {
54067
+ if (object.removeEventListener) {
54068
+ object.removeEventListener(event, method, useCapture);
54069
+ } else if (object.detachEvent) {
54070
+ object.detachEvent("on".concat(event), method);
54068
54071
  }
54072
+ }
54069
54073
 
54074
+ // 修饰键转换成对应的键码
54075
+ function getMods(modifier, key) {
54076
+ const mods = key.slice(0, key.length - 1);
54077
+ for (let i = 0; i < mods.length; i++) mods[i] = modifier[mods[i].toLowerCase()];
54070
54078
  return mods;
54071
- } // 处理传的key字符串转换成数组
54072
-
54079
+ }
54073
54080
 
54081
+ // 处理传的key字符串转换成数组
54074
54082
  function getKeys(key) {
54075
54083
  if (typeof key !== 'string') key = '';
54076
54084
  key = key.replace(/\s/g, ''); // 匹配任何空白字符,包括空格、制表符、换页符等等
54085
+ const keys = key.split(','); // 同时设置多个快捷键,以','分割
54086
+ let index = keys.lastIndexOf('');
54077
54087
 
54078
- var keys = key.split(','); // 同时设置多个快捷键,以','分割
54079
-
54080
- var index = keys.lastIndexOf(''); // 快捷键可能包含',',需特殊处理
54081
-
54088
+ // 快捷键可能包含',',需特殊处理
54082
54089
  for (; index >= 0;) {
54083
54090
  keys[index - 1] += ',';
54084
54091
  keys.splice(index, 1);
54085
54092
  index = keys.lastIndexOf('');
54086
54093
  }
54087
-
54088
54094
  return keys;
54089
- } // 比较修饰键的数组
54090
-
54095
+ }
54091
54096
 
54097
+ // 比较修饰键的数组
54092
54098
  function compareArray(a1, a2) {
54093
- var arr1 = a1.length >= a2.length ? a1 : a2;
54094
- var arr2 = a1.length >= a2.length ? a2 : a1;
54095
- var isIndex = true;
54096
-
54097
- for (var i = 0; i < arr1.length; i++) {
54099
+ const arr1 = a1.length >= a2.length ? a1 : a2;
54100
+ const arr2 = a1.length >= a2.length ? a2 : a1;
54101
+ let isIndex = true;
54102
+ for (let i = 0; i < arr1.length; i++) {
54098
54103
  if (arr2.indexOf(arr1[i]) === -1) isIndex = false;
54099
54104
  }
54100
-
54101
54105
  return isIndex;
54102
54106
  }
54103
54107
 
54104
- var _keyMap = {
54108
+ // Special Keys
54109
+ const _keyMap = {
54105
54110
  backspace: 8,
54111
+ '⌫': 8,
54106
54112
  tab: 9,
54107
54113
  clear: 12,
54108
54114
  enter: 13,
54115
+ '↩': 13,
54109
54116
  return: 13,
54110
54117
  esc: 27,
54111
54118
  escape: 27,
@@ -54151,9 +54158,10 @@ var _keyMap = {
54151
54158
  '[': 219,
54152
54159
  ']': 221,
54153
54160
  '\\': 220
54154
- }; // Modifier Keys
54161
+ };
54155
54162
 
54156
- var _modifier = {
54163
+ // Modifier Keys
54164
+ const _modifier = {
54157
54165
  // shiftKey
54158
54166
  '⇧': 16,
54159
54167
  shift: 16,
@@ -54170,7 +54178,7 @@ var _modifier = {
54170
54178
  cmd: 91,
54171
54179
  command: 91
54172
54180
  };
54173
- var modifierMap = {
54181
+ const modifierMap = {
54174
54182
  16: 'shiftKey',
54175
54183
  18: 'altKey',
54176
54184
  17: 'ctrlKey',
@@ -54180,127 +54188,153 @@ var modifierMap = {
54180
54188
  altKey: 18,
54181
54189
  metaKey: 91
54182
54190
  };
54183
- var _mods = {
54191
+ const _mods = {
54184
54192
  16: false,
54185
54193
  18: false,
54186
54194
  17: false,
54187
54195
  91: false
54188
54196
  };
54189
- var _handlers = {}; // F1~F12 special key
54197
+ const _handlers = {};
54190
54198
 
54191
- for (var k$1 = 1; k$1 < 20; k$1++) {
54192
- _keyMap["f".concat(k$1)] = 111 + k$1;
54199
+ // F1~F12 special key
54200
+ for (let k = 1; k < 20; k++) {
54201
+ _keyMap["f".concat(k)] = 111 + k;
54193
54202
  }
54194
54203
 
54195
- var _downKeys = []; // 记录摁下的绑定键
54196
-
54197
- var winListendFocus = false; // window是否已经监听了focus事件
54198
-
54199
- var _scope = 'all'; // 默认热键范围
54204
+ let _downKeys = []; // 记录摁下的绑定键
54205
+ let winListendFocus = null; // window是否已经监听了focus事件
54206
+ let _scope = 'all'; // 默认热键范围
54207
+ const elementEventMap = new Map(); // 已绑定事件的节点记录
54200
54208
 
54201
- var elementHasBindEvent = []; // 已绑定事件的节点记录
54202
54209
  // 返回键码
54210
+ const code = x => _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);
54211
+ const getKey = x => Object.keys(_keyMap).find(k => _keyMap[k] === x);
54212
+ const getModifier = x => Object.keys(_modifier).find(k => _modifier[k] === x);
54203
54213
 
54204
- var code = function code(x) {
54205
- return _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);
54206
- }; // 设置获取当前范围(默认为'所有')
54207
-
54208
-
54214
+ // 设置获取当前范围(默认为'所有')
54209
54215
  function setScope(scope) {
54210
54216
  _scope = scope || 'all';
54211
- } // 获取当前范围
54212
-
54213
-
54217
+ }
54218
+ // 获取当前范围
54214
54219
  function getScope() {
54215
54220
  return _scope || 'all';
54216
- } // 获取摁下绑定键的键值
54217
-
54218
-
54221
+ }
54222
+ // 获取摁下绑定键的键值
54219
54223
  function getPressedKeyCodes() {
54220
54224
  return _downKeys.slice(0);
54221
- } // 表单控件控件判断 返回 Boolean
54222
- // hotkey is effective only when filter return true
54223
-
54225
+ }
54226
+ function getPressedKeyString() {
54227
+ return _downKeys.map(c => getKey(c) || getModifier(c) || String.fromCharCode(c));
54228
+ }
54229
+ function getAllKeyCodes() {
54230
+ const result = [];
54231
+ Object.keys(_handlers).forEach(k => {
54232
+ _handlers[k].forEach(_ref => {
54233
+ let {
54234
+ key,
54235
+ scope,
54236
+ mods,
54237
+ shortcut
54238
+ } = _ref;
54239
+ result.push({
54240
+ scope,
54241
+ shortcut,
54242
+ mods,
54243
+ keys: key.split('+').map(v => code(v))
54244
+ });
54245
+ });
54246
+ });
54247
+ return result;
54248
+ }
54224
54249
 
54250
+ // 表单控件控件判断 返回 Boolean
54251
+ // hotkey is effective only when filter return true
54225
54252
  function filter$1(event) {
54226
- var target = event.target || event.srcElement;
54227
- var tagName = target.tagName;
54228
- var flag = true; // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>
54229
-
54230
- if (target.isContentEditable || (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {
54253
+ const target = event.target || event.srcElement;
54254
+ const {
54255
+ tagName
54256
+ } = target;
54257
+ let flag = true;
54258
+ const isInput = tagName === 'INPUT' && !['checkbox', 'radio', 'range', 'button', 'file', 'reset', 'submit', 'color'].includes(target.type);
54259
+ // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>
54260
+ if (target.isContentEditable || (isInput || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {
54231
54261
  flag = false;
54232
54262
  }
54233
-
54234
54263
  return flag;
54235
- } // 判断摁下的键是否为某个键,返回true或者false
54236
-
54264
+ }
54237
54265
 
54266
+ // 判断摁下的键是否为某个键,返回true或者false
54238
54267
  function isPressed(keyCode) {
54239
54268
  if (typeof keyCode === 'string') {
54240
54269
  keyCode = code(keyCode); // 转换成键码
54241
54270
  }
54242
-
54243
54271
  return _downKeys.indexOf(keyCode) !== -1;
54244
- } // 循环删除handlers中的所有 scope(范围)
54245
-
54272
+ }
54246
54273
 
54274
+ // 循环删除handlers中的所有 scope(范围)
54247
54275
  function deleteScope(scope, newScope) {
54248
- var handlers;
54249
- var i; // 没有指定scope,获取scope
54276
+ let handlers;
54277
+ let i;
54250
54278
 
54279
+ // 没有指定scope,获取scope
54251
54280
  if (!scope) scope = getScope();
54252
-
54253
- for (var key in _handlers) {
54281
+ for (const key in _handlers) {
54254
54282
  if (Object.prototype.hasOwnProperty.call(_handlers, key)) {
54255
54283
  handlers = _handlers[key];
54256
-
54257
54284
  for (i = 0; i < handlers.length;) {
54258
- if (handlers[i].scope === scope) handlers.splice(i, 1);else i++;
54285
+ if (handlers[i].scope === scope) {
54286
+ const deleteItems = handlers.splice(i, 1);
54287
+ deleteItems.forEach(_ref2 => {
54288
+ let {
54289
+ element
54290
+ } = _ref2;
54291
+ return removeKeyEvent(element);
54292
+ });
54293
+ } else {
54294
+ i++;
54295
+ }
54259
54296
  }
54260
54297
  }
54261
- } // 如果scope被删除,将scope重置为all
54262
-
54298
+ }
54263
54299
 
54300
+ // 如果scope被删除,将scope重置为all
54264
54301
  if (getScope() === scope) setScope(newScope || 'all');
54265
- } // 清除修饰键
54266
-
54302
+ }
54267
54303
 
54304
+ // 清除修饰键
54268
54305
  function clearModifier(event) {
54269
- var key = event.keyCode || event.which || event.charCode;
54270
-
54271
- var i = _downKeys.indexOf(key); // 从列表中清除按压过的键
54272
-
54306
+ let key = event.keyCode || event.which || event.charCode;
54307
+ const i = _downKeys.indexOf(key);
54273
54308
 
54309
+ // 从列表中清除按压过的键
54274
54310
  if (i >= 0) {
54275
54311
  _downKeys.splice(i, 1);
54276
- } // 特殊处理 cmmand 键,在 cmmand 组合快捷键 keyup 只执行一次的问题
54277
-
54278
-
54312
+ }
54313
+ // 特殊处理 cmmand 键,在 cmmand 组合快捷键 keyup 只执行一次的问题
54279
54314
  if (event.key && event.key.toLowerCase() === 'meta') {
54280
54315
  _downKeys.splice(0, _downKeys.length);
54281
- } // 修饰键 shiftKey altKey ctrlKey (command||metaKey) 清除
54282
-
54316
+ }
54283
54317
 
54318
+ // 修饰键 shiftKey altKey ctrlKey (command||metaKey) 清除
54284
54319
  if (key === 93 || key === 224) key = 91;
54285
-
54286
54320
  if (key in _mods) {
54287
- _mods[key] = false; // 将修饰键重置为false
54321
+ _mods[key] = false;
54288
54322
 
54289
- for (var k in _modifier) {
54290
- if (_modifier[k] === key) hotkeys[k] = false;
54291
- }
54323
+ // 将修饰键重置为false
54324
+ for (const k in _modifier) if (_modifier[k] === key) hotkeys[k] = false;
54292
54325
  }
54293
54326
  }
54294
-
54295
54327
  function unbind(keysInfo) {
54296
54328
  // unbind(), unbind all keys
54297
54329
  if (typeof keysInfo === 'undefined') {
54298
- Object.keys(_handlers).forEach(function (key) {
54299
- return delete _handlers[key];
54330
+ Object.keys(_handlers).forEach(key => {
54331
+ Array.isArray(_handlers[key]) && _handlers[key].forEach(info => eachUnbind(info));
54332
+ delete _handlers[key];
54300
54333
  });
54334
+ removeKeyEvent(null);
54301
54335
  } else if (Array.isArray(keysInfo)) {
54302
54336
  // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])
54303
- keysInfo.forEach(function (info) {
54337
+ keysInfo.forEach(info => {
54304
54338
  if (info.key) eachUnbind(info);
54305
54339
  });
54306
54340
  } else if (typeof keysInfo === 'object') {
@@ -54310,73 +54344,75 @@ function unbind(keysInfo) {
54310
54344
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
54311
54345
  args[_key - 1] = arguments[_key];
54312
54346
  }
54313
-
54314
54347
  // support old method
54315
54348
  // eslint-disable-line
54316
- var scope = args[0],
54317
- method = args[1];
54318
-
54349
+ let [scope, method] = args;
54319
54350
  if (typeof scope === 'function') {
54320
54351
  method = scope;
54321
54352
  scope = '';
54322
54353
  }
54323
-
54324
54354
  eachUnbind({
54325
54355
  key: keysInfo,
54326
- scope: scope,
54327
- method: method,
54356
+ scope,
54357
+ method,
54328
54358
  splitKey: '+'
54329
54359
  });
54330
54360
  }
54331
- } // 解除绑定某个范围的快捷键
54332
-
54333
-
54334
- var eachUnbind = function eachUnbind(_ref) {
54335
- var key = _ref.key,
54336
- scope = _ref.scope,
54337
- method = _ref.method,
54338
- _ref$splitKey = _ref.splitKey,
54339
- splitKey = _ref$splitKey === void 0 ? '+' : _ref$splitKey;
54340
- var multipleKeys = getKeys(key);
54341
- multipleKeys.forEach(function (originKey) {
54342
- var unbindKeys = originKey.split(splitKey);
54343
- var len = unbindKeys.length;
54344
- var lastKey = unbindKeys[len - 1];
54345
- var keyCode = lastKey === '*' ? '*' : code(lastKey);
54346
- if (!_handlers[keyCode]) return; // 判断是否传入范围,没有就获取范围
54361
+ }
54347
54362
 
54363
+ // 解除绑定某个范围的快捷键
54364
+ const eachUnbind = _ref3 => {
54365
+ let {
54366
+ key,
54367
+ scope,
54368
+ method,
54369
+ splitKey = '+'
54370
+ } = _ref3;
54371
+ const multipleKeys = getKeys(key);
54372
+ multipleKeys.forEach(originKey => {
54373
+ const unbindKeys = originKey.split(splitKey);
54374
+ const len = unbindKeys.length;
54375
+ const lastKey = unbindKeys[len - 1];
54376
+ const keyCode = lastKey === '*' ? '*' : code(lastKey);
54377
+ if (!_handlers[keyCode]) return;
54378
+ // 判断是否传入范围,没有就获取范围
54348
54379
  if (!scope) scope = getScope();
54349
- var mods = len > 1 ? getMods(_modifier, unbindKeys) : [];
54350
- _handlers[keyCode] = _handlers[keyCode].filter(function (record) {
54380
+ const mods = len > 1 ? getMods(_modifier, unbindKeys) : [];
54381
+ const unbindElements = [];
54382
+ _handlers[keyCode] = _handlers[keyCode].filter(record => {
54351
54383
  // 通过函数判断,是否解除绑定,函数相等直接返回
54352
- var isMatchingMethod = method ? record.method === method : true;
54353
- return !(isMatchingMethod && record.scope === scope && compareArray(record.mods, mods));
54384
+ const isMatchingMethod = method ? record.method === method : true;
54385
+ const isUnbind = isMatchingMethod && record.scope === scope && compareArray(record.mods, mods);
54386
+ if (isUnbind) unbindElements.push(record.element);
54387
+ return !isUnbind;
54354
54388
  });
54389
+ unbindElements.forEach(element => removeKeyEvent(element));
54355
54390
  });
54356
- }; // 对监听对应快捷键的回调函数进行处理
54357
-
54391
+ };
54358
54392
 
54393
+ // 对监听对应快捷键的回调函数进行处理
54359
54394
  function eventHandler(event, handler, scope, element) {
54360
54395
  if (handler.element !== element) {
54361
54396
  return;
54362
54397
  }
54398
+ let modifiersMatch;
54363
54399
 
54364
- var modifiersMatch; // 看它是否在当前范围
54365
-
54400
+ // 看它是否在当前范围
54366
54401
  if (handler.scope === scope || handler.scope === 'all') {
54367
54402
  // 检查是否匹配修饰符(如果有返回true)
54368
54403
  modifiersMatch = handler.mods.length > 0;
54369
-
54370
- for (var y in _mods) {
54404
+ for (const y in _mods) {
54371
54405
  if (Object.prototype.hasOwnProperty.call(_mods, y)) {
54372
54406
  if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {
54373
54407
  modifiersMatch = false;
54374
54408
  }
54375
54409
  }
54376
- } // 调用处理程序,如果是修饰键不做处理
54377
-
54410
+ }
54378
54411
 
54412
+ // 调用处理程序,如果是修饰键不做处理
54379
54413
  if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {
54414
+ handler.keys = [];
54415
+ handler.keys = handler.keys.concat(_downKeys);
54380
54416
  if (handler.method(event, handler) === false) {
54381
54417
  if (event.preventDefault) event.preventDefault();else event.returnValue = false;
54382
54418
  if (event.stopPropagation) event.stopPropagation();
@@ -54384,33 +54420,33 @@ function eventHandler(event, handler, scope, element) {
54384
54420
  }
54385
54421
  }
54386
54422
  }
54387
- } // 处理keydown事件
54388
-
54423
+ }
54389
54424
 
54425
+ // 处理keydown事件
54390
54426
  function dispatch$9(event, element) {
54391
- var asterisk = _handlers['*'];
54392
- var key = event.keyCode || event.which || event.charCode; // 表单控件过滤 默认表单控件不触发快捷键
54427
+ const asterisk = _handlers['*'];
54428
+ let key = event.keyCode || event.which || event.charCode;
54393
54429
 
54394
- if (!hotkeys.filter.call(this, event)) return; // Gecko(Firefox)的command键值224,在Webkit(Chrome)中保持一致
54395
- // Webkit左右 command 键值不一样
54430
+ // 表单控件过滤 默认表单控件不触发快捷键
54431
+ if (!hotkeys.filter.call(this, event)) return;
54396
54432
 
54433
+ // Gecko(Firefox)的command键值224,在Webkit(Chrome)中保持一致
54434
+ // Webkit左右 command 键值不一样
54397
54435
  if (key === 93 || key === 224) key = 91;
54436
+
54398
54437
  /**
54399
54438
  * Collect bound keys
54400
54439
  * If an Input Method Editor is processing key input and the event is keydown, return 229.
54401
54440
  * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229
54402
54441
  * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html
54403
54442
  */
54404
-
54405
54443
  if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);
54406
54444
  /**
54407
54445
  * Jest test cases are required.
54408
54446
  * ===============================
54409
54447
  */
54410
-
54411
- ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(function (keyName) {
54412
- var keyNum = modifierMap[keyName];
54413
-
54448
+ ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(keyName => {
54449
+ const keyNum = modifierMap[keyName];
54414
54450
  if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {
54415
54451
  _downKeys.push(keyNum);
54416
54452
  } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {
@@ -54430,17 +54466,17 @@ function dispatch$9(event, element) {
54430
54466
  */
54431
54467
 
54432
54468
  if (key in _mods) {
54433
- _mods[key] = true; // 将特殊字符的key注册到 hotkeys 上
54469
+ _mods[key] = true;
54434
54470
 
54435
- for (var k in _modifier) {
54471
+ // 将特殊字符的key注册到 hotkeys
54472
+ for (const k in _modifier) {
54436
54473
  if (_modifier[k] === key) hotkeys[k] = true;
54437
54474
  }
54438
-
54439
54475
  if (!asterisk) return;
54440
- } // 将 modifierMap 里面的修饰键绑定到 event 中
54441
-
54476
+ }
54442
54477
 
54443
- for (var e in _mods) {
54478
+ // modifierMap 里面的修饰键绑定到 event
54479
+ for (const e in _mods) {
54444
54480
  if (Object.prototype.hasOwnProperty.call(_mods, e)) {
54445
54481
  _mods[e] = event[modifierMap[e]];
54446
54482
  }
@@ -54451,47 +54487,43 @@ function dispatch$9(event, element) {
54451
54487
  * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type μ.
54452
54488
  * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate
54453
54489
  */
54454
-
54455
-
54456
54490
  if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {
54457
54491
  if (_downKeys.indexOf(17) === -1) {
54458
54492
  _downKeys.push(17);
54459
54493
  }
54460
-
54461
54494
  if (_downKeys.indexOf(18) === -1) {
54462
54495
  _downKeys.push(18);
54463
54496
  }
54464
-
54465
54497
  _mods[17] = true;
54466
54498
  _mods[18] = true;
54467
- } // 获取范围 默认为 `all`
54468
-
54469
-
54470
- var scope = getScope(); // 对任何快捷键都需要做的处理
54499
+ }
54471
54500
 
54501
+ // 获取范围 默认为 `all`
54502
+ const scope = getScope();
54503
+ // 对任何快捷键都需要做的处理
54472
54504
  if (asterisk) {
54473
- for (var i = 0; i < asterisk.length; i++) {
54505
+ for (let i = 0; i < asterisk.length; i++) {
54474
54506
  if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {
54475
54507
  eventHandler(event, asterisk[i], scope, element);
54476
54508
  }
54477
54509
  }
54478
- } // key 不在 _handlers 中返回
54479
-
54480
-
54510
+ }
54511
+ // key 不在 _handlers 中返回
54481
54512
  if (!(key in _handlers)) return;
54482
-
54483
- for (var _i = 0; _i < _handlers[key].length; _i++) {
54484
- if (event.type === 'keydown' && _handlers[key][_i].keydown || event.type === 'keyup' && _handlers[key][_i].keyup) {
54485
- if (_handlers[key][_i].key) {
54486
- var record = _handlers[key][_i];
54487
- var splitKey = record.splitKey;
54488
- var keyShortcut = record.key.split(splitKey);
54489
- var _downKeysCurrent = []; // 记录当前按键键值
54490
-
54491
- for (var a = 0; a < keyShortcut.length; a++) {
54513
+ const handlerKey = _handlers[key];
54514
+ const keyLen = handlerKey.length;
54515
+ for (let i = 0; i < keyLen; i++) {
54516
+ if (event.type === 'keydown' && handlerKey[i].keydown || event.type === 'keyup' && handlerKey[i].keyup) {
54517
+ if (handlerKey[i].key) {
54518
+ const record = handlerKey[i];
54519
+ const {
54520
+ splitKey
54521
+ } = record;
54522
+ const keyShortcut = record.key.split(splitKey);
54523
+ const _downKeysCurrent = []; // 记录当前按键键值
54524
+ for (let a = 0; a < keyShortcut.length; a++) {
54492
54525
  _downKeysCurrent.push(code(keyShortcut[a]));
54493
54526
  }
54494
-
54495
54527
  if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {
54496
54528
  // 找到处理内容
54497
54529
  eventHandler(event, record, scope, element);
@@ -54499,139 +54531,187 @@ function dispatch$9(event, element) {
54499
54531
  }
54500
54532
  }
54501
54533
  }
54502
- } // 判断 element 是否已经绑定事件
54503
-
54504
-
54505
- function isElementBind(element) {
54506
- return elementHasBindEvent.indexOf(element) > -1;
54507
54534
  }
54508
-
54509
54535
  function hotkeys(key, option, method) {
54510
54536
  _downKeys = [];
54511
- var keys = getKeys(key); // 需要处理的快捷键列表
54512
-
54513
- var mods = [];
54514
- var scope = 'all'; // scope默认为all,所有范围都有效
54515
-
54516
- var element = document; // 快捷键事件绑定节点
54517
-
54518
- var i = 0;
54519
- var keyup = false;
54520
- var keydown = true;
54521
- var splitKey = '+';
54522
- var capture = false; // 对为设定范围的判断
54523
-
54537
+ const keys = getKeys(key); // 需要处理的快捷键列表
54538
+ let mods = [];
54539
+ let scope = 'all'; // scope默认为all,所有范围都有效
54540
+ let element = document; // 快捷键事件绑定节点
54541
+ let i = 0;
54542
+ let keyup = false;
54543
+ let keydown = true;
54544
+ let splitKey = '+';
54545
+ let capture = false;
54546
+ let single = false; // 单个callback
54547
+
54548
+ // 对为设定范围的判断
54524
54549
  if (method === undefined && typeof option === 'function') {
54525
54550
  method = option;
54526
54551
  }
54527
-
54528
54552
  if (Object.prototype.toString.call(option) === '[object Object]') {
54529
54553
  if (option.scope) scope = option.scope; // eslint-disable-line
54530
-
54531
54554
  if (option.element) element = option.element; // eslint-disable-line
54532
-
54533
54555
  if (option.keyup) keyup = option.keyup; // eslint-disable-line
54534
-
54535
54556
  if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line
54536
-
54537
54557
  if (option.capture !== undefined) capture = option.capture; // eslint-disable-line
54538
-
54539
54558
  if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line
54559
+ if (option.single === true) single = true; // eslint-disable-line
54540
54560
  }
54561
+ if (typeof option === 'string') scope = option;
54541
54562
 
54542
- if (typeof option === 'string') scope = option; // 对于每个快捷键进行处理
54563
+ // 如果只允许单个callback,先unbind
54564
+ if (single) unbind(key, scope);
54543
54565
 
54566
+ // 对于每个快捷键进行处理
54544
54567
  for (; i < keys.length; i++) {
54545
54568
  key = keys[i].split(splitKey); // 按键列表
54569
+ mods = [];
54546
54570
 
54547
- mods = []; // 如果是组合快捷键取得组合快捷键
54548
-
54549
- if (key.length > 1) mods = getMods(_modifier, key); // 将非修饰键转化为键码
54571
+ // 如果是组合快捷键取得组合快捷键
54572
+ if (key.length > 1) mods = getMods(_modifier, key);
54550
54573
 
54574
+ // 将非修饰键转化为键码
54551
54575
  key = key[key.length - 1];
54552
54576
  key = key === '*' ? '*' : code(key); // *表示匹配所有快捷键
54553
- // 判断key是否在_handlers中,不在就赋一个空数组
54554
54577
 
54578
+ // 判断key是否在_handlers中,不在就赋一个空数组
54555
54579
  if (!(key in _handlers)) _handlers[key] = [];
54556
-
54557
54580
  _handlers[key].push({
54558
- keyup: keyup,
54559
- keydown: keydown,
54560
- scope: scope,
54561
- mods: mods,
54581
+ keyup,
54582
+ keydown,
54583
+ scope,
54584
+ mods,
54562
54585
  shortcut: keys[i],
54563
- method: method,
54586
+ method,
54564
54587
  key: keys[i],
54565
- splitKey: splitKey,
54566
- element: element
54588
+ splitKey,
54589
+ element
54567
54590
  });
54568
- } // 在全局document上设置快捷键
54569
-
54570
-
54571
- if (typeof element !== 'undefined' && !isElementBind(element) && window) {
54572
- elementHasBindEvent.push(element);
54573
- addEvent(element, 'keydown', function (e) {
54574
- dispatch$9(e, element);
54575
- }, capture);
54576
-
54591
+ }
54592
+ // 在全局document上设置快捷键
54593
+ if (typeof element !== 'undefined' && window) {
54594
+ if (!elementEventMap.has(element)) {
54595
+ const keydownListener = function () {
54596
+ let event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.event;
54597
+ return dispatch$9(event, element);
54598
+ };
54599
+ const keyupListenr = function () {
54600
+ let event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.event;
54601
+ dispatch$9(event, element);
54602
+ clearModifier(event);
54603
+ };
54604
+ elementEventMap.set(element, {
54605
+ keydownListener,
54606
+ keyupListenr,
54607
+ capture
54608
+ });
54609
+ addEvent(element, 'keydown', keydownListener, capture);
54610
+ addEvent(element, 'keyup', keyupListenr, capture);
54611
+ }
54577
54612
  if (!winListendFocus) {
54578
- winListendFocus = true;
54579
- addEvent(window, 'focus', function () {
54613
+ const listener = () => {
54580
54614
  _downKeys = [];
54581
- }, capture);
54615
+ };
54616
+ winListendFocus = {
54617
+ listener,
54618
+ capture
54619
+ };
54620
+ addEvent(window, 'focus', listener, capture);
54582
54621
  }
54583
-
54584
- addEvent(element, 'keyup', function (e) {
54585
- dispatch$9(e, element);
54586
- clearModifier(e);
54587
- }, capture);
54588
54622
  }
54589
54623
  }
54590
-
54591
54624
  function trigger(shortcut) {
54592
- var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all';
54593
- Object.keys(_handlers).forEach(function (key) {
54594
- var data = _handlers[key].find(function (item) {
54595
- return item.scope === scope && item.shortcut === shortcut;
54625
+ let scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all';
54626
+ Object.keys(_handlers).forEach(key => {
54627
+ const dataList = _handlers[key].filter(item => item.scope === scope && item.shortcut === shortcut);
54628
+ dataList.forEach(data => {
54629
+ if (data && data.method) {
54630
+ data.method();
54631
+ }
54596
54632
  });
54597
-
54598
- if (data && data.method) {
54599
- data.method();
54600
- }
54601
54633
  });
54602
54634
  }
54603
54635
 
54604
- var _api = {
54605
- setScope: setScope,
54606
- getScope: getScope,
54607
- deleteScope: deleteScope,
54608
- getPressedKeyCodes: getPressedKeyCodes,
54609
- isPressed: isPressed,
54636
+ // 销毁事件,unbind之后判断element上是否还有键盘快捷键,如果没有移除监听
54637
+ function removeKeyEvent(element) {
54638
+ const values = Object.values(_handlers).flat();
54639
+ const findindex = values.findIndex(_ref4 => {
54640
+ let {
54641
+ element: el
54642
+ } = _ref4;
54643
+ return el === element;
54644
+ });
54645
+ if (findindex < 0) {
54646
+ const {
54647
+ keydownListener,
54648
+ keyupListenr,
54649
+ capture
54650
+ } = elementEventMap.get(element) || {};
54651
+ if (keydownListener && keyupListenr) {
54652
+ removeEvent(element, 'keyup', keyupListenr, capture);
54653
+ removeEvent(element, 'keydown', keydownListener, capture);
54654
+ elementEventMap.delete(element);
54655
+ }
54656
+ }
54657
+ if (values.length <= 0 || elementEventMap.size <= 0) {
54658
+ // 移除所有的元素上的监听
54659
+ const eventKeys = Object.keys(elementEventMap);
54660
+ eventKeys.forEach(el => {
54661
+ const {
54662
+ keydownListener,
54663
+ keyupListenr,
54664
+ capture
54665
+ } = elementEventMap.get(el) || {};
54666
+ if (keydownListener && keyupListenr) {
54667
+ removeEvent(el, 'keyup', keyupListenr, capture);
54668
+ removeEvent(el, 'keydown', keydownListener, capture);
54669
+ elementEventMap.delete(el);
54670
+ }
54671
+ });
54672
+ // 清空 elementEventMap
54673
+ elementEventMap.clear();
54674
+ // 清空 _handlers
54675
+ Object.keys(_handlers).forEach(key => delete _handlers[key]);
54676
+ // 移除window上的focus监听
54677
+ if (winListendFocus) {
54678
+ const {
54679
+ listener,
54680
+ capture
54681
+ } = winListendFocus;
54682
+ removeEvent(window, 'focus', listener, capture);
54683
+ winListendFocus = null;
54684
+ }
54685
+ }
54686
+ }
54687
+ const _api = {
54688
+ getPressedKeyString,
54689
+ setScope,
54690
+ getScope,
54691
+ deleteScope,
54692
+ getPressedKeyCodes,
54693
+ getAllKeyCodes,
54694
+ isPressed,
54610
54695
  filter: filter$1,
54611
- trigger: trigger,
54612
- unbind: unbind,
54696
+ trigger,
54697
+ unbind,
54613
54698
  keyMap: _keyMap,
54614
54699
  modifier: _modifier,
54615
- modifierMap: modifierMap
54700
+ modifierMap
54616
54701
  };
54617
-
54618
- for (var a in _api) {
54702
+ for (const a in _api) {
54619
54703
  if (Object.prototype.hasOwnProperty.call(_api, a)) {
54620
54704
  hotkeys[a] = _api[a];
54621
54705
  }
54622
54706
  }
54623
-
54624
54707
  if (typeof window !== 'undefined') {
54625
- var _hotkeys = window.hotkeys;
54626
-
54627
- hotkeys.noConflict = function (deep) {
54708
+ const _hotkeys = window.hotkeys;
54709
+ hotkeys.noConflict = deep => {
54628
54710
  if (deep && window.hotkeys === hotkeys) {
54629
54711
  window.hotkeys = _hotkeys;
54630
54712
  }
54631
-
54632
54713
  return hotkeys;
54633
54714
  };
54634
-
54635
54715
  window.hotkeys = hotkeys;
54636
54716
  }var HOTKEYS_DEFAULT_OPTIONS = {
54637
54717
  keyup: true,
@@ -54728,6 +54808,7 @@ var Keyboard = /*#__PURE__*/function (_EventDispatcher) {
54728
54808
  }, {
54729
54809
  key: "isPressed",
54730
54810
  value: function isPressed(key) {
54811
+ console.log(key, hotkeys.getPressedKeyCodes());
54731
54812
  return hotkeys.isPressed(key);
54732
54813
  }
54733
54814
  }]);
@@ -55131,7 +55212,8 @@ var Universe$1 = new Universe();var generateUUID = function generateUUID() {
55131
55212
  };
55132
55213
  var generateRandomName = function generateRandomName(prefix) {
55133
55214
  return "".concat(prefix, "_").concat(generateUUID());
55134
- };var uuid$1=/*#__PURE__*/Object.freeze({__proto__:null,generateUUID:generateUUID,generateRandomName:generateRandomName});var ALMOST_ZERO = 0.00001;
55215
+ };var uuid$1=/*#__PURE__*/Object.freeze({__proto__:null,generateUUID:generateUUID,generateRandomName:generateRandomName});var _MATERIAL_PROPERTIES_, _MATERIAL_PROPERTIES_2, _MATERIAL_TEXTURE_MAP$1;
55216
+ var ALMOST_ZERO = 0.00001;
55135
55217
  var UP$1 = "UP";
55136
55218
  var DOWN$1 = "DOWN";
55137
55219
  var LEFT = "LEFT";
@@ -55188,6 +55270,178 @@ var TEXTURES = {
55188
55270
  ROUGHNESS: "roughnessMap",
55189
55271
  GRADIENT: "gradientMap"
55190
55272
  };
55273
+ var PROPERTIES = {
55274
+ OPACITY: "opacity",
55275
+ // float
55276
+ TRANSPARENT: "transparent",
55277
+ // boolean
55278
+ VISIBLE: "visible",
55279
+ // boolean
55280
+ SIDE: "side",
55281
+ // FRONTSIZE, BACKSIDE, DOUBLE
55282
+ COLOR: "color",
55283
+ // color // done
55284
+ DEPTH_WRITE: "depthWrite",
55285
+ // bolean // done
55286
+ DEPTH_TEST: "depthTest",
55287
+ // boolean // done
55288
+ FOG: "fog",
55289
+ // boolean NOT SUPPORTED BY MAGE // done
55290
+ REFLECTIVITY: "reflectivity",
55291
+ // float // done
55292
+ WIREFRAME: "wireframe",
55293
+ //boolean // done
55294
+ COMBINE: "combine",
55295
+ // integer // done
55296
+ FLAT_SHADING: "flatShading",
55297
+ // boolean // done
55298
+ SHININESS: "shininess",
55299
+ // float
55300
+ SPECULAR: "specular",
55301
+ // color
55302
+ NORMAL_SCALE: "normalScale",
55303
+ // Vector2
55304
+ METALNESS: "metalness",
55305
+ // float
55306
+ ROUGHNESS: "roughness",
55307
+ // float
55308
+ EMISSIVE: "emissive",
55309
+ // color
55310
+ EMISSIVE_INTENSITY: "emissiveIntensity",
55311
+ // float
55312
+ LIGHT_MAP_INTENSITY: "lightMapIntensity",
55313
+ // float
55314
+ AO_MAP_INTENSITY: "aoMapIntensity",
55315
+ // float
55316
+ BUMP_SCALE: "bumpScale",
55317
+ // float
55318
+ DISPLACEMENT_SCALE: "displacementScale",
55319
+ // float
55320
+ DISPLACEMENT_BIAS: "displacementBias",
55321
+ // float
55322
+ REFRACTION_RATIO: "refractionRatio",
55323
+ // float // done
55324
+ ENV_MAP_INTENSITY: "envMapIntensity" // float
55325
+
55326
+ };
55327
+ var MATERIAL_PROPERTIES_DEFAULT_VALUES = (_MATERIAL_PROPERTIES_ = {}, _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.OPACITY, 1.0), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.TRANSPARENT, false), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.VISIBLE, true), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.SIDE, FrontSide), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.COLOR, "#ffffff"), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.DEPTH_WRITE, false), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.DEPTH_TEST, false), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.FOG, false), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.REFLECTIVITY, 1.0), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.WIREFRAME, false), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.COMBINE, 1), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.FLAT_SHADING, false), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.SHININESS, 30), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.SPECULAR, "#111111"), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.NORMAL_SCALE, {
55328
+ x: 1,
55329
+ y: 1
55330
+ }), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.METALNESS, 0.0), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.ROUGHNESS, 1.0), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.EMISSIVE, "#000000"), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.EMISSIVE_INTENSITY, 1.0), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.LIGHT_MAP_INTENSITY, 1.0), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.AO_MAP_INTENSITY, 1.0), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.BUMP_SCALE, 1.0), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.DISPLACEMENT_SCALE, 1.0), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.DISPLACEMENT_BIAS, 0), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.REFRACTION_RATIO, 0.98), _defineProperty$1(_MATERIAL_PROPERTIES_, PROPERTIES.ENV_MAP_INTENSITY, 1.0), _MATERIAL_PROPERTIES_);
55331
+ var DEFAULT_MATERIAL_PROPERTIES = {
55332
+ OPACITY: "opacity",
55333
+ // float
55334
+ SIDE: "side",
55335
+ // FRONTSIZE, BACKSIDE, DOUBLE
55336
+ TRANSPARENT: "transparent",
55337
+ // boolean
55338
+ VISIBLE: "visible" // boolean
55339
+
55340
+ };
55341
+ var MATERIAL_PROPERTIES_MAP = (_MATERIAL_PROPERTIES_2 = {}, _defineProperty$1(_MATERIAL_PROPERTIES_2, MATERIALS.BASIC, [PROPERTIES.COLOR, PROPERTIES.COMBINE, // PROPERTIES.FOG,
55342
+ PROPERTIES.LIGHT_MAP_INTENSITY, // float
55343
+ PROPERTIES.REFLECTIVITY, PROPERTIES.WIREFRAME, PROPERTIES.REFRACTION_RATIO]), _defineProperty$1(_MATERIAL_PROPERTIES_2, MATERIALS.LAMBERT, [PROPERTIES.AO_MAP_INTENSITY, // DONE
55344
+ PROPERTIES.BUMP_SCALE, // DONE
55345
+ PROPERTIES.COLOR, // DONE
55346
+ PROPERTIES.COMBINE, // DONE
55347
+ PROPERTIES.DISPLACEMENT_SCALE, // DONE
55348
+ PROPERTIES.DISPLACEMENT_BIAS, // DONE
55349
+ PROPERTIES.EMISSIVE, // DONE
55350
+ PROPERTIES.EMISSIVE_INTENSITY, // DONE
55351
+ // PROPERTIES.FOG, // DONE
55352
+ PROPERTIES.LIGHT_MAP_INTENSITY, // DONE
55353
+ PROPERTIES.NORMAL_SCALE, PROPERTIES.REFLECTIVITY, // DONE
55354
+ PROPERTIES.REFRACTION_RATIO, // DONE
55355
+ PROPERTIES.WIREFRAME // DONE
55356
+ ]), _defineProperty$1(_MATERIAL_PROPERTIES_2, MATERIALS.PHONG, [PROPERTIES.AO_MAP_INTENSITY, // DONE
55357
+ PROPERTIES.BUMP_SCALE, // DONE
55358
+ PROPERTIES.COLOR, // DONE
55359
+ PROPERTIES.COMBINE, // DONE
55360
+ PROPERTIES.DISPLACEMENT_SCALE, // DONE
55361
+ PROPERTIES.DISPLACEMENT_BIAS, // DONE
55362
+ PROPERTIES.EMISSIVE, // DONE
55363
+ PROPERTIES.EMISSIVE_INTENSITY, // DONE
55364
+ PROPERTIES.FLAT_SHADING, // DONE
55365
+ // PROPERTIES.FOG, // DONE
55366
+ PROPERTIES.LIGHT_MAP_INTENSITY, // DONE
55367
+ PROPERTIES.NORMAL_SCALE, // DONE
55368
+ PROPERTIES.REFLECTIVITY, // DONE
55369
+ PROPERTIES.REFRACTION_RATIO, // DONE
55370
+ PROPERTIES.SHININESS, // DONE
55371
+ PROPERTIES.SPECULAR, // DONE
55372
+ PROPERTIES.WIREFRAME // DONE
55373
+ ]), _defineProperty$1(_MATERIAL_PROPERTIES_2, MATERIALS.DEPTH, [PROPERTIES.DISPLACEMENT_SCALE, // DONE
55374
+ PROPERTIES.DISPLACEMENT_BIAS, // DONE
55375
+ // PROPERTIES.FOG, // DONE
55376
+ PROPERTIES.WIREFRAME // DONE
55377
+ ]), _defineProperty$1(_MATERIAL_PROPERTIES_2, MATERIALS.STANDARD, [PROPERTIES.AO_MAP_INTENSITY, // DONE
55378
+ PROPERTIES.BUMP_SCALE, // DONE
55379
+ PROPERTIES.COLOR, // DONE
55380
+ PROPERTIES.COMBINE, // DONE
55381
+ PROPERTIES.DISPLACEMENT_SCALE, // DONE
55382
+ PROPERTIES.DISPLACEMENT_BIAS, // DONE
55383
+ PROPERTIES.EMISSIVE, // DONE
55384
+ PROPERTIES.EMISSIVE_INTENSITY, // DONE
55385
+ PROPERTIES.ENV_MAP_INTENSITY, // done
55386
+ PROPERTIES.FLAT_SHADING, // DONE
55387
+ // PROPERTIES.FOG, // DONE
55388
+ PROPERTIES.LIGHT_MAP_INTENSITY, // DONE
55389
+ PROPERTIES.METALNESS, // done
55390
+ PROPERTIES.NORMAL_SCALE, // DONE
55391
+ PROPERTIES.ROUGHNESS, // DONE
55392
+ PROPERTIES.WIREFRAME // DONE
55393
+ ]), _defineProperty$1(_MATERIAL_PROPERTIES_2, MATERIALS.THREE_TOON, [PROPERTIES.AO_MAP_INTENSITY, // DONE
55394
+ PROPERTIES.BUMP_SCALE, // DONE
55395
+ PROPERTIES.COLOR, // DONE
55396
+ PROPERTIES.DISPLACEMENT_SCALE, // DONE
55397
+ PROPERTIES.DISPLACEMENT_BIAS, // DONE
55398
+ PROPERTIES.EMISSIVE, // DONE
55399
+ PROPERTIES.EMISSIVE_INTENSITY, // DONE
55400
+ // PROPERTIES.FOG, // DONE
55401
+ PROPERTIES.LIGHT_MAP_INTENSITY, // DONE
55402
+ PROPERTIES.NORMAL_SCALE, // done
55403
+ PROPERTIES.WIREFRAME // DONE
55404
+ ]), _MATERIAL_PROPERTIES_2);
55405
+ var MATERIAL_TEXTURE_MAP$1 = (_MATERIAL_TEXTURE_MAP$1 = {}, _defineProperty$1(_MATERIAL_TEXTURE_MAP$1, MATERIALS.BASIC, [TEXTURES.ALPHA, TEXTURES.AO, TEXTURES.ENV, TEXTURES.LIGHT, TEXTURES.MAP, TEXTURES.SPECULAR]), _defineProperty$1(_MATERIAL_TEXTURE_MAP$1, MATERIALS.LAMBERT, [TEXTURES.ALPHA, // DONE
55406
+ TEXTURES.AO, // DONE
55407
+ TEXTURES.ENV, // DONE
55408
+ TEXTURES.LIGHT, // DONE
55409
+ TEXTURES.MAP, // DONE
55410
+ TEXTURES.SPECULAR, // DONE
55411
+ TEXTURES.EMISSIVE, // DONE
55412
+ TEXTURES.BUMP]), _defineProperty$1(_MATERIAL_TEXTURE_MAP$1, MATERIALS.PHONG, [TEXTURES.ALPHA, // DONE
55413
+ TEXTURES.AO, // DONE
55414
+ TEXTURES.ENV, // DONE
55415
+ TEXTURES.LIGHT, // DONE
55416
+ TEXTURES.MAP, // DONE
55417
+ TEXTURES.SPECULAR, // DONE
55418
+ TEXTURES.EMISSIVE, // DONE
55419
+ TEXTURES.BUMP, // DONE
55420
+ TEXTURES.DISPLACEMENT, // DONE
55421
+ TEXTURES.NORMAL // DONE
55422
+ ]), _defineProperty$1(_MATERIAL_TEXTURE_MAP$1, MATERIALS.DEPTH, [TEXTURES.ALPHA, // DONE
55423
+ TEXTURES.MAP, // DONE
55424
+ TEXTURES.DISPLACEMENT // DONE
55425
+ ]), _defineProperty$1(_MATERIAL_TEXTURE_MAP$1, MATERIALS.STANDARD, [TEXTURES.ALPHA, // DONE
55426
+ TEXTURES.AO, // DONE
55427
+ TEXTURES.ENV, // DONE
55428
+ TEXTURES.LIGHT, // DONE
55429
+ TEXTURES.MAP, // DONE
55430
+ TEXTURES.EMISSIVE, // DONE
55431
+ TEXTURES.BUMP, // DONE
55432
+ TEXTURES.DISPLACEMENT, // DONE
55433
+ TEXTURES.NORMAL, // DONE
55434
+ TEXTURES.METALNESS, // DONE
55435
+ TEXTURES.ROUGHNESS // DONE
55436
+ ]), _defineProperty$1(_MATERIAL_TEXTURE_MAP$1, MATERIALS.THREE_TOON, [TEXTURES.ALPHA, // DONE
55437
+ TEXTURES.AO, // DONE
55438
+ TEXTURES.BUMP, // DONE
55439
+ TEXTURES.DISPLACEMENT, TEXTURES.EMISSIVE, // DONE
55440
+ TEXTURES.GRADIENT, // DONE
55441
+ TEXTURES.LIGHT, // DONE
55442
+ TEXTURES.MAP, // DONE
55443
+ TEXTURES.NORMAL // DONE
55444
+ ]), _MATERIAL_TEXTURE_MAP$1);
55191
55445
  var EFFECTS = {
55192
55446
  SEPIA: "SEPIAEFFECT",
55193
55447
  HUE_SATURATION: "HUESATURATIONEFFECT",
@@ -55245,7 +55499,7 @@ var TAGS = {
55245
55499
  HELPER: "TAGS.SOUNDS.HELPER",
55246
55500
  HOLDER: "TAGS.SOUNDS.HOLDER"
55247
55501
  }
55248
- };var lib_constants=/*#__PURE__*/Object.freeze({__proto__:null,ALMOST_ZERO:ALMOST_ZERO,UP:UP$1,DOWN:DOWN$1,LEFT:LEFT,RIGHT:RIGHT,FRONT:FRONT,BACK:BACK,VECTOR_UP:VECTOR_UP,VECTOR_DOWN:VECTOR_DOWN,VECTOR_LEFT:VECTOR_LEFT,VECTOR_RIGHT:VECTOR_RIGHT,VECTOR_FRONT:VECTOR_FRONT,VECTOR_BACK:VECTOR_BACK,ORIGIN:ORIGIN,ZERO_QUATERNION:ZERO_QUATERNION,MATERIALS:MATERIALS,TEXTURES:TEXTURES,EFFECTS:EFFECTS,COLLISION_EVENT:COLLISION_EVENT,COLORS:COLORS,ASSETS_TYPES:ASSETS_TYPES,OUTPUT_ENCODINGS:OUTPUT_ENCODINGS,DEFAULT_OUTPUT_ENCODING:DEFAULT_OUTPUT_ENCODING,ROOT:ROOT,DIVIDER:DIVIDER,HASH:HASH,EMPTY:EMPTY$2,QUERY_START:QUERY_START,DEFAULT_SELECTOR:DEFAULT_SELECTOR,BEFORE_UNLOAD:BEFORE_UNLOAD,HASH_CHANGE:HASH_CHANGE,TAGS:TAGS});var buildAssetId = function buildAssetId(name, level) {
55502
+ };var lib_constants=/*#__PURE__*/Object.freeze({__proto__:null,ALMOST_ZERO:ALMOST_ZERO,UP:UP$1,DOWN:DOWN$1,LEFT:LEFT,RIGHT:RIGHT,FRONT:FRONT,BACK:BACK,VECTOR_UP:VECTOR_UP,VECTOR_DOWN:VECTOR_DOWN,VECTOR_LEFT:VECTOR_LEFT,VECTOR_RIGHT:VECTOR_RIGHT,VECTOR_FRONT:VECTOR_FRONT,VECTOR_BACK:VECTOR_BACK,ORIGIN:ORIGIN,ZERO_QUATERNION:ZERO_QUATERNION,MATERIALS:MATERIALS,TEXTURES:TEXTURES,PROPERTIES:PROPERTIES,MATERIAL_PROPERTIES_DEFAULT_VALUES:MATERIAL_PROPERTIES_DEFAULT_VALUES,DEFAULT_MATERIAL_PROPERTIES:DEFAULT_MATERIAL_PROPERTIES,MATERIAL_PROPERTIES_MAP:MATERIAL_PROPERTIES_MAP,MATERIAL_TEXTURE_MAP:MATERIAL_TEXTURE_MAP$1,EFFECTS:EFFECTS,COLLISION_EVENT:COLLISION_EVENT,COLORS:COLORS,ASSETS_TYPES:ASSETS_TYPES,OUTPUT_ENCODINGS:OUTPUT_ENCODINGS,DEFAULT_OUTPUT_ENCODING:DEFAULT_OUTPUT_ENCODING,ROOT:ROOT,DIVIDER:DIVIDER,HASH:HASH,EMPTY:EMPTY$2,QUERY_START:QUERY_START,DEFAULT_SELECTOR:DEFAULT_SELECTOR,BEFORE_UNLOAD:BEFORE_UNLOAD,HASH_CHANGE:HASH_CHANGE,TAGS:TAGS});var buildAssetId = function buildAssetId(name, level) {
55249
55503
  return level ? "".concat(level, "_").concat(name) : name;
55250
55504
  };
55251
55505
  var isLevelName = function isLevelName(level) {
@@ -57799,7 +58053,7 @@ function applyMiddleware() {
57799
58053
 
57800
58054
  var thunk = createThunkMiddleware();
57801
58055
  thunk.withExtraArgument = createThunkMiddleware;var name$1 = "mage-engine";
57802
- var version$1 = "3.23.12";
58056
+ var version$1 = "3.23.14";
57803
58057
  var description = "A WebGL Javascript Game Engine, built on top of THREE.js and many other libraries.";
57804
58058
  var main = "dist/mage.js";
57805
58059
  var author$1 = {
@@ -57841,7 +58095,7 @@ var dependencies = {
57841
58095
  "@babel/plugin-transform-runtime": "7.5.0",
57842
58096
  "@babel/runtime": "7.5.0",
57843
58097
  "between.js": "0.1.2-fix.2",
57844
- "hotkeys-js": "3.9.4",
58098
+ "hotkeys-js": "^3.13.7",
57845
58099
  "html-to-image": "^1.9.0",
57846
58100
  html2canvas: "^1.4.1",
57847
58101
  inferno: "7.3.2",
@@ -59085,7 +59339,7 @@ var BaseCar = /*#__PURE__*/function (_BaseScript) {
59085
59339
  function BaseCar() {
59086
59340
  _classCallCheck(this, BaseCar);
59087
59341
 
59088
- return _super.call(this, 'BaseCar');
59342
+ return _super.call(this, "BaseCar");
59089
59343
  }
59090
59344
 
59091
59345
  _createClass(BaseCar, [{
@@ -59093,13 +59347,13 @@ var BaseCar = /*#__PURE__*/function (_BaseScript) {
59093
59347
  value: function start(element, options) {
59094
59348
  var wheels = options.wheels,
59095
59349
  _options$acceleration = options.accelerationKey,
59096
- accelerationKey = _options$acceleration === void 0 ? 'w' : _options$acceleration,
59350
+ accelerationKey = _options$acceleration === void 0 ? "w" : _options$acceleration,
59097
59351
  _options$brakingKey = options.brakingKey,
59098
- brakingKey = _options$brakingKey === void 0 ? 's' : _options$brakingKey,
59352
+ brakingKey = _options$brakingKey === void 0 ? "s" : _options$brakingKey,
59099
59353
  _options$rightKey = options.rightKey,
59100
- rightKey = _options$rightKey === void 0 ? 'd' : _options$rightKey,
59354
+ rightKey = _options$rightKey === void 0 ? "d" : _options$rightKey,
59101
59355
  _options$leftKey = options.leftKey,
59102
- leftKey = _options$leftKey === void 0 ? 'a' : _options$leftKey;
59356
+ leftKey = _options$leftKey === void 0 ? "a" : _options$leftKey;
59103
59357
  options.debug;
59104
59358
  var _options$autostart = options.autostart,
59105
59359
  autostart = _options$autostart === void 0 ? true : _options$autostart,
@@ -59119,6 +59373,7 @@ var BaseCar = /*#__PURE__*/function (_BaseScript) {
59119
59373
  this.leftKey = leftKey;
59120
59374
  this.engineStarted = autostart;
59121
59375
  Input$1.enable();
59376
+ Input$1.keyboard.listenTo([accelerationKey, brakingKey, rightKey, leftKey]);
59122
59377
  Physics$1.addVehicle(this.car, _objectSpread2$1({
59123
59378
  wheels: wheels.map(function (w) {
59124
59379
  return w.uuid();
@@ -59342,7 +59597,52 @@ var Scripts = /*#__PURE__*/function () {
59342
59597
 
59343
59598
  return Scripts;
59344
59599
  }();
59345
- var Scripts$1 = new Scripts();var inverseProjectionMatrix = new Matrix4();
59600
+ var Scripts$1 = new Scripts();var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
59601
+
59602
+ function getAugmentedNamespace(n) {
59603
+ if (n.__esModule) return n;
59604
+ var a = Object.defineProperty({}, '__esModule', {value: true});
59605
+ Object.keys(n).forEach(function (k) {
59606
+ var d = Object.getOwnPropertyDescriptor(n, k);
59607
+ Object.defineProperty(a, k, d.get ? d : {
59608
+ enumerable: true,
59609
+ get: function () {
59610
+ return n[k];
59611
+ }
59612
+ });
59613
+ });
59614
+ return a;
59615
+ }const vivify = {
59616
+ set: function(_key, _value, _obj) {
59617
+ var obj = _obj || {},
59618
+ key = _key || "",
59619
+ value = _value || {},
59620
+ splitted = (typeof key == "string" && key !== '') ? key.split('.') : [];
59621
+ if (splitted.length == 1) {
59622
+ obj[splitted[0]] = value;
59623
+ return;
59624
+ }
59625
+ var k = splitted.shift();
59626
+ obj[k] = obj[k] ? obj[k] : {};
59627
+ vivify.set(splitted.join('.'), value, obj[k]);
59628
+ return obj;
59629
+ },
59630
+
59631
+ get: function(key, obj) {
59632
+ if (!obj) {
59633
+ return;
59634
+ }
59635
+ var splitted = (typeof key == "string" && key !== '') ? key.split('.') : [];
59636
+ if (splitted.length == 1) {
59637
+ return obj[splitted[0]];
59638
+ }
59639
+ var k = splitted.shift();
59640
+ var v = obj[k] ? vivify.get(splitted.join('.'), obj[k]) : false;
59641
+ return v;
59642
+ }
59643
+ };
59644
+
59645
+ var vivify_1 = vivify;var inverseProjectionMatrix = new Matrix4();
59346
59646
 
59347
59647
  var Frustum = /*#__PURE__*/function () {
59348
59648
  function Frustum(data) {
@@ -59959,6 +60259,19 @@ var applyMaterialChange = function applyMaterialChange(elementBody, changeCallba
59959
60259
  });
59960
60260
  }
59961
60261
  };
60262
+ var extractMaterialProperty = function extractMaterialProperty(elementBody, property) {
60263
+ if (hasMaterial(elementBody)) {
60264
+ return vivify_1.get(property, elementBody.material);
60265
+ } else {
60266
+ var found;
60267
+ elementBody.traverse(function (child) {
60268
+ if (hasMaterial(child) && !found) {
60269
+ found = vivify_1.get(child.material, property);
60270
+ }
60271
+ });
60272
+ return found;
60273
+ }
60274
+ };
59962
60275
  var processMaterial = function processMaterial(material, callback) {
59963
60276
  return Array.isArray(material) ? material.map(callback) : callback(material);
59964
60277
  };
@@ -60059,22 +60372,7 @@ var serializeColor = function serializeColor(color) {
60059
60372
  g: color.g,
60060
60373
  b: color.b
60061
60374
  };
60062
- };var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
60063
-
60064
- function getAugmentedNamespace(n) {
60065
- if (n.__esModule) return n;
60066
- var a = Object.defineProperty({}, '__esModule', {value: true});
60067
- Object.keys(n).forEach(function (k) {
60068
- var d = Object.getOwnPropertyDescriptor(n, k);
60069
- Object.defineProperty(a, k, d.get ? d : {
60070
- enumerable: true,
60071
- get: function () {
60072
- return n[k];
60073
- }
60074
- });
60075
- });
60076
- return a;
60077
- }var between$1 = {exports: {}};/* Between.js v0.1.2-fix.2 */
60375
+ };var between$1 = {exports: {}};/* Between.js v0.1.2-fix.2 */
60078
60376
 
60079
60377
  (function (module, exports) {
60080
60378
  !function(t,n){module.exports=n();}(commonjsGlobal,function(){function O(t){return (O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r);}}function n(t,n,e){return n&&r(t.prototype,n),e&&r(t,e),t}function M(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}function I(t){return (I=Object.getPrototypeOf||function(t){return t.__proto__})(t)}function o(t,n){return (o=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function u(t,n,e){return (u="undefined"!=typeof Reflect&&Reflect.construct?Reflect.construct:function(t,n,e){var r=[null];r.push.apply(r,n);var u=new(t.bind.apply(t,r));return e&&o(u,e.prototype),u}).apply(null,arguments)}function _(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}var t=function(o){var a={},i=[];(o=o||this).on=function(t,n,e){return (a[t]=a[t]||[]).push([n,e]),o},o.off=function(t,n){t||(a={});for(var e=a[t]||i,r=e.length=n?e.length:0;r--;)n==e[r][0]&&e.splice(r,1);return o},o.emit=function(t){for(var n,e=a[t]||i,r=0<e.length?e.slice(0,e.length):e,u=0;n=r[u++];)n[0].apply(n[1],i.slice.call(arguments,1));return o};};var V=function(t,n,e){return t*(1-e)+n*e},e="undefined"!=typeof window?window:"undefined"!=typeof commonjsGlobal?commonjsGlobal:"undefined"!=typeof self?self:{};function a(t,n){return t(n={exports:{}},n.exports),n.exports}for(var i=a(function(t){var n=t.exports={Linear:{None:function(t){return t}},Quadratic:{In:function(t){return t*t},Out:function(t){return t*(2-t)},InOut:function(t){return (t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)}},Cubic:{In:function(t){return t*t*t},Out:function(t){return --t*t*t+1},InOut:function(t){return (t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)}},Quartic:{In:function(t){return t*t*t*t},Out:function(t){return 1- --t*t*t*t},InOut:function(t){return (t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)}},Quintic:{In:function(t){return t*t*t*t*t},Out:function(t){return --t*t*t*t*t+1},InOut:function(t){return (t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)}},Sinusoidal:{In:function(t){return 1-Math.cos(t*Math.PI/2)},Out:function(t){return Math.sin(t*Math.PI/2)},InOut:function(t){return .5*(1-Math.cos(Math.PI*t))}},Exponential:{In:function(t){return 0===t?0:Math.pow(1024,t-1)},Out:function(t){return 1===t?1:1-Math.pow(2,-10*t)},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))}},Circular:{In:function(t){return 1-Math.sqrt(1-t*t)},Out:function(t){return Math.sqrt(1- --t*t)},InOut:function(t){return (t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)}},Elastic:{In:function(t){var n,e=.1;return 0===t?0:1===t?1:(!e||e<1?(e=1,n=.1):n=.4*Math.asin(1/e)/(2*Math.PI),-e*Math.pow(2,10*(t-=1))*Math.sin((t-n)*(2*Math.PI)/.4))},Out:function(t){var n,e=.1;return 0===t?0:1===t?1:(!e||e<1?(e=1,n=.1):n=.4*Math.asin(1/e)/(2*Math.PI),e*Math.pow(2,-10*t)*Math.sin((t-n)*(2*Math.PI)/.4)+1)},InOut:function(t){var n,e=.1;return 0===t?0:1===t?1:(!e||e<1?(e=1,n=.1):n=.4*Math.asin(1/e)/(2*Math.PI),(t*=2)<1?e*Math.pow(2,10*(t-=1))*Math.sin((t-n)*(2*Math.PI)/.4)*-.5:e*Math.pow(2,-10*(t-=1))*Math.sin((t-n)*(2*Math.PI)/.4)*.5+1)}},Back:{In:function(t){return t*t*(2.70158*t-1.70158)},Out:function(t){return --t*t*(2.70158*t+1.70158)+1},InOut:function(t){var n=2.5949095;return (t*=2)<1?t*t*((n+1)*t-n)*.5:.5*((t-=2)*t*((n+1)*t+n)+2)}},Bounce:{In:function(t){return 1-n.Bounce.Out(1-t)},Out:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},InOut:function(t){return t<.5?.5*n.Bounce.In(2*t):.5*n.Bounce.Out(2*t-1)+.5}}};}),c=(i.Linear,i.Quadratic,i.Cubic,i.Quartic,i.Quintic,i.Sinusoidal,i.Exponential,i.Circular,i.Elastic,i.Back,i.Bounce,a(function(a){(function(){var t,n,e,r,u,o;"undefined"!=typeof performance&&null!==performance&&performance.now?a.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(a.exports=function(){return (t()-u)/1e6},n=process.hrtime,r=(t=function(){var t;return 1e9*(t=n())[0]+t[1]})(),o=1e9*process.uptime(),u=r-o):Date.now?(a.exports=function(){return Date.now()-e},e=Date.now()):(a.exports=function(){return (new Date).getTime()-e},e=(new Date).getTime());}).call(e);})),l="undefined"==typeof window?e:window,f=["moz","webkit"],s="AnimationFrame",p=l["request"+s],h=l["cancel"+s]||l["cancelRequest"+s],m=0;!p&&m<f.length;m++)p=l[f[m]+"Request"+s],h=l[f[m]+"Cancel"+s]||l[f[m]+"CancelRequest"+s];if(!p||!h){var d=0,y=0,v=[];p=function(t){if(0===v.length){var n=c(),e=Math.max(0,1e3/60-(n-d));d=e+n,setTimeout(function(){for(var t=v.slice(0),n=v.length=0;n<t.length;n++)if(!t[n].cancelled)try{t[n].callback(d);}catch(t){setTimeout(function(){throw t},0);}},Math.round(e));}return v.push({handle:++y,callback:t,cancelled:!1}),y},h=function(t){for(var n=0;n<v.length;n++)v[n].handle===t&&(v[n].cancelled=!0);};}var b=function(t){return p.call(l,t)};b.cancel=function(){h.apply(l,arguments);},b.polyfill=function(t){t||(t=l),t.requestAnimationFrame=p,t.cancelAnimationFrame=h;};var w,k,P=[],T=Symbol("type"),j=Symbol("start_time"),x=Symbol("completed"),D=Symbol("paused"),g=requestAnimationFrame||b,A=Date.now();!function t(){g(t),w=Date.now(),k=w-A;for(var n=0;n<P.length;n++)P[n][x]||P[n](k,Date.now()-P[n][j]);A=w;}();var E=function(t){function g(e,t){var n,r,u,o;!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,g),u=this,o=I(g).call(this),M(_(_(r=!o||"object"!=typeof o&&"function"!=typeof o?_(u):o)),"update",function(){var e=_(_(r))._updateValue;return function(t,n){r[x]||r[D]||(0===r.localTime&&r.emit("start",r.value,_(_(r))),e(r.ease(r.loopFunction.progress(Math.min(1,(n||r.localTime)/r.duration)))),r.emit("update",r.value,_(_(r)),t),r.localTime>=r.duration&&r.loopFunction.complete(function(){r[x]=!0,r.emit("complete",r.value,_(_(r)));}),r.localTime+=t);}});var a=r.plugin=Object.values(g._plugins).reduce(function(t,n){return t||n&&n.test&&n.test(e)&&n},!1),i=a&&a.name||("object"===O(e)?Array.isArray(e)?"array":"object":"number");if(a){var c=a.initialize(e,t);e=c.startValue,t=c.destValue,r.data=c.data;}switch(Object.assign(_(_(r)),(M(n={duration:1e3,localTime:0,startValue:e,destValue:t,loopMode:"once",loopFunction:g.DEFAULT_LOOP,ease:function(t){return t},value:"array"===i?[].concat(e):"object"===i?Object.assign({},e):e},x,!1),M(n,T,i),M(n,j,Date.now()),M(n,D,!1),n)),r[T]){case"number":r._updateValue=function(t){r.value=V(r.startValue,r.destValue,t);};break;case"array":var l=r.value.length,f=_(_(r)),s=f.startValue,p=f.destValue,h=f.value;r._updateValue=function(t){for(var n=0;n<l;n++)h[n]=V(s[n],p[n],t);};break;case"object":var m=Object.keys(r.startValue),d=m.length,y=_(_(r)),v=y.startValue,b=y.destValue,w=y.value;r._updateValue=function(t){for(var n=0;n<d;n++){var e=m[n];w[e]=V(v[e],b[e],t);}};break;default:r.plugin?r._updateValue=function(t){r.value=r.plugin.interpolate(r.startValue,r.destValue,t,r.data);}:(console.warn("Between: startValue type was unrecognized."),r._updateValue=function(){return null});}return P.push(r.update()),r}return n(g,null,[{key:"between",value:function(){for(var t=arguments.length,n=new Array(t),e=0;e<t;e++)n[e]=arguments[e];return u(g,n)}}]),n(g,[{key:"pause",value:function(){return this[D]=!0,this.emit("pause",this.value,this,k),this}},{key:"play",value:function(){return this[D]=!1,this.emit("play",this.value,this,k),this}},{key:"easing",value:function(t){return this.ease=t,this}},{key:"time",value:function(t){return this.duration=t,this}},{key:"loop",value:function(){for(var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"once",n="__loop_".concat(t),e=arguments.length,r=new Array(1<e?e-1:0),u=1;u<e;u++)r[u-1]=arguments[u];return this.loopFunction=n in this?Object.assign({},g.DEFAULT_LOOP,this[n].apply(this,r)):g.DEFAULT_LOOP,this}},{key:"__loop_repeat",value:function(t){var n=this,e=t;return this.times=0,{complete:function(t){n.localTime=0,Number.isInteger(e)&&++n.times===e?t():Number.isInteger(e)||++n.times;}}}},{key:"__loop_bounce",value:function(t){var n=this,e=t,r=1;return this.times=0,{complete:function(t){n.localTime=0,r=-r,Number.isInteger(e)&&++n.times===e?t():Number.isInteger(e)||++n.times;},progress:function(t){return 0<r?t:1-t}}}},{key:"isPaused",get:function(){return this[D]}}]),function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");o(t.prototype,n&&n.prototype),n&&o(t,n);}(g,t),g}(t);return M(E,"DEFAULT_LOOP",{complete:function(t){return t()},progress:function(t){return t}}),E.Easing=i,E._plugins={},E});
@@ -60571,6 +60869,16 @@ var tweenTo = function tweenTo(origin, target) {
60571
60869
  this.reset();
60572
60870
  this.disposed = true;
60573
60871
  }
60872
+ /**
60873
+ * TODO: the entire state machine system needs to be a component
60874
+ * e.g.
60875
+ *
60876
+ * const stateMachine = new StateMachineComponent();
60877
+ * element.addComponent(stateMachine);
60878
+ *
60879
+ * element.getComponent("statemachine").dosomething;
60880
+ */
60881
+
60574
60882
  }, {
60575
60883
  key: "addStateMachine",
60576
60884
  value: function addStateMachine(description) {
@@ -60612,6 +60920,16 @@ var tweenTo = function tweenTo(origin, target) {
60612
60920
  console.log(STATE_MACHINE_NOT_AVAILABLE);
60613
60921
  }
60614
60922
  }
60923
+ /**
60924
+ * TODO: ScriptComponent to handle scripts
60925
+ * e.g.
60926
+ *
60927
+ * const scriptComponent = new ScriptsComponent();
60928
+ * element.addComponent(physicscomponent);
60929
+ *
60930
+ * element.getComponent("physics").play("animationId");
60931
+ */
60932
+
60615
60933
  }, {
60616
60934
  key: "getScript",
60617
60935
  value: function getScript(name) {
@@ -61175,7 +61493,34 @@ var tweenTo = function tweenTo(origin, target) {
61175
61493
  }(EventDispatcher);var _MATERIAL_TEXTURE_MAP;
61176
61494
  var MATERIAL_TEXTURE_MAP = (_MATERIAL_TEXTURE_MAP = {}, _defineProperty$1(_MATERIAL_TEXTURE_MAP, MATERIALS.BASIC, [TEXTURES.ALPHA, TEXTURES.AO, TEXTURES.ENV, TEXTURES.LIGHT, TEXTURES.MAP, TEXTURES.SPECULAR]), _defineProperty$1(_MATERIAL_TEXTURE_MAP, MATERIALS.LAMBERT, [TEXTURES.ALPHA, TEXTURES.AO, TEXTURES.ENV, TEXTURES.LIGHT, TEXTURES.MAP, TEXTURES.SPECULAR, TEXTURES.EMISSIVE]), _defineProperty$1(_MATERIAL_TEXTURE_MAP, MATERIALS.PHONG, [TEXTURES.ALPHA, TEXTURES.AO, TEXTURES.ENV, TEXTURES.LIGHT, TEXTURES.MAP, TEXTURES.SPECULAR, TEXTURES.EMISSIVE, TEXTURES.BUMP, TEXTURES.DISPLACEMENT, TEXTURES.NORMAL]), _defineProperty$1(_MATERIAL_TEXTURE_MAP, MATERIALS.DEPTH, [TEXTURES.ALPHA, TEXTURES.MAP, TEXTURES.DISPLACEMENT]), _defineProperty$1(_MATERIAL_TEXTURE_MAP, MATERIALS.STANDARD, [TEXTURES.ALPHA, TEXTURES.AO, TEXTURES.ENV, TEXTURES.LIGHT, TEXTURES.MAP, TEXTURES.EMISSIVE, TEXTURES.BUMP, TEXTURES.DISPLACEMENT, TEXTURES.NORMAL, TEXTURES.METALNESS, TEXTURES.ROUGHNESS]), _defineProperty$1(_MATERIAL_TEXTURE_MAP, MATERIALS.THREE_TOON, [TEXTURES.ALPHA, TEXTURES.AO, TEXTURES.BUMP, TEXTURES.DISPLACEMENT, TEXTURES.EMISSIVE, TEXTURES.GRADIENT, TEXTURES.LIGHT, TEXTURES.MAP, TEXTURES.NORMAL]), _MATERIAL_TEXTURE_MAP);var material_constants=/*#__PURE__*/Object.freeze({__proto__:null,MATERIAL_TEXTURE_MAP:MATERIAL_TEXTURE_MAP});var isTextureMapAllowedForMaterial = function isTextureMapAllowedForMaterial(materialType, textureType) {
61177
61495
  return MATERIAL_TEXTURE_MAP[materialType] && MATERIAL_TEXTURE_MAP[materialType].includes(textureType);
61178
- };var _excluded$7 = ["position", "quaternion"],
61496
+ };var serializeMap = function serializeMap(map) {
61497
+ var reducer = function reducer(m) {
61498
+ return _toConsumableArray(m).reduce(function (a, v) {
61499
+ a[v[0]] = v[1];
61500
+ return a;
61501
+ }, {});
61502
+ };
61503
+
61504
+ var replacer = function replacer(key, value) {
61505
+ return value instanceof Map ? reducer(value) : value;
61506
+ };
61507
+
61508
+ return JSON.stringify(map, replacer);
61509
+ };
61510
+ var deserialiseMap = function deserialiseMap(o) {
61511
+ var json = JSON.parse(o);
61512
+ var m = new Map();
61513
+ Object.keys(json).forEach(function (k) {
61514
+ m.set(k, json[k]);
61515
+ });
61516
+ return m;
61517
+ };
61518
+ var populateMap = function populateMap(map, data) {
61519
+ Object.keys(data).forEach(function (k) {
61520
+ map.set(k, data[k]);
61521
+ });
61522
+ return map;
61523
+ };var map$1=/*#__PURE__*/Object.freeze({__proto__:null,serializeMap:serializeMap,deserialiseMap:deserialiseMap,populateMap:populateMap});var _excluded$7 = ["position", "quaternion"],
61179
61524
  _excluded2 = ["applyPhysicsUpdate"],
61180
61525
  _excluded3 = ["dt", "event"];
61181
61526
  var COLLIDER_TAG = "collider";
@@ -61387,13 +61732,13 @@ var Element$1 = /*#__PURE__*/function (_Entity) {
61387
61732
  geometry = _options.geometry,
61388
61733
  material = _options.material,
61389
61734
  _body = _options.body;
61390
- _this.textures = {};
61735
+ _this.textures = new Map();
61391
61736
  _this.opacity = 1;
61392
61737
  _this.options = _objectSpread2$1(_objectSpread2$1({}, _options), {}, {
61393
61738
  name: name
61394
61739
  });
61395
61740
  _this.physicsOptions = DEFAULT_PHYSICS_OPTIONS;
61396
- _this.physicsState = {};
61741
+ _this.physicsState = new Map();
61397
61742
 
61398
61743
  _this.setBody({
61399
61744
  geometry: geometry,
@@ -61507,6 +61852,16 @@ var Element$1 = /*#__PURE__*/function (_Entity) {
61507
61852
  });
61508
61853
  }
61509
61854
  }
61855
+ /**
61856
+ * TODO: the entire animation system needs to be a component
61857
+ * e.g.
61858
+ *
61859
+ * const animationComponent = new AnimationComponent();
61860
+ * element.addComponent(animationComponent);
61861
+ *
61862
+ * element.getComponent("animation").play("animationId");
61863
+ */
61864
+
61510
61865
  }, {
61511
61866
  key: "setArmature",
61512
61867
  value: function setArmature(armature) {
@@ -61590,6 +61945,16 @@ var Element$1 = /*#__PURE__*/function (_Entity) {
61590
61945
 
61591
61946
  return [];
61592
61947
  }
61948
+ /**
61949
+ * TODO: the entire physics system needs to be a component
61950
+ * e.g.
61951
+ *
61952
+ * const physicscomponent = new PhysicsComponent();
61953
+ * element.addComponent(physicscomponent);
61954
+ *
61955
+ * element.getComponent("physics").play("animationId");
61956
+ */
61957
+
61593
61958
  }, {
61594
61959
  key: "setPhysicsOptions",
61595
61960
  value: function setPhysicsOptions() {
@@ -61617,14 +61982,12 @@ var Element$1 = /*#__PURE__*/function (_Entity) {
61617
61982
  _ref10.event;
61618
61983
  var data = _objectWithoutProperties(_ref10, _excluded3);
61619
61984
 
61620
- var physicsState = _objectSpread2$1(_objectSpread2$1({}, this.physicsState), data);
61621
-
61622
- this.physicsState = physicsState;
61985
+ populateMap(this.physicsState, data);
61623
61986
  }
61624
61987
  }, {
61625
61988
  key: "getPhysicsState",
61626
61989
  value: function getPhysicsState(key) {
61627
- return key ? this.physicsState[key] : this.physicsState;
61990
+ return key ? this.physicsState.get(key) : this.physicsState;
61628
61991
  }
61629
61992
  }, {
61630
61993
  key: "enablePhysics",
@@ -61701,7 +62064,9 @@ var Element$1 = /*#__PURE__*/function (_Entity) {
61701
62064
  }
61702
62065
  }, {
61703
62066
  key: "setColor",
61704
- value: function setColor(color) {
62067
+ value: function setColor() {
62068
+ var color = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.COLOR];
62069
+
61705
62070
  var _setColor = function _setColor(material) {
61706
62071
  return material.color = new Color$1(color);
61707
62072
  };
@@ -61715,22 +62080,356 @@ var Element$1 = /*#__PURE__*/function (_Entity) {
61715
62080
  }, {
61716
62081
  key: "getColor",
61717
62082
  value: function getColor() {
61718
- if (hasMaterial(this.getBody())) {
61719
- return this.body.material.color;
62083
+ return extractMaterialProperty(this.getBody(), PROPERTIES.COLOR);
62084
+ }
62085
+ }, {
62086
+ key: "setFog",
62087
+ value: function setFog() {
62088
+ var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.FOG];
62089
+
62090
+ var _setFog = function _setFog(material) {
62091
+ return material[PROPERTIES.FOG] = enabled;
62092
+ };
62093
+
62094
+ applyMaterialChange(this.getBody(), _setFog);
62095
+ }
62096
+ }, {
62097
+ key: "getFog",
62098
+ value: function getFog() {
62099
+ return extractMaterialProperty(this.getBody(), PROPERTIES.FOG);
62100
+ }
62101
+ }, {
62102
+ key: "setReflectivity",
62103
+ value: function setReflectivity() {
62104
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.REFLECTIVITY];
62105
+
62106
+ var _setReflectivity = function _setReflectivity(material) {
62107
+ return material[PROPERTIES.REFLECTIVITY] = value;
62108
+ };
62109
+
62110
+ if (value != undefined) {
62111
+ applyMaterialChange(this.getBody(), _setReflectivity);
61720
62112
  } else {
61721
- var found;
61722
- this.body.traverse(function (child) {
61723
- if (hasMaterial(child) && !found) {
61724
- found = child.material.color;
61725
- }
61726
- });
61727
- return found;
62113
+ console.warn(ELEMENT_SET_REFLECTIVITY_MISSING_VALUE);
61728
62114
  }
61729
62115
  }
62116
+ }, {
62117
+ key: "getReflectivity",
62118
+ value: function getReflectivity() {
62119
+ return extractMaterialProperty(this.getBody(), PROPERTIES.REFLECTIVITY);
62120
+ }
62121
+ }, {
62122
+ key: "setRefractionRatio",
62123
+ value: function setRefractionRatio() {
62124
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.REFRACTION_RATIO];
62125
+
62126
+ var _setRefractionRatio = function _setRefractionRatio(material) {
62127
+ return material[PROPERTIES.REFRACTION_RATIO] = value;
62128
+ };
62129
+
62130
+ if (value != undefined) {
62131
+ applyMaterialChange(this.getBody(), _setRefractionRatio);
62132
+ } else {
62133
+ console.warn(ELEMENT_SET_REFRACTION_RATIO_MISSING_VALUE);
62134
+ }
62135
+ }
62136
+ }, {
62137
+ key: "getRefractionRatio",
62138
+ value: function getRefractionRatio() {
62139
+ return extractMaterialProperty(this.getBody(), PROPERTIES.REFRACTION_RATIO);
62140
+ }
62141
+ }, {
62142
+ key: "setDepthWrite",
62143
+ value: function setDepthWrite() {
62144
+ var flag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.DEPTH_WRITE];
62145
+
62146
+ var _setDepthWrite = function _setDepthWrite(material) {
62147
+ return material[PROPERTIES.DEPTH_WRITE] = flag;
62148
+ };
62149
+
62150
+ applyMaterialChange(this.getBody(), _setDepthWrite);
62151
+ }
62152
+ }, {
62153
+ key: "getDepthWrite",
62154
+ value: function getDepthWrite() {
62155
+ return extractMaterialProperty(this.getBody(), PROPERTIES.DEPTH_WRITE);
62156
+ }
62157
+ }, {
62158
+ key: "setDepthTest",
62159
+ value: function setDepthTest() {
62160
+ var flag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.DEPTH_TEST];
62161
+
62162
+ var _setDepthTest = function _setDepthTest(material) {
62163
+ return material[PROPERTIES.DEPTH_TEST] = flag;
62164
+ };
62165
+
62166
+ applyMaterialChange(this.getBody(), _setDepthTest);
62167
+ }
62168
+ }, {
62169
+ key: "getDepthTest",
62170
+ value: function getDepthTest() {
62171
+ return extractMaterialProperty(this.getBody(), PROPERTIES.DEPTH_TEST);
62172
+ }
62173
+ }, {
62174
+ key: "setCombine",
62175
+ value: function setCombine() {
62176
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.COMBINE];
62177
+
62178
+ var _setCombine = function _setCombine(material) {
62179
+ return material[PROPERTIES.COMBINE] = value;
62180
+ };
62181
+
62182
+ applyMaterialChange(this.getBody(), _setCombine);
62183
+ }
62184
+ }, {
62185
+ key: "getCombine",
62186
+ value: function getCombine() {
62187
+ return extractMaterialProperty(this.getBody(), PROPERTIES.COMBINE);
62188
+ }
62189
+ }, {
62190
+ key: "setFlatShading",
62191
+ value: function setFlatShading() {
62192
+ var flag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.FLAT_SHADING];
62193
+
62194
+ var _setFlatShading = function _setFlatShading(material) {
62195
+ return material[PROPERTIES.FLAT_SHADING] = flag;
62196
+ };
62197
+
62198
+ applyMaterialChange(this.getBody(), _setFlatShading);
62199
+ }
62200
+ }, {
62201
+ key: "getFlatShading",
62202
+ value: function getFlatShading() {
62203
+ return extractMaterialProperty(this.getBody(), PROPERTIES.FLAT_SHADING);
62204
+ }
62205
+ }, {
62206
+ key: "setShininess",
62207
+ value: function setShininess() {
62208
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.SHININESS];
62209
+
62210
+ var _setShininess = function _setShininess(material) {
62211
+ return material[PROPERTIES.SHININESS] = value;
62212
+ };
62213
+
62214
+ applyMaterialChange(this.getBody(), _setShininess);
62215
+ }
62216
+ }, {
62217
+ key: "getShininess",
62218
+ value: function getShininess() {
62219
+ return extractMaterialProperty(this.getBody(), PROPERTIES.SHININESS);
62220
+ }
62221
+ }, {
62222
+ key: "setSpecularColor",
62223
+ value: function setSpecularColor() {
62224
+ var color = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.SPECULAR];
62225
+
62226
+ var _setSpecularColor = function _setSpecularColor(material) {
62227
+ return material[PROPERTIES.SPECULAR] = new Color$1(color);
62228
+ };
62229
+
62230
+ applyMaterialChange(this.getBody(), _setSpecularColor);
62231
+ }
62232
+ }, {
62233
+ key: "getSpecularColor",
62234
+ value: function getSpecularColor() {
62235
+ return extractMaterialProperty(this.getBody(), PROPERTIES.SPECULAR);
62236
+ }
62237
+ }, {
62238
+ key: "setNormalScale",
62239
+ value: function setNormalScale() {
62240
+ var normalScale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.NORMAL_SCALE];
62241
+
62242
+ var _setNormalScale = function _setNormalScale(material) {
62243
+ return material[PROPERTIES.NORMAL_SCALE] = normalScale;
62244
+ };
62245
+
62246
+ applyMaterialChange(this.getBody(), _setNormalScale);
62247
+ }
62248
+ }, {
62249
+ key: "getNormalScale",
62250
+ value: function getNormalScale() {
62251
+ return extractMaterialProperty(this.getBody(), PROPERTIES.NORMAL_SCALE);
62252
+ }
62253
+ }, {
62254
+ key: "setMetalness",
62255
+ value: function setMetalness() {
62256
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.METALNESS];
62257
+
62258
+ var _setMetalness = function _setMetalness(material) {
62259
+ return material[PROPERTIES.METALNESS] = value;
62260
+ };
62261
+
62262
+ applyMaterialChange(this.getBody(), _setMetalness);
62263
+ }
62264
+ }, {
62265
+ key: "getMetalness",
62266
+ value: function getMetalness() {
62267
+ return extractMaterialProperty(this.getBody(), PROPERTIES.METALNESS);
62268
+ }
62269
+ }, {
62270
+ key: "setRoughness",
62271
+ value: function setRoughness() {
62272
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.ROUGHNESS];
62273
+
62274
+ var _setRoughness = function _setRoughness(material) {
62275
+ return material[PROPERTIES.ROUGHNESS] = value;
62276
+ };
62277
+
62278
+ applyMaterialChange(this.getBody(), _setRoughness);
62279
+ }
62280
+ }, {
62281
+ key: "getRoughness",
62282
+ value: function getRoughness() {
62283
+ return extractMaterialProperty(this.getBody(), PROPERTIES.ROUGHNESS);
62284
+ }
62285
+ }, {
62286
+ key: "setEmissive",
62287
+ value: function setEmissive() {
62288
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.EMISSIVE];
62289
+
62290
+ var _setEmissive = function _setEmissive(material) {
62291
+ return material[PROPERTIES.EMISSIVE] = new Color$1(value);
62292
+ };
62293
+
62294
+ applyMaterialChange(this.getBody(), _setEmissive);
62295
+ }
62296
+ }, {
62297
+ key: "getEmissive",
62298
+ value: function getEmissive() {
62299
+ return extractMaterialProperty(this.getBody(), PROPERTIES.EMISSIVE);
62300
+ }
62301
+ }, {
62302
+ key: "setEmissiveIntensity",
62303
+ value: function setEmissiveIntensity() {
62304
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.EMISSIVE_INTENSITY];
62305
+
62306
+ var _setEmissiveIntensity = function _setEmissiveIntensity(material) {
62307
+ return material[PROPERTIES.EMISSIVE_INTENSITY] = value;
62308
+ };
62309
+
62310
+ applyMaterialChange(this.getBody(), _setEmissiveIntensity);
62311
+ }
62312
+ }, {
62313
+ key: "getEmissiveIntensity",
62314
+ value: function getEmissiveIntensity() {
62315
+ return extractMaterialProperty(this.getBody(), PROPERTIES.EMISSIVE_INTENSITY);
62316
+ }
62317
+ }, {
62318
+ key: "setLightMapIntensity",
62319
+ value: function setLightMapIntensity() {
62320
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.LIGHT_MAP_INTENSITY];
62321
+
62322
+ var _setLightMapIntensity = function _setLightMapIntensity(material) {
62323
+ return material[PROPERTIES.LIGHT_MAP_INTENSITY] = value;
62324
+ };
62325
+
62326
+ applyMaterialChange(this.getBody(), _setLightMapIntensity);
62327
+ }
62328
+ }, {
62329
+ key: "getLightMapIntensity",
62330
+ value: function getLightMapIntensity() {
62331
+ return extractMaterialProperty(this.getBody(), PROPERTIES.LIGHT_MAP_INTENSITY);
62332
+ }
62333
+ }, {
62334
+ key: "setAOMapIntensity",
62335
+ value: function setAOMapIntensity() {
62336
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.AO_MAP_INTENSITY];
62337
+
62338
+ var _setAOMapIntensity = function _setAOMapIntensity(material) {
62339
+ return material[PROPERTIES.AO_MAP_INTENSITY] = value;
62340
+ };
62341
+
62342
+ applyMaterialChange(this.getBody(), _setAOMapIntensity);
62343
+ }
62344
+ }, {
62345
+ key: "getAOMapIntensity",
62346
+ value: function getAOMapIntensity() {
62347
+ return extractMaterialProperty(this.getBody(), PROPERTIES.AO_MAP_INTENSITY);
62348
+ }
62349
+ }, {
62350
+ key: "setEnvMapIntensity",
62351
+ value: function setEnvMapIntensity() {
62352
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.ENV_MAP_INTENSITY];
62353
+
62354
+ var _setEnvMapIntensity = function _setEnvMapIntensity(material) {
62355
+ return material[PROPERTIES.ENV_MAP_INTENSITY] = value;
62356
+ };
62357
+
62358
+ applyMaterialChange(this.getBody(), _setEnvMapIntensity);
62359
+ }
62360
+ }, {
62361
+ key: "getEnvMapIntensity",
62362
+ value: function getEnvMapIntensity() {
62363
+ return extractMaterialProperty(this.getBody(), PROPERTIES.ENV_MAP_INTENSITY);
62364
+ }
62365
+ }, {
62366
+ key: "setDisplacementScale",
62367
+ value: function setDisplacementScale() {
62368
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.DISPLACEMENT_SCALE];
62369
+
62370
+ var _setDisplacementScale = function _setDisplacementScale(material) {
62371
+ return material[PROPERTIES.DISPLACEMENT_SCALE] = value;
62372
+ };
62373
+
62374
+ applyMaterialChange(this.getBody(), _setDisplacementScale);
62375
+ }
62376
+ }, {
62377
+ key: "getDisplacementScale",
62378
+ value: function getDisplacementScale() {
62379
+ return extractMaterialProperty(this.getBody(), PROPERTIES.DISPLACEMENT_SCALE);
62380
+ }
62381
+ }, {
62382
+ key: "setDisplacementBias",
62383
+ value: function setDisplacementBias() {
62384
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.DISPLACEMENT_BIAS];
62385
+
62386
+ var _setDisplacementBias = function _setDisplacementBias(material) {
62387
+ return material[PROPERTIES.DISPLACEMENT_BIAS] = value;
62388
+ };
62389
+
62390
+ applyMaterialChange(this.getBody(), _setDisplacementBias);
62391
+ }
62392
+ }, {
62393
+ key: "getDisplacementBias",
62394
+ value: function getDisplacementBias() {
62395
+ return extractMaterialProperty(this.getBody(), PROPERTIES.DISPLACEMENT_BIAS);
62396
+ }
62397
+ }, {
62398
+ key: "setBumpScale",
62399
+ value: function setBumpScale() {
62400
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.BUMP_SCALE];
62401
+
62402
+ var _setBumpScale = function _setBumpScale(material) {
62403
+ return material[PROPERTIES.BUMP_SCALE] = value;
62404
+ };
62405
+
62406
+ applyMaterialChange(this.getBody(), _setBumpScale);
62407
+ }
62408
+ }, {
62409
+ key: "getBumpScale",
62410
+ value: function getBumpScale() {
62411
+ return extractMaterialProperty(this.getBody(), PROPERTIES.BUMP_SCALE);
62412
+ }
62413
+ }, {
62414
+ key: "setSide",
62415
+ value: function setSide() {
62416
+ var side = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MATERIAL_PROPERTIES_DEFAULT_VALUES[PROPERTIES.SIDE];
62417
+
62418
+ var _setSide = function _setSide(material) {
62419
+ return material[PROPERTIES.SIDE] = side;
62420
+ };
62421
+
62422
+ applyMaterialChange(this.getBody(), _setSide);
62423
+ }
62424
+ }, {
62425
+ key: "getSide",
62426
+ value: function getSide() {
62427
+ return extractMaterialProperty(this.getBody(), PROPERTIES.SIDE);
62428
+ }
61730
62429
  }, {
61731
62430
  key: "recordTexture",
61732
62431
  value: function recordTexture(textureId, textureType) {
61733
- this.textures[textureType] = textureId;
62432
+ this.textures.set(textureType, textureId);
61734
62433
  }
61735
62434
  }, {
61736
62435
  key: "setTexture",
@@ -61824,6 +62523,43 @@ var Element$1 = /*#__PURE__*/function (_Entity) {
61824
62523
 
61825
62524
  applyMaterialChange(this.getBody(), _setOpacity);
61826
62525
  }
62526
+ }, {
62527
+ key: "getOpacity",
62528
+ value: function getOpacity() {
62529
+ return extractMaterialProperty(this.getBody(), PROPERTIES.OPACITY);
62530
+ }
62531
+ }, {
62532
+ key: "setTransparent",
62533
+ value: function setTransparent() {
62534
+ var flag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
62535
+
62536
+ var _setTransparent = function _setTransparent(material) {
62537
+ return material.transparent = flag;
62538
+ };
62539
+
62540
+ applyMaterialChange(this.getBody(), _setTransparent);
62541
+ }
62542
+ }, {
62543
+ key: "isTransparent",
62544
+ value: function isTransparent() {
62545
+ return extractMaterialProperty(this.getBody(), PROPERTIES.TRANSPARENT);
62546
+ }
62547
+ }, {
62548
+ key: "setVisible",
62549
+ value: function setVisible() {
62550
+ var flag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
62551
+
62552
+ var _setVisible = function _setVisible(material) {
62553
+ return material.visible = flag;
62554
+ };
62555
+
62556
+ applyMaterialChange(this.getBody(), _setVisible);
62557
+ }
62558
+ }, {
62559
+ key: "isVisible",
62560
+ value: function isVisible() {
62561
+ return extractMaterialProperty(this.getBody(), PROPERTIES.VISIBLE);
62562
+ }
61827
62563
  }, {
61828
62564
  key: "fadeTo",
61829
62565
  value: function fadeTo() {
@@ -61917,11 +62653,11 @@ var Element$1 = /*#__PURE__*/function (_Entity) {
61917
62653
  var color = this.getColor();
61918
62654
  return _objectSpread2$1(_objectSpread2$1({}, _get(_getPrototypeOf(Element.prototype), "toJSON", this).call(this, parseJSON)), {}, {
61919
62655
  physics: {
61920
- state: this.getPhysicsState(),
62656
+ state: serializeMap(this.getPhysicsState()),
61921
62657
  options: this.getPhysicsOptions()
61922
62658
  },
61923
62659
  body: this.body.toJSON(),
61924
- textures: this.textures,
62660
+ textures: serializeMap(this.textures),
61925
62661
  materialType: this.getMaterialType(),
61926
62662
  opacity: this.opacity,
61927
62663
  color: parseJSON ? serializeColor(color) : color
@@ -85549,14 +86285,15 @@ var Proton = three_proton_min.exports;var ParticleEmitterGroup = /*#__PURE__*/fu
85549
86285
  _classCallCheck(this, ParticleEmitterGroup);
85550
86286
 
85551
86287
  _this = _super.call(this, {
85552
- tag: 'particle '
86288
+ tag: "particle "
85553
86289
  });
85554
86290
  var _options$name = options.name,
85555
- name = _options$name === void 0 ? generateRandomName('EmitterGroup') : _options$name,
86291
+ name = _options$name === void 0 ? generateRandomName("EmitterGroup") : _options$name,
85556
86292
  system = options.system;
85557
86293
  _this.options = _objectSpread2$1(_objectSpread2$1({}, options), {}, {
85558
86294
  name: name
85559
86295
  });
86296
+ _this.system = new Map();
85560
86297
 
85561
86298
  _this.setBody({
85562
86299
  body: new Object3D()
@@ -85596,10 +86333,8 @@ var Proton = three_proton_min.exports;var ParticleEmitterGroup = /*#__PURE__*/fu
85596
86333
  }, {
85597
86334
  key: "isProtonEmitter",
85598
86335
  value: function isProtonEmitter() {
85599
- var _this2 = this;
85600
-
85601
- Object.keys(this.system).forEach(function (emitterId) {
85602
- return _this2.system[emitterId].isProtonEmitter();
86336
+ this.system.forEach(function (emitter) {
86337
+ return emitter.isProtonEmitter();
85603
86338
  });
85604
86339
  }
85605
86340
  }, {
@@ -85610,30 +86345,26 @@ var Proton = three_proton_min.exports;var ParticleEmitterGroup = /*#__PURE__*/fu
85610
86345
  }, {
85611
86346
  key: "hasSystem",
85612
86347
  value: function hasSystem() {
85613
- return !!this.system && !!Object.keys(this.system).length;
86348
+ return !!this.system && !!this.system.size > 0;
85614
86349
  }
85615
86350
  }, {
85616
86351
  key: "isSystemDead",
85617
86352
  value: function isSystemDead() {
85618
- var _this3 = this;
85619
-
85620
- Object.keys(this.system).forEach(function (emitterId) {
85621
- return _this3.system[emitterId].isSystemDead();
86353
+ this.system.forEach(function (emitter) {
86354
+ return emitter.isSystemDead();
85622
86355
  });
85623
86356
  }
85624
86357
  }, {
85625
86358
  key: "setSystem",
85626
86359
  value: function setSystem() {
85627
- var _this4 = this;
86360
+ var _this2 = this;
85628
86361
 
85629
86362
  var system = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
85630
- this.system = system.reduce(function (system, emitter) {
85631
- system[emitter.getName()] = emitter;
86363
+ system.forEach(function (emitter) {
86364
+ _this2.add(emitter);
85632
86365
 
85633
- _this4.add(emitter);
85634
-
85635
- return system;
85636
- }, {});
86366
+ _this2.system.set(emitter.getName(), emitter);
86367
+ });
85637
86368
  }
85638
86369
  }, {
85639
86370
  key: "getSystem",
@@ -85643,7 +86374,7 @@ var Proton = three_proton_min.exports;var ParticleEmitterGroup = /*#__PURE__*/fu
85643
86374
  }, {
85644
86375
  key: "getEmitter",
85645
86376
  value: function getEmitter(name) {
85646
- var emitter = this.system[name];
86377
+ var emitter = this.system.get(name);
85647
86378
 
85648
86379
  if (emitter) {
85649
86380
  return emitter;
@@ -85654,61 +86385,49 @@ var Proton = three_proton_min.exports;var ParticleEmitterGroup = /*#__PURE__*/fu
85654
86385
  }, {
85655
86386
  key: "forEach",
85656
86387
  value: function forEach(cb) {
85657
- var _this5 = this;
85658
-
85659
- Object.keys(this.system).forEach(function (k) {
85660
- cb(_this5.system[k]);
86388
+ this.system.forEach(function (emitter) {
86389
+ return cb(emitter);
85661
86390
  });
85662
86391
  }
85663
86392
  }, {
85664
86393
  key: "emit",
85665
86394
  value: function emit() {
85666
- var _this6 = this;
85667
-
85668
86395
  for (var _len = arguments.length, options = new Array(_len), _key = 0; _key < _len; _key++) {
85669
86396
  options[_key] = arguments[_key];
85670
86397
  }
85671
86398
 
85672
86399
  if (this.hasSystem()) {
85673
- Object.keys(this.system).forEach(function (emitterId) {
85674
- var _this6$system$emitter;
85675
-
85676
- return (_this6$system$emitter = _this6.system[emitterId]).emit.apply(_this6$system$emitter, options);
86400
+ this.system.forEach(function (emitter) {
86401
+ return emitter.emit.apply(emitter, options);
85677
86402
  });
85678
86403
  }
85679
86404
  }
85680
86405
  }, {
85681
86406
  key: "stop",
85682
86407
  value: function stop() {
85683
- var _this7 = this;
85684
-
85685
86408
  if (this.hasSystem()) {
85686
- Object.keys(this.system).forEach(function (emitterId) {
85687
- return _this7.system[emitterId].stop();
86409
+ this.system.forEach(function (emitter) {
86410
+ return emitter.stop();
85688
86411
  });
85689
86412
  }
85690
86413
  }
85691
86414
  }, {
85692
86415
  key: "dispose",
85693
86416
  value: function dispose() {
85694
- var _this8 = this;
85695
-
85696
86417
  _get(_getPrototypeOf(ParticleEmitterGroup.prototype), "dispose", this).call(this);
85697
86418
 
85698
- Object.keys(this.system).forEach(function (emitterId) {
85699
- return _this8.system[emitterId].dispose();
86419
+ this.system.forEach(function (emitter) {
86420
+ return emitter.dispose();
85700
86421
  });
85701
86422
  }
85702
86423
  }, {
85703
86424
  key: "update",
85704
86425
  value: function update(dt) {
85705
- var _this9 = this;
85706
-
85707
86426
  _get(_getPrototypeOf(ParticleEmitterGroup.prototype), "update", this).call(this, dt);
85708
86427
 
85709
86428
  if (this.hasSystem()) {
85710
- Object.keys(this.system).forEach(function (emitterId) {
85711
- return _this9.system[emitterId].update(dt);
86429
+ this.system.forEach(function (emitter) {
86430
+ return emitter.update(dt);
85712
86431
  });
85713
86432
  }
85714
86433
  }
@@ -86129,23 +86848,23 @@ var Trail = /*#__PURE__*/function (_ParticleEmitterGroup) {
86129
86848
 
86130
86849
  return Trail;
86131
86850
  }(ParticleEmitterGroup);var PARTICLES = {
86132
- RAIN: 'rain',
86133
- EXPLOSION: 'explosion',
86134
- FOUNTAIN: 'fountain',
86135
- FIRE: 'fire',
86136
- SNOW: 'snow',
86137
- TRAIL: 'trail'
86851
+ RAIN: "rain",
86852
+ EXPLOSION: "explosion",
86853
+ FOUNTAIN: "fountain",
86854
+ FIRE: "fire",
86855
+ SNOW: "snow",
86856
+ TRAIL: "trail"
86138
86857
  };
86858
+ var DEPRECATED_PARTICLES = [PARTICLES.RAIN, PARTICLES.FOUNTAIN, PARTICLES.SNOW];
86139
86859
  var GROUP = PARTICLE_EMITTER_TYPES.GROUP;
86140
86860
  var Particles = /*#__PURE__*/function () {
86141
86861
  function Particles() {
86142
- var _this = this,
86143
- _this$map;
86862
+ var _this = this;
86144
86863
 
86145
86864
  _classCallCheck(this, Particles);
86146
86865
 
86147
86866
  _defineProperty$1(this, "isRegisteredEmitter", function (name) {
86148
- return typeof name === 'string' && name in _this.map;
86867
+ return typeof name === "string" && _this.map.has(name);
86149
86868
  });
86150
86869
 
86151
86870
  _defineProperty$1(this, "hasEmitters", function () {
@@ -86154,15 +86873,20 @@ var Particles = /*#__PURE__*/function () {
86154
86873
 
86155
86874
  _defineProperty$1(this, "updateEmitters", function (dt) {
86156
86875
  _this.toDispose = [];
86157
- Object.keys(_this.emitters).forEach(function (uuid) {
86158
- var emitter = _this.emitters[uuid];
86159
86876
 
86877
+ _this.emitters.forEach(function (emitter) {
86160
86878
  _this.updateSingleEmitter(emitter, dt);
86161
86879
  });
86162
86880
  });
86163
86881
 
86164
- this.map = (_this$map = {}, _defineProperty$1(_this$map, PARTICLES.RAIN, Rain), _defineProperty$1(_this$map, PARTICLES.EXPLOSION, Explosion), _defineProperty$1(_this$map, PARTICLES.FOUNTAIN, Fountain), _defineProperty$1(_this$map, PARTICLES.FIRE, Fire), _defineProperty$1(_this$map, PARTICLES.SNOW, Snow), _defineProperty$1(_this$map, PARTICLES.TRAIL, Trail), _this$map);
86165
- this.emitters = {};
86882
+ this.map = new Map();
86883
+ this.map.set(PARTICLES.RAIN, Rain);
86884
+ this.map.set(PARTICLES.EXPLOSION, Explosion);
86885
+ this.map.set(PARTICLES.FOUNTAIN, Fountain);
86886
+ this.map.set(PARTICLES.FIRE, Fire);
86887
+ this.map.set(PARTICLES.SNOW, Snow);
86888
+ this.map.set(PARTICLES.TRAIL, Trail);
86889
+ this.emitters = new Map();
86166
86890
  this.toDispose = [];
86167
86891
  }
86168
86892
 
@@ -86180,12 +86904,12 @@ var Particles = /*#__PURE__*/function () {
86180
86904
  }, {
86181
86905
  key: "get",
86182
86906
  value: function get(name) {
86183
- return this.map[name] || null;
86907
+ return this.map.get(name) || null;
86184
86908
  }
86185
86909
  }, {
86186
86910
  key: "registerEmitter",
86187
86911
  value: function registerEmitter(key, Emitter) {
86188
- this.map[key] = Emitter;
86912
+ this.map.set(key, Emitter);
86189
86913
  }
86190
86914
  }, {
86191
86915
  key: "isValidEmitter",
@@ -86205,6 +86929,11 @@ var Particles = /*#__PURE__*/function () {
86205
86929
  var _this2 = this;
86206
86930
 
86207
86931
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
86932
+
86933
+ if (DEPRECATED_PARTICLES.includes(_emitter)) {
86934
+ console.warn(DEPRECATIONS.PARTICLES_OLD);
86935
+ }
86936
+
86208
86937
  var emitter;
86209
86938
 
86210
86939
  if (this.isRegisteredEmitter(_emitter)) {
@@ -86217,7 +86946,7 @@ var Particles = /*#__PURE__*/function () {
86217
86946
  return;
86218
86947
  }
86219
86948
 
86220
- this.emitters[emitter.uuid()] = emitter;
86949
+ this.emitters.set(emitter.uuid(), emitter);
86221
86950
 
86222
86951
  if (emitter.getType() === GROUP) {
86223
86952
  emitter.forEach(function (singleEmitter) {
@@ -86263,15 +86992,15 @@ var Particles = /*#__PURE__*/function () {
86263
86992
  var _this3 = this;
86264
86993
 
86265
86994
  this.toDispose.forEach(function (uuid) {
86266
- var emitter = _this3.emitters[uuid];
86995
+ var emitter = _this3.emitters.get(uuid);
86267
86996
 
86268
86997
  if (emitter.isProtonEmitter()) {
86269
86998
  _this3.removeProtonEmitter(emitter);
86270
86999
  } else {
86271
- _this3.emitters[uuid].dispose();
87000
+ emitter.dispose();
86272
87001
  }
86273
87002
 
86274
- delete _this3.emitters[uuid];
87003
+ _this3.emitters.delete(uuid);
86275
87004
  });
86276
87005
  }
86277
87006
  }, {
@@ -94507,4 +95236,4 @@ var Shaders$1 = new Shaders();var Shader = function Shader(name, attributes, uni
94507
95236
  } else {
94508
95237
  this.instance = this.shader.instance;
94509
95238
  }
94510
- };var constants = _objectSpread2$1(_objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, lib_constants), light_contants), material_constants), controls_contants);export{AUDIO_RAMPS,AmbientLight,AmbientSound,Atmosphere,Audio$1 as Audio,Axes,BUILTIN,BaseScript,Box,CONTROL_EVENTS,Camera,Color,Cone,Config$1 as Config,Controls$1 as Controls,Cube,CurveLine,Cylinder,DirectionalSound,ENTITY_EVENTS,ENTITY_TYPES,Element$1 as Element,Entity,EventDispatcher,FEATURES,Features$1 as Features,GameRunner$1 as GameRunner,Grid,HelperSprite,HemisphereLight,INPUT_EVENTS,Images$1 as Images,Input$1 as Input,Label,LabelComponent,Level,Lights$1 as Lights,Line,Mirror,Models$1 as Models,Ocean,PALETTES,PARTICLES,constants$1 as PHYSICS_CONSTANTS,PHYSICS_EVENTS,ParticleEmitter,ParticleEmitterGroup,Particles$1 as Particles,index$1 as Partykals,Physics$1 as Physics,Plane,PointLight,PostProcessing$1 as PostProcessing,Proton,ProtonParticleEmitter,Provider,Router$1 as Router,Scene$1 as Scene,Scripts$1 as Scripts,Shader,Sky,Skybox,Sound,Sphere,SpotLight,Sprite,Stats$1 as Stats,SunLight,three_module as THREE,THREEJS_CONTROL_EVENTS,Universe$1 as Universe,Vector3$1 as Vector3,Water,author,connect,constants,createElement,easing,functions,hitbox as hitboxUtils,index_esm as inferno,math,utils as physicsUtils,index$2 as rxjs,index as store,strings,uuid$1 as uuid,workers,index$3 as xstate};
95239
+ };var constants = _objectSpread2$1(_objectSpread2$1(_objectSpread2$1(_objectSpread2$1({}, lib_constants), light_contants), material_constants), controls_contants);export{AUDIO_RAMPS,AmbientLight,AmbientSound,Atmosphere,Audio$1 as Audio,Axes,BUILTIN,BaseScript,Box,CONTROL_EVENTS,Camera,Color,Cone,Config$1 as Config,Controls$1 as Controls,Cube,CurveLine,Cylinder,DirectionalSound,ENTITY_EVENTS,ENTITY_TYPES,Element$1 as Element,Entity,EventDispatcher,FEATURES,Features$1 as Features,GameRunner$1 as GameRunner,Grid,HelperSprite,HemisphereLight,INPUT_EVENTS,Images$1 as Images,Input$1 as Input,Label,LabelComponent,Level,Lights$1 as Lights,Line,Mirror,Models$1 as Models,Ocean,PALETTES,PARTICLES,constants$1 as PHYSICS_CONSTANTS,PHYSICS_EVENTS,ParticleEmitter,ParticleEmitterGroup,Particles$1 as Particles,index$1 as Partykals,Physics$1 as Physics,Plane,PointLight,PostProcessing$1 as PostProcessing,Proton,ProtonParticleEmitter,Provider,Router$1 as Router,Scene$1 as Scene,Scripts$1 as Scripts,Shader,Sky,Skybox,Sound,Sphere,SpotLight,Sprite,Stats$1 as Stats,SunLight,three_module as THREE,THREEJS_CONTROL_EVENTS,Universe$1 as Universe,Vector3$1 as Vector3,Water,author,connect,constants,createElement,easing,functions,hitbox as hitboxUtils,index_esm as inferno,map$1 as map,math,utils as physicsUtils,index$2 as rxjs,index as store,strings,uuid$1 as uuid,workers,index$3 as xstate};