@realsee/five 5.0.0-alpha.162 → 5.0.0-alpha.164

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 (158) hide show
  1. package/docs/assets/search.js +1 -1
  2. package/docs/classes/five.AnimationFrameLoop.html +1 -1
  3. package/docs/classes/five.BVH.html +1 -1
  4. package/docs/classes/five.BVHIntersect.html +1 -1
  5. package/docs/classes/five.BVHNode.html +1 -1
  6. package/docs/classes/five.BVHVector3.html +1 -1
  7. package/docs/classes/five.Camera.html +1 -1
  8. package/docs/classes/five.Clipper.html +1 -1
  9. package/docs/classes/five.Five.html +1 -1
  10. package/docs/classes/five.InternalWebGLRenderer.html +1 -1
  11. package/docs/classes/five.IntersectMesh.html +1 -1
  12. package/docs/classes/five.LegacyPanoCircleMesh.html +3 -3
  13. package/docs/classes/five.Model.html +25 -25
  14. package/docs/classes/five.NetworkSubscribe.html +1 -1
  15. package/docs/classes/five.PBMContainer.html +1 -1
  16. package/docs/classes/five.PBMGroup.html +1 -1
  17. package/docs/classes/five.PBMMaterial.html +1 -1
  18. package/docs/classes/five.PBMMesh.html +1 -1
  19. package/docs/classes/five.PanoCircleMesh.html +4 -4
  20. package/docs/classes/five.PanoCircleMeshDark.html +5 -5
  21. package/docs/classes/five.PanoCircleMeshSolid.html +4 -4
  22. package/docs/classes/five.Scene.html +1 -1
  23. package/docs/classes/five.Subscribe.html +1 -1
  24. package/docs/classes/five.TextureLoader.html +1 -1
  25. package/docs/classes/five.Tile3D.html +2 -2
  26. package/docs/classes/five.Tile3DModel.html +4 -4
  27. package/docs/classes/five.TileBoundingSphere.html +1 -1
  28. package/docs/classes/five.TileCacheNode.html +1 -1
  29. package/docs/classes/five.TileCubeTextureTarget.html +1 -1
  30. package/docs/classes/five.TileCullingVolume.html +1 -1
  31. package/docs/classes/five.TileOrientedBoundingBox.html +1 -1
  32. package/docs/classes/five.TileRequestScheduler.html +1 -1
  33. package/docs/classes/five.Tileset3D.html +4 -4
  34. package/docs/classes/five.Tileset3DTraverser.html +1 -1
  35. package/docs/classes/five.TilesetCache.html +1 -1
  36. package/docs/classes/five.Work.html +1 -1
  37. package/docs/classes/five.XRButton.html +1 -1
  38. package/docs/classes/gltf_loader.DDSLoader.html +1 -1
  39. package/docs/classes/gltf_loader.DRACOLoader.html +1 -1
  40. package/docs/classes/gltf_loader.GLTFLoader.html +1 -1
  41. package/docs/classes/gltf_loader.GLTFObject.html +1 -1
  42. package/docs/classes/gltf_loader.GLTFParser.html +1 -1
  43. package/docs/classes/gltf_loader.THREEGLTFLoader.html +1 -1
  44. package/docs/classes/line.Line.html +1 -1
  45. package/docs/classes/line.LineGeometry.html +1 -1
  46. package/docs/classes/line.LineMaterial.html +1 -1
  47. package/docs/classes/line.LineSegmentsGeometry.html +1 -1
  48. package/docs/classes/line.THREE_Line2.html +1 -1
  49. package/docs/classes/line.THREE_LineSegments2.html +1 -1
  50. package/docs/classes/react.Store.html +1 -1
  51. package/docs/classes/server.BVH.html +1 -1
  52. package/docs/classes/server.BVHIntersect.html +1 -1
  53. package/docs/classes/server.BVHNode.html +1 -1
  54. package/docs/classes/server.BVHVector3.html +1 -1
  55. package/docs/classes/server.Model.html +25 -18
  56. package/docs/classes/server.PBMContainer.html +7 -0
  57. package/docs/classes/server.PBMGroup.html +1 -1
  58. package/docs/classes/server.PBMMesh.html +1 -1
  59. package/docs/classes/sticker.Sticker.html +1 -1
  60. package/docs/classes/vfx.Airflow.html +1 -1
  61. package/docs/classes/vfx.Flame.html +1 -1
  62. package/docs/classes/vfx.Particle.html +1 -1
  63. package/docs/classes/vfx.SpotLight.html +1 -1
  64. package/docs/index.html +1 -1
  65. package/docs/interfaces/five.AddableObject.html +1 -1
  66. package/docs/interfaces/five.AnimationFrame.html +1 -1
  67. package/docs/interfaces/five.CameraPose.html +1 -1
  68. package/docs/interfaces/five.ClipperParameter.html +1 -1
  69. package/docs/interfaces/five.DepthPanoramaControllerCustomInitArgs.html +1 -1
  70. package/docs/interfaces/five.EventCallback.html +1 -1
  71. package/docs/interfaces/five.FiveInitArgs.html +1 -1
  72. package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +1 -1
  73. package/docs/interfaces/five.ImageOptions.html +1 -1
  74. package/docs/interfaces/five.ImageURLMappings.html +1 -1
  75. package/docs/interfaces/five.ImageURLOptions.html +1 -1
  76. package/docs/interfaces/five.IntersectMeshInterface.html +1 -1
  77. package/docs/interfaces/five.Intersection.html +3 -3
  78. package/docs/interfaces/five.MapviewControllerCustomInitArgs.html +1 -1
  79. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +1 -1
  80. package/docs/interfaces/five.ModelEventCallback.html +7 -7
  81. package/docs/interfaces/five.MotionKeyframe.html +1 -1
  82. package/docs/interfaces/five.MovePanoOptions.html +1 -1
  83. package/docs/interfaces/five.NetworkOptions.html +1 -1
  84. package/docs/interfaces/five.PBMPanoPicture.html +1 -1
  85. package/docs/interfaces/five.PBMParameters.html +1 -1
  86. package/docs/interfaces/five.PanoCircleMeshInterface.html +1 -1
  87. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +1 -1
  88. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +1 -1
  89. package/docs/interfaces/five.Pose.html +1 -1
  90. package/docs/interfaces/five.Scissor.html +1 -1
  91. package/docs/interfaces/five.State.html +1 -1
  92. package/docs/interfaces/five.SubscribeMixinType.emit.html +1 -1
  93. package/docs/interfaces/five.SubscribeMixinType.hasListener.html +1 -1
  94. package/docs/interfaces/five.SubscribeMixinType.off.html +1 -1
  95. package/docs/interfaces/five.SubscribeMixinType.on.html +1 -1
  96. package/docs/interfaces/five.SubscribeMixinType.once.html +1 -1
  97. package/docs/interfaces/five.TextureOptions.html +1 -1
  98. package/docs/interfaces/five.Tile3DModelLoaderOptions.html +2 -2
  99. package/docs/interfaces/five.TileBoundingVolume.html +5 -5
  100. package/docs/interfaces/five.TileContent.html +1 -1
  101. package/docs/interfaces/five.TileCubeNode.html +1 -1
  102. package/docs/interfaces/five.TileCubeTree.html +1 -1
  103. package/docs/interfaces/five.Tileset3dOptions.html +1 -1
  104. package/docs/interfaces/five.TilesetJSON.html +1 -1
  105. package/docs/interfaces/five.TilesetJSONNode.html +1 -1
  106. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
  107. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +1 -1
  108. package/docs/interfaces/five.WebXRSelectParams.html +1 -1
  109. package/docs/interfaces/five.WorkCubeImage.html +1 -1
  110. package/docs/interfaces/five.WorkImage.html +1 -1
  111. package/docs/interfaces/five.WorkInitial.html +1 -1
  112. package/docs/interfaces/five.WorkModel.html +1 -1
  113. package/docs/interfaces/five.WorkModelTiles.html +1 -1
  114. package/docs/interfaces/five.WorkObserver.html +1 -1
  115. package/docs/interfaces/five.WorkTile.html +1 -1
  116. package/docs/interfaces/five.WorkVideo.html +1 -1
  117. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +1 -1
  118. package/docs/interfaces/gltf_loader.DDS.html +1 -1
  119. package/docs/interfaces/gltf_loader.GLTF.html +1 -1
  120. package/docs/interfaces/gltf_loader.GLTFReference.html +1 -1
  121. package/docs/interfaces/gltf_loader.THREEGLTF.html +1 -1
  122. package/docs/interfaces/react.FiveActionReactCallbacks.html +1 -1
  123. package/docs/interfaces/react.FiveInjectionTypes.html +1 -1
  124. package/docs/interfaces/react.PropTypeOfFiveFeatures.html +1 -1
  125. package/docs/interfaces/server.Intersection.html +3 -3
  126. package/docs/interfaces/server.ModelEventCallback.html +6 -6
  127. package/docs/interfaces/sticker.IntersectionLike.html +1 -1
  128. package/docs/interfaces/vfx.ParticleArgs.html +1 -1
  129. package/docs/interfaces/vfx.ParticleTweenKeyframe.html +1 -1
  130. package/docs/interfaces/vue.FiveActionVueCallbacks.html +12 -4
  131. package/docs/modules/five.SubscribeMixinType.html +1 -1
  132. package/docs/modules/five.html +10 -10
  133. package/docs/modules/gltf_loader.html +1 -1
  134. package/docs/modules/line.html +1 -1
  135. package/docs/modules/react.html +1 -1
  136. package/docs/modules/server.html +7 -7
  137. package/docs/modules/sticker.html +1 -1
  138. package/docs/modules/vfx.html +1 -1
  139. package/docs/modules/vue.html +9 -6
  140. package/docs/modules.html +1 -1
  141. package/five/index.d.ts +9 -26
  142. package/five/index.js +12 -12
  143. package/gltf-loader/index.js +3 -3
  144. package/line/index.js +3 -3
  145. package/package.json +2 -5
  146. package/react/index.js +3 -3
  147. package/server/index.d.ts +20 -1
  148. package/server/index.js +11 -11
  149. package/sticker/index.js +3 -3
  150. package/umd/five-gltf-loader.js +1 -1
  151. package/umd/five-line.js +1 -1
  152. package/umd/five-sticker.js +1 -1
  153. package/umd/five-vue.js +1 -1
  154. package/umd/five.js +1 -1
  155. package/vfx/index.js +3 -3
  156. package/vue/index.d.ts +24 -3
  157. package/vue/index.js +3 -3
  158. package/docs/classes/five.TilePlane.html +0 -1
package/vfx/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @realsee/five
3
3
  *
4
- * Generated: 2022-11-07
5
- * Version: 5.0.0-alpha.162
4
+ * Generated: 2022-11-22
5
+ * Version: 5.0.0-alpha.164
6
6
  *
7
7
  * Terms:
8
8
  * Realsee SDK License Agreement
@@ -257,4 +257,4 @@
257
257
  * Agreement and all related documents shall be drafted in English.
258
258
  */
259
259
 
260
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib");function t(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}for(var n=t(require("three")),i="\nuniform vec3 uColor1;\nuniform vec3 uColor2;\nuniform float uOpacity;\n\nvarying vec3 vPosition;\nvarying float vNoise;\n\nvoid main() {\n float alpha = 1.0;\n float gradient = mix(0.0, 1.0, -vPosition.y + 1.75);\n if(vNoise > 0.3 * gradient) {\n alpha = 0.0;\n }\n float mask = mix(0.3, 1.0, -vPosition.y + 0.5);\n alpha = clamp(alpha * (mask * 10.0), 0.0, 1.0);\n vec3 color = mix(uColor1, uColor2, -vPosition.y + 0.5);\n color.g = color.g * (1.0 + gradient * vNoise);\n gl_FragColor = vec4(color, alpha * uOpacity);\n}\n",o="\n// Simplex 4D Noise\n// by Ian McEwan, Ashima Arts\n//\nvec4 permute(vec4 x) {\n return mod((x * 34.0 + 1.0) * x, 289.0);\n}\nfloat permute(float x) {\n return floor( mod((x * 34.0 + 1.0) * x, 289.0) );\n}\nvec4 taylorInvSqrt(vec4 r) {\n return 1.79284291400159 - 0.85373472095314 * r;\n}\nfloat taylorInvSqrt(float r) {\n return 1.79284291400159 - 0.85373472095314 * r;\n}\n\nvec4 grad4(float j, vec4 ip) {\n const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n vec4 p,s;\n\n p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n s = vec4(lessThan(p, vec4(0.0)));\n p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\n return p;\n}\n\nfloat simplexNoise(vec4 v) {\n const vec2 C = vec2( 0.138196601125010504, // (5 - sqrt(5))/20 G4\n 0.309016994374947451); // (sqrt(5) - 1)/4 F4\n // First corner\n vec4 i = floor(v + dot(v, C.yyyy) );\n vec4 x0 = v - i + dot(i, C.xxxx);\n\n // Other corners\n\n // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n vec4 i0;\n\n vec3 isX = step( x0.yzw, x0.xxx );\n vec3 isYZ = step( x0.zww, x0.yyz );\n\n // i0.x = dot( isX, vec3( 1.0 ) );\n i0.x = isX.x + isX.y + isX.z;\n i0.yzw = 1.0 - isX;\n\n // i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n i0.y += isYZ.x + isYZ.y;\n i0.zw += 1.0 - isYZ.xy;\n\n i0.z += isYZ.z;\n i0.w += 1.0 - isYZ.z;\n\n // i0 now contains the unique values 0,1,2,3 in each channel\n vec4 i3 = clamp( i0, 0.0, 1.0 );\n vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n // x0 = x0 - 0.0 + 0.0 * C\n vec4 x1 = x0 - i1 + 1.0 * C.xxxx;\n vec4 x2 = x0 - i2 + 2.0 * C.xxxx;\n vec4 x3 = x0 - i3 + 3.0 * C.xxxx;\n vec4 x4 = x0 - 1.0 + 4.0 * C.xxxx;\n\n // Permutations\n i = mod(i, 289.0);\n float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n vec4 j1 = permute( permute( permute( permute (\n i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\n // Gradients\n // ( 7*7*6 points uniformly over a cube, mapped onto a 4-octahedron.)\n // 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n\n vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n vec4 p0 = grad4(j0, ip);\n vec4 p1 = grad4(j1.x, ip);\n vec4 p2 = grad4(j1.y, ip);\n vec4 p3 = grad4(j1.z, ip);\n vec4 p4 = grad4(j1.w, ip);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n p4 *= taylorInvSqrt(dot(p4,p4));\n\n // Mix contributions from the five corners\n vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n m0 = m0 * m0;\n m1 = m1 * m1;\n return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\n}\n",r="\nfloat scale(float value, float fromMin, float fromMax, float toMin, float toMax) {\n return toMin + (value - fromMin) * (toMax - toMin) / (fromMax - fromMin);\n}\n",a="\nuniform float uTime;\nuniform float uNoise;\nuniform float uSpeed;\n\nvarying vec3 vPosition;\nvarying float vNoise;\n\n".concat(o,"\n").concat(r,"\n\nfloat fbm(vec4 x) {\n float v = 0.0;\n float a = 0.5;\n vec4 shift = vec4(100.0);\n #pragma unroll_loop_start\n for ( int i = 0; i < FRAGMENTATION_DEGREE; i ++ ) {\n v += a * simplexNoise(x);\n x = x * 2.0 + shift;\n a *= 0.5;\n }\n #pragma unroll_loop_end\n return v;\n}\n\nvoid main() {\n vPosition = position;\n vNoise = fbm(vec4((position / uNoise) - vec3(0.0, uTime * uSpeed, 0.0), 0.0));\n vNoise = scale(vNoise, -1.0, 1.0, 0.0, 1.0);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(vPosition, 1.0);\n}\n"),s=new n.SphereBufferGeometry(1,300,300),l=[],u=0;u<2;u++)l.push(new n.Vector2(Math.sin(u)/2+1,2*u-.8));var c=new n.LatheBufferGeometry(l,300),d=function(t){function o(e){var o,r=t.call(this)||this;if(r.needsRender=!0,e instanceof n.BufferGeometry)o=e;else if("ring"===e)o=c;else o=s;r.uniforms={uTime:{value:0},uColor1:{value:new n.Color("rgb(255, 177, 20)")},uColor2:{value:new n.Color("rgb(255, 0, 0)")},uNoise:{value:1.2},uSpeed:{value:1},uOpacity:{value:1}},r.defines={FRAGMENTATION_DEGREE:2};var l=new n.Mesh(o,new n.ShaderMaterial({uniforms:r.uniforms,defines:r.defines,vertexShader:a,fragmentShader:i,transparent:!0,depthWrite:!1,side:n.BackSide})),u=new n.Mesh(o,new n.ShaderMaterial({uniforms:r.uniforms,defines:r.defines,vertexShader:a,fragmentShader:i,transparent:!0,depthWrite:!1,side:n.FrontSide}));return l.scale.setScalar(.1),u.scale.setScalar(.1),r.add(l),r.add(u),r}return e.__extends(o,t),o.prototype.setTime=function(e){void 0===this.startTime&&(this.startTime=e),this.uniforms.uTime.value=(e-this.startTime)/1e3,this.needsRender=!0},Object.defineProperty(o.prototype,"color1",{get:function(){return this.uniforms.uColor1.value},set:function(e){this.uniforms.uColor1.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"color2",{get:function(){return this.uniforms.uColor2.value},set:function(e){this.uniforms.uColor2.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"speed",{get:function(){return this.uniforms.uSpeed.value},set:function(e){this.uniforms.uSpeed.value=e},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"noise",{get:function(){return this.uniforms.uSpeed.value},set:function(e){this.uniforms.uSpeed.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"opacity",{get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms.uOpacity.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"fragmentationDegree",{get:function(){return this.defines.FRAGMENTATION_DEGREE},set:function(e){this.defines.FRAGMENTATION_DEGREE=e,this.traverse((function(e){e instanceof n.Mesh&&e.material instanceof n.ShaderMaterial&&(e.material.needsUpdate=!0)})),this.needsRender=!0},enumerable:!1,configurable:!0}),o}(n.Group),v="\n\nuniform float uTime;\n\nvarying vec3 vNormal;\nvarying vec3 vWorldPosition;\nvarying float vNoise;\n\n".concat(o,"\n").concat(r,"\n\nvoid main(){\n\n vNormal = normalize( normalMatrix * normal );\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n vWorldPosition = worldPosition.xyz;\n vNoise = simplexNoise(vec4(position - vec3(0.0, uTime * 0.4, 0.0), 0));\n vNoise = scale(vNoise, -1.0, 1.0, 0.5, 1.0);\n\n gl_Position\t= projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n"),p=function(t){function i(e,i,o){void 0===e&&(e=1),void 0===i&&(i=.1),void 0===o&&(o=.2);var r=t.call(this)||this;r.needsRender=!0,r.uniforms={uTime:{value:0},uAttenuation:{value:.9*e},uAnglePower:{value:2},uSpotPosition:{value:r.position},uLightColor:{value:new n.Color(16777215)}};var a=new n.CylinderBufferGeometry(i,o,e,64,20,!0);a.applyMatrix4((new n.Matrix4).makeTranslation(0,-e/2,0)),a.applyMatrix4((new n.Matrix4).makeRotationX(-Math.PI/2));var s=new n.Mesh(a,new n.ShaderMaterial({uniforms:r.uniforms,vertexShader:v,fragmentShader:"\nuniform vec3 uLightColor;\nuniform vec3 uSpotPosition;\nuniform float uAttenuation;\nuniform float uAnglePower;\n\nvarying vec3 vNormal;\nvarying vec3 vWorldPosition;\nvarying float vNoise;\n\nvoid main() {\n float intensity;\n intensity\t= distance(vWorldPosition, uSpotPosition) / uAttenuation;\n intensity\t= 1.0 - clamp(intensity, 0.1, 1.0);\n\n vec3 normal = vec3(vNormal.x, vNormal.y, abs(vNormal.z));\n float angleIntensity = pow( dot(normal, vec3(0.0, 0.0, 1.0)), uAnglePower * vNoise );\n intensity\t= intensity * angleIntensity * vNoise;\n gl_FragColor = vec4( uLightColor, intensity );\n}\n",transparent:!0,side:n.FrontSide,depthWrite:!1}));return r.add(s),r}return e.__extends(i,t),i.prototype.setTime=function(e){void 0===this.startTime&&(this.startTime=e),this.uniforms.uTime.value=(e-this.startTime)/1e3,this.needsRender=!0},Object.defineProperty(i.prototype,"attenuation",{get:function(){return this.uniforms.uAttenuation.value},set:function(e){this.uniforms.uAttenuation.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"anglePower",{get:function(){return this.uniforms.uAnglePower.value},set:function(e){this.uniforms.uAnglePower.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"color",{get:function(){return this.uniforms.uLightColor.value},set:function(e){this.uniforms.uLightColor.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),i}(n.Group),f="\nuniform vec3 uColor;\nuniform float uOpacity;\nvarying vec3 vPosition;\nvarying float vNoise;\n\nvoid main() {\n float gradient = mix(0.0, 1.0, 1.0 + vPosition.y);\n gl_FragColor = vec4(uColor, vNoise * gradient * uOpacity);\n}\n",h="\n\nuniform float uTime;\nuniform float uSpeed;\nuniform float uScale;\nuniform float uExpand;\nvarying float vNoise;\nvarying vec3 vPosition;\n\n".concat(o,"\n").concat(r,"\n\nvoid main(){\n\n vPosition = position;\n vNoise = simplexNoise(vec4(position.x * uScale, position.y + uTime * uSpeed, 0.0, 0.0));\n vNoise = scale(vNoise, 0.0, 1.0, 0.5, 1.0);\n\n vec4 transformed = vec4( position, 1.0 );\n transformed.x = transformed.x * scale(abs(transformed.y), 0.0, 1.0, 1.0, uExpand);\n\n gl_Position\t= projectionMatrix * modelViewMatrix * transformed;\n}\n"),m=new n.PlaneBufferGeometry(1,1,200,200);m.translate(0,-.5,0);var y=function(t){function i(){var e=t.call(this)||this;e.needsRender=!0;var i=e.outer=new n.Mesh(m,new n.ShaderMaterial({uniforms:{uTime:{value:0},uSpeed:{value:.75},uScale:{value:2},uExpand:{value:1.2},uColor:{value:new n.Color(.5,.5,.9)},uOpacity:{value:1}},vertexShader:h,fragmentShader:f,transparent:!0,side:n.DoubleSide,depthWrite:!1})),o=e.inner=new n.Mesh(m,new n.ShaderMaterial({uniforms:{uTime:{value:0},uSpeed:{value:2},uScale:{value:20},uExpand:{value:1.2},uColor:{value:new n.Color(1,1,1)},uOpacity:{value:.1}},vertexShader:h,fragmentShader:f,transparent:!0,side:n.DoubleSide,depthWrite:!1}));return i.rotateX(-Math.PI/2),o.rotateX(-Math.PI/2),e.add(i),e.add(o),e}return e.__extends(i,t),i.prototype.setTime=function(e){void 0===this.startTime&&(this.startTime=e);var t=(e-this.startTime)/1e3;this.inner.material.uniforms.uTime.value=t,this.outer.material.uniforms.uTime.value=t,this.needsRender=!0},Object.defineProperty(i.prototype,"expand",{get:function(){return this.outer.material.uniforms.uExpand.value},set:function(e){this.outer.material.uniforms.uExpand.value=e,this.inner.material.uniforms.uExpand.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"speed",{get:function(){return this.inner.material.uniforms.speed.value},set:function(e){this.inner.material.uniforms.speed.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"color",{get:function(){return this.outer.material.uniforms.color.value},set:function(e){this.outer.material.uniforms.color.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"flowColor",{get:function(){return this.inner.material.uniforms.color.value},set:function(e){this.inner.material.uniforms.color.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),i}(n.Group);function g(e,t){return e+t*(Math.random()-.5)}function x(e,t){var i=new n.Vector3(Math.random()-.5,Math.random()-.5,Math.random()-.5);return(new n.Vector3).addVectors(e,(new n.Vector3).multiplyVectors(t,i))}function b(e,t,n){return e*n+t*n*n/2}function w(e,t){for(var n=e.times.length,i=0;i<n&&t>e.times[i];)i++;if(0==i)return e.values[0];if(i==n)return e.values[n-1];var o=(t-e.times[i-1])/(e.times[i]-e.times[i-1]),r=e.values[i-1],a=e.values[i];return"number"==typeof e.values[0]?r+o*(a-r):r.clone().lerp(a,o)}var S=function(){function e(e,t,n,i,o,r,a,s,l,u,c,d,v,p){this.birthTime=e,this.deathAge=t,this.position=n.clone(),this.velocity=i.clone(),this.acceleration=o.clone(),this.angle=r,this.angleVelocity=a,this.angleAcceleration=s,this.color=l,this.colorTween=u,this.size=c,this.sizeTween=d,this.opacity=v,this.opacityTween=p}return e.prototype.getAlive=function(e){return this.deathAge>e-this.birthTime},e.prototype.getState=function(e){var t=this.getAlive(e),i=Math.min(this.deathAge,e-this.birthTime),o=function(e,t,i){return new n.Vector3(b(e.x,t.x,i),b(e.y,t.y,i),b(e.z,t.z,i))}(this.velocity,this.acceleration,i).add(this.position),r=b(this.angleVelocity,this.angleAcceleration,i)+this.angle,a=(this.sizeTween?w(this.sizeTween,i):0)+this.size,s=(this.colorTween?w(this.colorTween,i):new n.Vector3).add(this.color);return{alive:t,age:i,position:o,angle:r,size:a,color:(new n.Color).setHSL(s.x,s.y,s.z),opacity:(this.opacityTween?w(this.opacityTween,i):0)+this.opacity}},e}(),A=function(t){function i(e){var i,o,r,a,s,l,u,c,d,v,p,f,h,m,y,g,x,b,w,S,A,P,M,T,C,B,z,N,_,E,V,O,j,R,U,F,D,G,I=this,X=new n.BufferGeometry;X.setAttribute("position",new n.BufferAttribute(new Float32Array,3)),X.setAttribute("alive",new n.BufferAttribute(new Float32Array,1)),X.setAttribute("color",new n.BufferAttribute(new Float32Array,3)),X.setAttribute("opacity",new n.BufferAttribute(new Float32Array,1)),X.setAttribute("size",new n.BufferAttribute(new Float32Array,1)),X.setAttribute("angle",new n.BufferAttribute(new Float32Array,1));var q=new n.ShaderMaterial({uniforms:{map:{value:null!==(i=e.texture)&&void 0!==i?i:null}},defines:{USE_MAP:!!e.texture},vertexShader:"\nattribute vec3 color;\nattribute float opacity;\nattribute float size;\nattribute float alive; // float used as boolean (0 = false, 1 = true)\n\nvarying vec4 vColor;\n\n#if defined(USE_MAP)\n attribute float angle;\n varying float vAngle;\n#endif\n\nvoid main() {\n if (alive > 0.5) {\n vColor = vec4(color, opacity);\n } else {\n vColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n #if defined(USE_MAP)\n vAngle = angle;\n #endif\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_PointSize = size * ( 300.0 / length( mvPosition.xyz ) );\n gl_Position = projectionMatrix * mvPosition;\n}\n",fragmentShader:"\nvarying vec4 vColor;\n\n#if defined(USE_MAP)\n uniform sampler2D map;\n varying float vAngle;\n#endif\n\nvoid main() {\n gl_FragColor = vColor;\n\n #if defined(USE_MAP)\n float c = cos(vAngle);\n float s = sin(vAngle);\n\n // rotate UV coordinates to rotate texture\n vec2 rotatedUV = vec2(\n c * (gl_PointCoord.x - 0.5) + s * (gl_PointCoord.y - 0.5) + 0.5,\n c * (gl_PointCoord.y - 0.5) - s * (gl_PointCoord.x - 0.5) + 0.5\n );\n vec4 rotatedTexture = texture2D(map, rotatedUV);\n gl_FragColor = vColor * rotatedTexture;\n #endif\n}\n",transparent:!0,blending:null!==(o=e.blending)&&void 0!==o?o:n.NormalBlending,depthWrite:!1});return(I=t.call(this,X,q)||this).instances=[],I.needsRender=!0,I.birthTime=Date.now()/1e3,I.disposed=!1,I.paused=!1,I.positionBase=null!==(a=null===(r=e.positionBase)||void 0===r?void 0:r.clone())&&void 0!==a?a:new n.Vector3,I.positionStyle=null!==(s=e.positionStyle)&&void 0!==s?s:"CUBE",I.positionCubeSpread=null!==(u=null===(l=e.positionCubeSpread)||void 0===l?void 0:l.clone())&&void 0!==u?u:new n.Vector3,I.positionSphereSpread=null!==(c=e.positionSphereSpread)&&void 0!==c?c:0,I.velocityStyle=null!==(d=e.velocityStyle)&&void 0!==d?d:"CUBE",I.velocityCubeBase=null!==(p=null===(v=e.velocityCubeBase)||void 0===v?void 0:v.clone())&&void 0!==p?p:new n.Vector3,I.velocityCubeSpread=null!==(h=null===(f=e.velocityCubeSpread)||void 0===f?void 0:f.clone())&&void 0!==h?h:new n.Vector3,I.velocitySphereBase=null!==(m=e.velocitySphereBase)&&void 0!==m?m:0,I.velocitySphereSpread=null!==(y=e.velocitySphereSpread)&&void 0!==y?y:0,I.accelerationBase=null!==(x=null===(g=e.accelerationBase)||void 0===g?void 0:g.clone())&&void 0!==x?x:new n.Vector3,I.accelerationSpread=null!==(w=null===(b=e.accelerationSpread)||void 0===b?void 0:b.clone())&&void 0!==w?w:new n.Vector3,I.angleBase=null!==(S=e.angleBase)&&void 0!==S?S:0,I.angleSpread=null!==(A=e.angleSpread)&&void 0!==A?A:0,I.angleVelocityBase=null!==(P=e.angleVelocityBase)&&void 0!==P?P:0,I.angleVelocitySpread=null!==(M=e.angleVelocitySpread)&&void 0!==M?M:0,I.angleAccelerationBase=null!==(T=e.angleAccelerationBase)&&void 0!==T?T:0,I.angleAccelerationSpread=null!==(C=e.angleAccelerationSpread)&&void 0!==C?C:0,I.sizeBase=null!==(B=e.sizeBase)&&void 0!==B?B:.1,I.sizeSpread=null!==(z=e.sizeSpread)&&void 0!==z?z:0,I.sizeTween=null!==(N=e.sizeTween)&&void 0!==N?N:null,I.colorBase=null!==(E=null===(_=e.colorBase)||void 0===_?void 0:_.clone())&&void 0!==E?E:new n.Vector3,I.colorSpread=null!==(O=null===(V=e.colorSpread)||void 0===V?void 0:V.clone())&&void 0!==O?O:new n.Vector3,I.colorTween=null!==(j=e.colorTween)&&void 0!==j?j:null,I.opacityBase=(null!==(R=e.opacityBase)&&void 0!==R?R:e.opacityTween)?0:1,I.opacitySpread=null!==(U=e.opacitySpread)&&void 0!==U?U:0,I.opacityTween=null!==(F=e.opacityTween)&&void 0!==F?F:null,I.particlesPerSecond=null!==(D=e.particlesPerSecond)&&void 0!==D?D:60,I.particleDeathAge=null!==(G=e.particleDeathAge)&&void 0!==G?G:1,I}return e.__extends(i,t),Object.defineProperty(i.prototype,"texture",{get:function(){return this.material.uniforms.map.value},set:function(e){this.material.uniforms.map.value=e,null===e?!1!==this.material.defines.USE_MAP&&(this.material.defines.USE_MAP=!1,this.material.needsUpdate=!0):!0!==this.material.defines.USE_MAP&&(this.material.defines.USE_MAP=!0,this.material.needsUpdate=!0)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"blending",{get:function(){return this.material.blending},set:function(e){this.material.blending=e},enumerable:!1,configurable:!0}),i.prototype.createInstance=function(e){var t=this.positionBase.clone();switch(this.positionStyle){case"CUBE":t=x(this.positionBase,this.positionCubeSpread);break;case"SPHERE":var i=2*Math.random()-1,o=2*Math.PI*Math.random(),r=Math.sqrt(1-i*i),a=new n.Vector3(r*Math.cos(o),r*Math.sin(o),i);t=(new n.Vector3).addVectors(this.positionBase,a.multiplyScalar(this.positionSphereSpread))}var s=new n.Vector3;switch(this.velocityStyle){case"CUBE":s=x(this.velocityCubeBase,this.velocityCubeSpread);break;case"SPHERE":var l=(new n.Vector3).subVectors(t,this.positionBase),u=g(this.velocitySphereBase,this.velocitySphereSpread);s=l.normalize().multiplyScalar(u)}return new S(e,this.particleDeathAge,t,s,x(this.accelerationBase,this.accelerationSpread),g(this.angleBase,this.angleSpread),g(this.angleVelocityBase,this.angleVelocitySpread),g(this.angleAccelerationBase,this.angleAccelerationSpread),x(this.colorBase,this.colorSpread),this.colorTween,g(this.sizeBase,this.sizeSpread),this.sizeTween,g(this.opacityBase,this.opacitySpread),this.opacityTween)},i.prototype.pause=function(){!0!==this.paused&&(this.paused=!0,this.birthTime=Date.now()/1e3)},i.prototype.play=function(){!1!==this.paused&&(this.paused=!1,this.birthTime=Date.now()/1e3)},i.prototype.setTime=function(e){if(!this.disposed){var t,i=(e/=1e3)-this.birthTime,o=Math.ceil(this.particlesPerSecond*this.particleDeathAge);if(this.geometry.attributes.position.count<o)(c=new Float32Array(3*o)).set(this.geometry.attributes.position.array,0),(t=new n.BufferAttribute(c,3)).needsUpdate=!0,this.geometry.setAttribute("position",t);if(this.geometry.attributes.alive.count<o)(d=new Float32Array(o)).set(this.geometry.attributes.alive.array,0),(t=new n.BufferAttribute(d,1)).needsUpdate=!0,this.geometry.setAttribute("alive",t);if(this.geometry.attributes.color.count<o)(v=new Float32Array(3*o)).set(this.geometry.attributes.color.array,0),(t=new n.BufferAttribute(v,3)).needsUpdate=!0,this.geometry.setAttribute("color",t);if(this.geometry.attributes.opacity.count<o)(p=new Float32Array(o)).set(this.geometry.attributes.opacity.array,0),(t=new n.BufferAttribute(p,1)).needsUpdate=!0,this.geometry.setAttribute("opacity",t);if(this.geometry.attributes.size.count<o)(f=new Float32Array(o)).set(this.geometry.attributes.size.array,0),(t=new n.BufferAttribute(f,1)).needsUpdate=!0,this.geometry.setAttribute("size",t);if(this.geometry.attributes.angle.count<o)(h=new Float32Array(o)).set(this.geometry.attributes.angle.array,0),(t=new n.BufferAttribute(h,1)).needsUpdate=!0,this.geometry.setAttribute("angle",t);this.instances.length<o&&(this.instances.length=o);for(var r=0;r<this.instances.length;r++){var a=this.instances[r];if(r<o&&!1===this.paused&&(void 0===a||!1===a.getAlive(e))){var s=this.particleDeathAge/o*r;if(i>s){var l=e-(i-s)%this.particleDeathAge;this.instances[r]=a=this.createInstance(l)}}if(a){var u=a.getState(e),c=u.position,d=u.alive,v=u.color,p=u.opacity,f=u.size,h=u.angle;this.geometry.attributes.position.setXYZ(r,c.x,c.y,c.z),this.geometry.attributes.position.needsUpdate=!0,this.geometry.attributes.alive.setX(r,d?1:0),this.geometry.attributes.alive.needsUpdate=!0,this.geometry.attributes.color.setXYZ(r,v.r,v.g,v.b),this.geometry.attributes.color.needsUpdate=!0,this.geometry.attributes.opacity.setX(r,p),this.geometry.attributes.opacity.needsUpdate=!0,this.geometry.attributes.size.setX(r,f),this.geometry.attributes.size.needsUpdate=!0,this.geometry.attributes.angle.setX(r,h),this.geometry.attributes.angle.needsUpdate=!0}}this.geometry.computeBoundingBox(),this.geometry.boundingSphere||(this.geometry.boundingSphere=new n.Sphere),this.geometry.boundingBox.getBoundingSphere(this.geometry.boundingSphere),this.needsRender=!0}},i.prototype.dispose=function(){var e;this.disposed=!0,this.geometry.dispose(),null===(e=this.texture)||void 0===e||e.dispose(),this.material.dispose()},i}(n.Points);exports.Airflow=y,exports.Flame=d,exports.Particle=A,exports.SpotLight=p;
260
+ "use strict";function e(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}Object.defineProperty(exports,"__esModule",{value:!0});var t=e(require("three")),n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},n(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}for(var o="\nuniform vec3 uColor1;\nuniform vec3 uColor2;\nuniform float uOpacity;\n\nvarying vec3 vPosition;\nvarying float vNoise;\n\nvoid main() {\n float alpha = 1.0;\n float gradient = mix(0.0, 1.0, -vPosition.y + 1.75);\n if(vNoise > 0.3 * gradient) {\n alpha = 0.0;\n }\n float mask = mix(0.3, 1.0, -vPosition.y + 0.5);\n alpha = clamp(alpha * (mask * 10.0), 0.0, 1.0);\n vec3 color = mix(uColor1, uColor2, -vPosition.y + 0.5);\n color.g = color.g * (1.0 + gradient * vNoise);\n gl_FragColor = vec4(color, alpha * uOpacity);\n}\n",r="\n// Simplex 4D Noise\n// by Ian McEwan, Ashima Arts\n//\nvec4 permute(vec4 x) {\n return mod((x * 34.0 + 1.0) * x, 289.0);\n}\nfloat permute(float x) {\n return floor( mod((x * 34.0 + 1.0) * x, 289.0) );\n}\nvec4 taylorInvSqrt(vec4 r) {\n return 1.79284291400159 - 0.85373472095314 * r;\n}\nfloat taylorInvSqrt(float r) {\n return 1.79284291400159 - 0.85373472095314 * r;\n}\n\nvec4 grad4(float j, vec4 ip) {\n const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);\n vec4 p,s;\n\n p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;\n p.w = 1.5 - dot(abs(p.xyz), ones.xyz);\n s = vec4(lessThan(p, vec4(0.0)));\n p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;\n\n return p;\n}\n\nfloat simplexNoise(vec4 v) {\n const vec2 C = vec2( 0.138196601125010504, // (5 - sqrt(5))/20 G4\n 0.309016994374947451); // (sqrt(5) - 1)/4 F4\n // First corner\n vec4 i = floor(v + dot(v, C.yyyy) );\n vec4 x0 = v - i + dot(i, C.xxxx);\n\n // Other corners\n\n // Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n vec4 i0;\n\n vec3 isX = step( x0.yzw, x0.xxx );\n vec3 isYZ = step( x0.zww, x0.yyz );\n\n // i0.x = dot( isX, vec3( 1.0 ) );\n i0.x = isX.x + isX.y + isX.z;\n i0.yzw = 1.0 - isX;\n\n // i0.y += dot( isYZ.xy, vec2( 1.0 ) );\n i0.y += isYZ.x + isYZ.y;\n i0.zw += 1.0 - isYZ.xy;\n\n i0.z += isYZ.z;\n i0.w += 1.0 - isYZ.z;\n\n // i0 now contains the unique values 0,1,2,3 in each channel\n vec4 i3 = clamp( i0, 0.0, 1.0 );\n vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );\n vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );\n\n // x0 = x0 - 0.0 + 0.0 * C\n vec4 x1 = x0 - i1 + 1.0 * C.xxxx;\n vec4 x2 = x0 - i2 + 2.0 * C.xxxx;\n vec4 x3 = x0 - i3 + 3.0 * C.xxxx;\n vec4 x4 = x0 - 1.0 + 4.0 * C.xxxx;\n\n // Permutations\n i = mod(i, 289.0);\n float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);\n vec4 j1 = permute( permute( permute( permute (\n i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))\n + i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))\n + i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))\n + i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));\n\n // Gradients\n // ( 7*7*6 points uniformly over a cube, mapped onto a 4-octahedron.)\n // 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n\n vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;\n\n vec4 p0 = grad4(j0, ip);\n vec4 p1 = grad4(j1.x, ip);\n vec4 p2 = grad4(j1.y, ip);\n vec4 p3 = grad4(j1.z, ip);\n vec4 p4 = grad4(j1.w, ip);\n\n // Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n p4 *= taylorInvSqrt(dot(p4,p4));\n\n // Mix contributions from the five corners\n vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);\n vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);\n m0 = m0 * m0;\n m1 = m1 * m1;\n return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))\n + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;\n\n}\n",a="\nfloat scale(float value, float fromMin, float fromMax, float toMin, float toMax) {\n return toMin + (value - fromMin) * (toMax - toMin) / (fromMax - fromMin);\n}\n",s="\nuniform float uTime;\nuniform float uNoise;\nuniform float uSpeed;\n\nvarying vec3 vPosition;\nvarying float vNoise;\n\n".concat(r,"\n").concat(a,"\n\nfloat fbm(vec4 x) {\n float v = 0.0;\n float a = 0.5;\n vec4 shift = vec4(100.0);\n #pragma unroll_loop_start\n for ( int i = 0; i < FRAGMENTATION_DEGREE; i ++ ) {\n v += a * simplexNoise(x);\n x = x * 2.0 + shift;\n a *= 0.5;\n }\n #pragma unroll_loop_end\n return v;\n}\n\nvoid main() {\n vPosition = position;\n vNoise = fbm(vec4((position / uNoise) - vec3(0.0, uTime * uSpeed, 0.0), 0.0));\n vNoise = scale(vNoise, -1.0, 1.0, 0.0, 1.0);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(vPosition, 1.0);\n}\n"),l=new t.SphereBufferGeometry(1,300,300),u=[],c=0;c<2;c++)u.push(new t.Vector2(Math.sin(c)/2+1,2*c-.8));var d=new t.LatheBufferGeometry(u,300),p=function(e){function n(n){var i,r=e.call(this)||this;if(r.needsRender=!0,n instanceof t.BufferGeometry)i=n;else if("ring"===n)i=d;else i=l;r.uniforms={uTime:{value:0},uColor1:{value:new t.Color("rgb(255, 177, 20)")},uColor2:{value:new t.Color("rgb(255, 0, 0)")},uNoise:{value:1.2},uSpeed:{value:1},uOpacity:{value:1}},r.defines={FRAGMENTATION_DEGREE:2};var a=new t.Mesh(i,new t.ShaderMaterial({uniforms:r.uniforms,defines:r.defines,vertexShader:s,fragmentShader:o,transparent:!0,depthWrite:!1,side:t.BackSide})),u=new t.Mesh(i,new t.ShaderMaterial({uniforms:r.uniforms,defines:r.defines,vertexShader:s,fragmentShader:o,transparent:!0,depthWrite:!1,side:t.FrontSide}));return a.scale.setScalar(.1),u.scale.setScalar(.1),r.add(a),r.add(u),r}return i(n,e),n.prototype.setTime=function(e){void 0===this.startTime&&(this.startTime=e),this.uniforms.uTime.value=(e-this.startTime)/1e3,this.needsRender=!0},Object.defineProperty(n.prototype,"color1",{get:function(){return this.uniforms.uColor1.value},set:function(e){this.uniforms.uColor1.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"color2",{get:function(){return this.uniforms.uColor2.value},set:function(e){this.uniforms.uColor2.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"speed",{get:function(){return this.uniforms.uSpeed.value},set:function(e){this.uniforms.uSpeed.value=e},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"noise",{get:function(){return this.uniforms.uSpeed.value},set:function(e){this.uniforms.uSpeed.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"opacity",{get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms.uOpacity.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"fragmentationDegree",{get:function(){return this.defines.FRAGMENTATION_DEGREE},set:function(e){this.defines.FRAGMENTATION_DEGREE=e,this.traverse((function(e){e instanceof t.Mesh&&e.material instanceof t.ShaderMaterial&&(e.material.needsUpdate=!0)})),this.needsRender=!0},enumerable:!1,configurable:!0}),n}(t.Group),v="\n\nuniform float uTime;\n\nvarying vec3 vNormal;\nvarying vec3 vWorldPosition;\nvarying float vNoise;\n\n".concat(r,"\n").concat(a,"\n\nvoid main(){\n\n vNormal = normalize( normalMatrix * normal );\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n vWorldPosition = worldPosition.xyz;\n vNoise = simplexNoise(vec4(position - vec3(0.0, uTime * 0.4, 0.0), 0));\n vNoise = scale(vNoise, -1.0, 1.0, 0.5, 1.0);\n\n gl_Position\t= projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n"),f=function(e){function n(n,i,o){void 0===n&&(n=1),void 0===i&&(i=.1),void 0===o&&(o=.2);var r=e.call(this)||this;r.needsRender=!0,r.uniforms={uTime:{value:0},uAttenuation:{value:.9*n},uAnglePower:{value:2},uSpotPosition:{value:r.position},uLightColor:{value:new t.Color(16777215)}};var a=new t.CylinderBufferGeometry(i,o,n,64,20,!0);a.applyMatrix4((new t.Matrix4).makeTranslation(0,-n/2,0)),a.applyMatrix4((new t.Matrix4).makeRotationX(-Math.PI/2));var s=new t.Mesh(a,new t.ShaderMaterial({uniforms:r.uniforms,vertexShader:v,fragmentShader:"\nuniform vec3 uLightColor;\nuniform vec3 uSpotPosition;\nuniform float uAttenuation;\nuniform float uAnglePower;\n\nvarying vec3 vNormal;\nvarying vec3 vWorldPosition;\nvarying float vNoise;\n\nvoid main() {\n float intensity;\n intensity\t= distance(vWorldPosition, uSpotPosition) / uAttenuation;\n intensity\t= 1.0 - clamp(intensity, 0.1, 1.0);\n\n vec3 normal = vec3(vNormal.x, vNormal.y, abs(vNormal.z));\n float angleIntensity = pow( dot(normal, vec3(0.0, 0.0, 1.0)), uAnglePower * vNoise );\n intensity\t= intensity * angleIntensity * vNoise;\n gl_FragColor = vec4( uLightColor, intensity );\n}\n",transparent:!0,side:t.FrontSide,depthWrite:!1}));return r.add(s),r}return i(n,e),n.prototype.setTime=function(e){void 0===this.startTime&&(this.startTime=e),this.uniforms.uTime.value=(e-this.startTime)/1e3,this.needsRender=!0},Object.defineProperty(n.prototype,"attenuation",{get:function(){return this.uniforms.uAttenuation.value},set:function(e){this.uniforms.uAttenuation.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"anglePower",{get:function(){return this.uniforms.uAnglePower.value},set:function(e){this.uniforms.uAnglePower.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"color",{get:function(){return this.uniforms.uLightColor.value},set:function(e){this.uniforms.uLightColor.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),n}(t.Group),h="\nuniform vec3 uColor;\nuniform float uOpacity;\nvarying vec3 vPosition;\nvarying float vNoise;\n\nvoid main() {\n float gradient = mix(0.0, 1.0, 1.0 + vPosition.y);\n gl_FragColor = vec4(uColor, vNoise * gradient * uOpacity);\n}\n",m="\n\nuniform float uTime;\nuniform float uSpeed;\nuniform float uScale;\nuniform float uExpand;\nvarying float vNoise;\nvarying vec3 vPosition;\n\n".concat(r,"\n").concat(a,"\n\nvoid main(){\n\n vPosition = position;\n vNoise = simplexNoise(vec4(position.x * uScale, position.y + uTime * uSpeed, 0.0, 0.0));\n vNoise = scale(vNoise, 0.0, 1.0, 0.5, 1.0);\n\n vec4 transformed = vec4( position, 1.0 );\n transformed.x = transformed.x * scale(abs(transformed.y), 0.0, 1.0, 1.0, uExpand);\n\n gl_Position\t= projectionMatrix * modelViewMatrix * transformed;\n}\n"),y=new t.PlaneBufferGeometry(1,1,200,200);y.translate(0,-.5,0);var g=function(e){function n(){var n=e.call(this)||this;n.needsRender=!0;var i=n.outer=new t.Mesh(y,new t.ShaderMaterial({uniforms:{uTime:{value:0},uSpeed:{value:.75},uScale:{value:2},uExpand:{value:1.2},uColor:{value:new t.Color(.5,.5,.9)},uOpacity:{value:1}},vertexShader:m,fragmentShader:h,transparent:!0,side:t.DoubleSide,depthWrite:!1})),o=n.inner=new t.Mesh(y,new t.ShaderMaterial({uniforms:{uTime:{value:0},uSpeed:{value:2},uScale:{value:20},uExpand:{value:1.2},uColor:{value:new t.Color(1,1,1)},uOpacity:{value:.1}},vertexShader:m,fragmentShader:h,transparent:!0,side:t.DoubleSide,depthWrite:!1}));return i.rotateX(-Math.PI/2),o.rotateX(-Math.PI/2),n.add(i),n.add(o),n}return i(n,e),n.prototype.setTime=function(e){void 0===this.startTime&&(this.startTime=e);var t=(e-this.startTime)/1e3;this.inner.material.uniforms.uTime.value=t,this.outer.material.uniforms.uTime.value=t,this.needsRender=!0},Object.defineProperty(n.prototype,"expand",{get:function(){return this.outer.material.uniforms.uExpand.value},set:function(e){this.outer.material.uniforms.uExpand.value=e,this.inner.material.uniforms.uExpand.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"speed",{get:function(){return this.inner.material.uniforms.speed.value},set:function(e){this.inner.material.uniforms.speed.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"color",{get:function(){return this.outer.material.uniforms.color.value},set:function(e){this.outer.material.uniforms.color.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"flowColor",{get:function(){return this.inner.material.uniforms.color.value},set:function(e){this.inner.material.uniforms.color.value=e,this.needsRender=!0},enumerable:!1,configurable:!0}),n}(t.Group);function x(e,t){return e+t*(Math.random()-.5)}function b(e,n){var i=new t.Vector3(Math.random()-.5,Math.random()-.5,Math.random()-.5);return(new t.Vector3).addVectors(e,(new t.Vector3).multiplyVectors(n,i))}function w(e,t,n){return e*n+t*n*n/2}function S(e,t){for(var n=e.times.length,i=0;i<n&&t>e.times[i];)i++;if(0==i)return e.values[0];if(i==n)return e.values[n-1];var o=(t-e.times[i-1])/(e.times[i]-e.times[i-1]),r=e.values[i-1],a=e.values[i];return"number"==typeof e.values[0]?r+o*(a-r):r.clone().lerp(a,o)}var A=function(){function e(e,t,n,i,o,r,a,s,l,u,c,d,p,v){this.birthTime=e,this.deathAge=t,this.position=n.clone(),this.velocity=i.clone(),this.acceleration=o.clone(),this.angle=r,this.angleVelocity=a,this.angleAcceleration=s,this.color=l,this.colorTween=u,this.size=c,this.sizeTween=d,this.opacity=p,this.opacityTween=v}return e.prototype.getAlive=function(e){return this.deathAge>e-this.birthTime},e.prototype.getState=function(e){var n=this.getAlive(e),i=Math.min(this.deathAge,e-this.birthTime),o=function(e,n,i){return new t.Vector3(w(e.x,n.x,i),w(e.y,n.y,i),w(e.z,n.z,i))}(this.velocity,this.acceleration,i).add(this.position),r=w(this.angleVelocity,this.angleAcceleration,i)+this.angle,a=(this.sizeTween?S(this.sizeTween,i):0)+this.size,s=(this.colorTween?S(this.colorTween,i):new t.Vector3).add(this.color);return{alive:n,age:i,position:o,angle:r,size:a,color:(new t.Color).setHSL(s.x,s.y,s.z),opacity:(this.opacityTween?S(this.opacityTween,i):0)+this.opacity}},e}(),P=function(e){function n(n){var i,o,r,a,s,l,u,c,d,p,v,f,h,m,y,g,x,b,w,S,A,P,M,T,C,B,z,N,E,_,O,j,V,R,U,F,D,G,I=this,X=new t.BufferGeometry;X.setAttribute("position",new t.BufferAttribute(new Float32Array,3)),X.setAttribute("alive",new t.BufferAttribute(new Float32Array,1)),X.setAttribute("color",new t.BufferAttribute(new Float32Array,3)),X.setAttribute("opacity",new t.BufferAttribute(new Float32Array,1)),X.setAttribute("size",new t.BufferAttribute(new Float32Array,1)),X.setAttribute("angle",new t.BufferAttribute(new Float32Array,1));var W=new t.ShaderMaterial({uniforms:{map:{value:null!==(i=n.texture)&&void 0!==i?i:null}},defines:{USE_MAP:!!n.texture},vertexShader:"\nattribute vec3 color;\nattribute float opacity;\nattribute float size;\nattribute float alive; // float used as boolean (0 = false, 1 = true)\n\nvarying vec4 vColor;\n\n#if defined(USE_MAP)\n attribute float angle;\n varying float vAngle;\n#endif\n\nvoid main() {\n if (alive > 0.5) {\n vColor = vec4(color, opacity);\n } else {\n vColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n #if defined(USE_MAP)\n vAngle = angle;\n #endif\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_PointSize = size * ( 300.0 / length( mvPosition.xyz ) );\n gl_Position = projectionMatrix * mvPosition;\n}\n",fragmentShader:"\nvarying vec4 vColor;\n\n#if defined(USE_MAP)\n uniform sampler2D map;\n varying float vAngle;\n#endif\n\nvoid main() {\n gl_FragColor = vColor;\n\n #if defined(USE_MAP)\n float c = cos(vAngle);\n float s = sin(vAngle);\n\n // rotate UV coordinates to rotate texture\n vec2 rotatedUV = vec2(\n c * (gl_PointCoord.x - 0.5) + s * (gl_PointCoord.y - 0.5) + 0.5,\n c * (gl_PointCoord.y - 0.5) - s * (gl_PointCoord.x - 0.5) + 0.5\n );\n vec4 rotatedTexture = texture2D(map, rotatedUV);\n gl_FragColor = vColor * rotatedTexture;\n #endif\n}\n",transparent:!0,blending:null!==(o=n.blending)&&void 0!==o?o:t.NormalBlending,depthWrite:!1});return(I=e.call(this,X,W)||this).instances=[],I.needsRender=!0,I.birthTime=Date.now()/1e3,I.disposed=!1,I.paused=!1,I.positionBase=null!==(a=null===(r=n.positionBase)||void 0===r?void 0:r.clone())&&void 0!==a?a:new t.Vector3,I.positionStyle=null!==(s=n.positionStyle)&&void 0!==s?s:"CUBE",I.positionCubeSpread=null!==(u=null===(l=n.positionCubeSpread)||void 0===l?void 0:l.clone())&&void 0!==u?u:new t.Vector3,I.positionSphereSpread=null!==(c=n.positionSphereSpread)&&void 0!==c?c:0,I.velocityStyle=null!==(d=n.velocityStyle)&&void 0!==d?d:"CUBE",I.velocityCubeBase=null!==(v=null===(p=n.velocityCubeBase)||void 0===p?void 0:p.clone())&&void 0!==v?v:new t.Vector3,I.velocityCubeSpread=null!==(h=null===(f=n.velocityCubeSpread)||void 0===f?void 0:f.clone())&&void 0!==h?h:new t.Vector3,I.velocitySphereBase=null!==(m=n.velocitySphereBase)&&void 0!==m?m:0,I.velocitySphereSpread=null!==(y=n.velocitySphereSpread)&&void 0!==y?y:0,I.accelerationBase=null!==(x=null===(g=n.accelerationBase)||void 0===g?void 0:g.clone())&&void 0!==x?x:new t.Vector3,I.accelerationSpread=null!==(w=null===(b=n.accelerationSpread)||void 0===b?void 0:b.clone())&&void 0!==w?w:new t.Vector3,I.angleBase=null!==(S=n.angleBase)&&void 0!==S?S:0,I.angleSpread=null!==(A=n.angleSpread)&&void 0!==A?A:0,I.angleVelocityBase=null!==(P=n.angleVelocityBase)&&void 0!==P?P:0,I.angleVelocitySpread=null!==(M=n.angleVelocitySpread)&&void 0!==M?M:0,I.angleAccelerationBase=null!==(T=n.angleAccelerationBase)&&void 0!==T?T:0,I.angleAccelerationSpread=null!==(C=n.angleAccelerationSpread)&&void 0!==C?C:0,I.sizeBase=null!==(B=n.sizeBase)&&void 0!==B?B:.1,I.sizeSpread=null!==(z=n.sizeSpread)&&void 0!==z?z:0,I.sizeTween=null!==(N=n.sizeTween)&&void 0!==N?N:null,I.colorBase=null!==(_=null===(E=n.colorBase)||void 0===E?void 0:E.clone())&&void 0!==_?_:new t.Vector3,I.colorSpread=null!==(j=null===(O=n.colorSpread)||void 0===O?void 0:O.clone())&&void 0!==j?j:new t.Vector3,I.colorTween=null!==(V=n.colorTween)&&void 0!==V?V:null,I.opacityBase=(null!==(R=n.opacityBase)&&void 0!==R?R:n.opacityTween)?0:1,I.opacitySpread=null!==(U=n.opacitySpread)&&void 0!==U?U:0,I.opacityTween=null!==(F=n.opacityTween)&&void 0!==F?F:null,I.particlesPerSecond=null!==(D=n.particlesPerSecond)&&void 0!==D?D:60,I.particleDeathAge=null!==(G=n.particleDeathAge)&&void 0!==G?G:1,I}return i(n,e),Object.defineProperty(n.prototype,"texture",{get:function(){return this.material.uniforms.map.value},set:function(e){this.material.uniforms.map.value=e,null===e?!1!==this.material.defines.USE_MAP&&(this.material.defines.USE_MAP=!1,this.material.needsUpdate=!0):!0!==this.material.defines.USE_MAP&&(this.material.defines.USE_MAP=!0,this.material.needsUpdate=!0)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"blending",{get:function(){return this.material.blending},set:function(e){this.material.blending=e},enumerable:!1,configurable:!0}),n.prototype.createInstance=function(e){var n=this.positionBase.clone();switch(this.positionStyle){case"CUBE":n=b(this.positionBase,this.positionCubeSpread);break;case"SPHERE":var i=2*Math.random()-1,o=2*Math.PI*Math.random(),r=Math.sqrt(1-i*i),a=new t.Vector3(r*Math.cos(o),r*Math.sin(o),i);n=(new t.Vector3).addVectors(this.positionBase,a.multiplyScalar(this.positionSphereSpread))}var s=new t.Vector3;switch(this.velocityStyle){case"CUBE":s=b(this.velocityCubeBase,this.velocityCubeSpread);break;case"SPHERE":var l=(new t.Vector3).subVectors(n,this.positionBase),u=x(this.velocitySphereBase,this.velocitySphereSpread);s=l.normalize().multiplyScalar(u)}return new A(e,this.particleDeathAge,n,s,b(this.accelerationBase,this.accelerationSpread),x(this.angleBase,this.angleSpread),x(this.angleVelocityBase,this.angleVelocitySpread),x(this.angleAccelerationBase,this.angleAccelerationSpread),b(this.colorBase,this.colorSpread),this.colorTween,x(this.sizeBase,this.sizeSpread),this.sizeTween,x(this.opacityBase,this.opacitySpread),this.opacityTween)},n.prototype.pause=function(){!0!==this.paused&&(this.paused=!0,this.birthTime=Date.now()/1e3)},n.prototype.play=function(){!1!==this.paused&&(this.paused=!1,this.birthTime=Date.now()/1e3)},n.prototype.setTime=function(e){if(!this.disposed){var n,i=(e/=1e3)-this.birthTime,o=Math.ceil(this.particlesPerSecond*this.particleDeathAge);if(this.geometry.attributes.position.count<o)(c=new Float32Array(3*o)).set(this.geometry.attributes.position.array,0),(n=new t.BufferAttribute(c,3)).needsUpdate=!0,this.geometry.setAttribute("position",n);if(this.geometry.attributes.alive.count<o)(d=new Float32Array(o)).set(this.geometry.attributes.alive.array,0),(n=new t.BufferAttribute(d,1)).needsUpdate=!0,this.geometry.setAttribute("alive",n);if(this.geometry.attributes.color.count<o)(p=new Float32Array(3*o)).set(this.geometry.attributes.color.array,0),(n=new t.BufferAttribute(p,3)).needsUpdate=!0,this.geometry.setAttribute("color",n);if(this.geometry.attributes.opacity.count<o)(v=new Float32Array(o)).set(this.geometry.attributes.opacity.array,0),(n=new t.BufferAttribute(v,1)).needsUpdate=!0,this.geometry.setAttribute("opacity",n);if(this.geometry.attributes.size.count<o)(f=new Float32Array(o)).set(this.geometry.attributes.size.array,0),(n=new t.BufferAttribute(f,1)).needsUpdate=!0,this.geometry.setAttribute("size",n);if(this.geometry.attributes.angle.count<o)(h=new Float32Array(o)).set(this.geometry.attributes.angle.array,0),(n=new t.BufferAttribute(h,1)).needsUpdate=!0,this.geometry.setAttribute("angle",n);this.instances.length<o&&(this.instances.length=o);for(var r=0;r<this.instances.length;r++){var a=this.instances[r];if(r<o&&!1===this.paused&&(void 0===a||!1===a.getAlive(e))){var s=this.particleDeathAge/o*r;if(i>s){var l=e-(i-s)%this.particleDeathAge;this.instances[r]=a=this.createInstance(l)}}if(a){var u=a.getState(e),c=u.position,d=u.alive,p=u.color,v=u.opacity,f=u.size,h=u.angle;this.geometry.attributes.position.setXYZ(r,c.x,c.y,c.z),this.geometry.attributes.position.needsUpdate=!0,this.geometry.attributes.alive.setX(r,d?1:0),this.geometry.attributes.alive.needsUpdate=!0,this.geometry.attributes.color.setXYZ(r,p.r,p.g,p.b),this.geometry.attributes.color.needsUpdate=!0,this.geometry.attributes.opacity.setX(r,v),this.geometry.attributes.opacity.needsUpdate=!0,this.geometry.attributes.size.setX(r,f),this.geometry.attributes.size.needsUpdate=!0,this.geometry.attributes.angle.setX(r,h),this.geometry.attributes.angle.needsUpdate=!0}}this.geometry.computeBoundingBox(),this.geometry.boundingSphere||(this.geometry.boundingSphere=new t.Sphere),this.geometry.boundingBox.getBoundingSphere(this.geometry.boundingSphere),this.needsRender=!0}},n.prototype.dispose=function(){var e;this.disposed=!0,this.geometry.dispose(),null===(e=this.texture)||void 0===e||e.dispose(),this.material.dispose()},n}(t.Points);exports.Airflow=g,exports.Flame=p,exports.Particle=P,exports.SpotLight=f;
package/vue/index.d.ts CHANGED
@@ -95,6 +95,15 @@ export declare interface FiveActionVueCallbacks {
95
95
  * @returns 加载完成的 Promise 参数同 callback
96
96
  */
97
97
  preloadPano(panoIndex: number, callback?: (costs: number) => void): Promise<number>;
98
+ /**
99
+ * 计算三维空间的点对应到屏幕的二维坐标
100
+ * @description
101
+ * 调用 `project2d()` 和 `useFiveProject2d()` 均可用于计算三维空间的点对应到屏幕的二维坐标
102
+ * 区别在于:
103
+ * - `project2d()` 只计算一次,入参改变或 cameraUpdate 时 不会更新值
104
+ * - `useFiveProject2d()` 通过 watch 监听入参和 cameraUpdate 变化,自动更新返回值
105
+ */
106
+ project2d(vector3: THREE.Vector3, testModel?: boolean | undefined): THREE.Vector2 | null;
98
107
  }
99
108
 
100
109
  /**
@@ -250,9 +259,19 @@ export declare function unsafe__useFiveInject(): Five;
250
259
  * preloadPano(panoIndex: number, callback?: (costs: number) => void): Promise<number>
251
260
  * ```
252
261
  *
262
+ * @function project2d
263
+ * ```
264
+ * 计算三维空间的点对应到屏幕的二维坐标
265
+ * 调用 `project2d()` 和 `useFiveProject2d()` 均可用于计算三维空间的点对应到屏幕的二维坐标
266
+ * 区别在于:
267
+ * - `project2d()` 只计算一次,入参改变或 cameraUpdate 时 不会更新值
268
+ * - `useFiveProject2d()` 通过 watch 监听入参和 cameraUpdate 变化,自动更新返回值
269
+ * project2d(vector3: THREE.Vector3, testModel?: boolean ): THREE.Vector2
270
+ * ```
271
+ *
253
272
  * @example
254
273
  * ```
255
- * const { updateCamera, initBasisLoader, getPixels, render, needsRender, preloadPano } = useFiveAction();
274
+ * const { updateCamera, initBasisLoader, getPixels, render, needsRender, preloadPano, project2d } = useFiveAction();
256
275
  * ```
257
276
  */
258
277
  export declare function useFiveAction(): FiveActionVueCallbacks;
@@ -370,11 +389,13 @@ export declare function useFiveModelIntersectRaycaster(): FiveModelIntersectRayc
370
389
  export declare function useFiveModelReadyState(): Ref<"Loaded" | "Empty">;
371
390
 
372
391
  /**
373
- * Five Vue Hooks: 将三维的坐标对应到二维屏幕
392
+ * Five Vue Hooks: 计算三维坐标对应到屏幕二维坐标
374
393
  *
375
394
  * @function project2d
376
395
  * ```
377
- * 计算模型射线碰撞检测
396
+ * 计算三维坐标对应到屏幕二维坐标
397
+ * `useFiveProject2d()` 通过 watch 监听入参和 cameraUpdate 变化,自动更新返回值
398
+ * 多次调用时会创建多个 watch 监听,推荐 const { project2d } = useFiveAction();
378
399
  * // param vector 三维的坐标
379
400
  * // param testModel 是否和模型检测,如果检测,则被模型遮挡会返回 null
380
401
  * // returns 三维的坐标 或者 null
package/vue/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @realsee/five
3
3
  *
4
- * Generated: 2022-11-07
5
- * Version: 5.0.0-alpha.162
4
+ * Generated: 2022-11-22
5
+ * Version: 5.0.0-alpha.164
6
6
  *
7
7
  * Terms:
8
8
  * Realsee SDK License Agreement
@@ -257,4 +257,4 @@
257
257
  * Agreement and all related documents shall be drafted in English.
258
258
  */
259
259
 
260
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib"),n=require("vue"),t=require("@realsee/five");function r(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var o=r(require("three")),i=!1;var u=Symbol();function a(){var e=n.inject(u);if(!e)throw new Error("Inject five error!");return e}var c={display:"inline-block",overflow:"hidden"},l=n.defineComponent({props:{width:{type:Number,required:!0},height:{type:Number,required:!0}},setup:function(t){var r=n.toRef(t,"width"),o=n.toRef(t,"height"),i=a(),u=n.ref(null);return n.watch([r,o,u],(function(){if(i.renderer&&u.value){if(null!==i.renderer.domElement.parentNode&&i.renderer.domElement.parentNode!==u.value)throw new Error("There are more than 2 fiveCanvas in this context.");i.renderer.domElement.parentNode!==u.value&&u.value.appendChild(i.renderer.domElement),i.camera.aspect=r.value/o.value,i.camera.updateProjectionMatrix(),i.renderer.setSize(r.value,o.value),i.needsRender=!0}})),function(){return n.h("div",{id:"five",style:e.__assign({width:"".concat(r.value,"px"),height:"".concat(o.value,"px")},c),ref:u})}}}),f=[];var s=n.defineComponent({props:{work:Object,initialWork:Object,initialState:Object,initialUserAction:Boolean,onWorkChange:Function,onStateChange:Function,onCurrentStateChange:Function,onError:Function,fiveInitArgs:{type:Object,default:function(){return{}}},style:Object},setup:function(r){var a,c,l=n.toRefs(r).work,s=function(e){var n=void 0===e?{}:e,t=n.backgroundColor,r=void 0===t?1579548:t,i=n.backgroundAlpha,u=void 0===i?1:i,a=n.pixelRatio,c=void 0===a?1:a;if("undefined"!=typeof window){var l=f.shift();return l||((l=new o.WebGLRenderer({antialias:!1,alpha:!0})).outputEncoding=o.sRGBEncoding),l.setPixelRatio(c),l.setClearColor(r,u),l.autoClear=!0,l}}({pixelRatio:1===t.getViewportScale()?window.devicePixelRatio:1}),d=new t.Five(e.__assign({renderer:s},r.fiveInitArgs));return(r.work||r.initialWork)&&d.load(r.work||r.initialWork,r.initialState,void 0,null===(a=r.initialUserAction)||void 0===a||a),c=!!r.work,i=c,l&&n.watch(l,(function(e,n){e&&e!==(null==d?void 0:d.work)&&(null==d||d.load(e,r.initialState))})),n.onBeforeUnmount((function(){d&&(d.dispose(),function(e){e&&-1===f.indexOf(e)&&f.push(e)}(d.renderer))})),d.on("load",(function(){r.onWorkChange&&d.work&&r.onWorkChange(null==d?void 0:d.work)})),d.on("stateChange",(function(e,n){r.onStateChange&&r.onStateChange(e,n)})),d.on("currentStateChange",(function(e,n){r.onCurrentStateChange&&r.onCurrentStateChange(e,n)})),d.on("error",(function(e){r.onError?r.onError(e):console.warn(e.message)})),n.provide(u,d),{five:n.shallowReadonly(d)}},render:function(){return n.h("div",{style:this.$props.style},this.$slots)}});function d(e,t){void 0===t&&(t=!1);var r=a(),o=n.ref(Symbol()),i=n.shallowRef(e?r.project2d(n.isRef(e)?e.value:e,t):null),u=r.on("cameraUpdate",(function(){o.value=Symbol()}));return n.onBeforeUnmount((function(){u()})),n.watch([o,e],(function(){i.value=r.project2d(n.isRef(e)?e.value:e,t)})),i}function v(e){var n=e.camera.getWorldDirection(new o.Vector3);return new o.Raycaster(e.camera.position,n)}function p(e){return e.camera.getWorldDirection(new o.Vector3)}function h(e){var t=a(),r=n.shallowRef([]);return n.watch(e,(function(){r.value=t.model.intersectRaycaster(n.isRef(e)?e.value:e)})),r}function m(e){return e.model.empty?"Empty":"Loaded"}function w(e){return e.model.bounding.clone()}exports.FiveCanvas=l,exports.FiveProvider=s,exports.unsafe__useFiveInject=function(){return a()},exports.useFiveAction=function(){var e=a();return{updateCamera:function(n,t){return e.updateCamera(n,t)},initBasisLoader:function(n){return e.initBasisLoader(n)},getPixels:function(n,t,r,o,i){return e.getPixels(n,t,r,o,i)},render:function(n){return e.render(n)},needsRender:function(){return e.needsRender=!0},preloadPano:function(n,t){return e.preloadPano(n,t)}}},exports.useFiveCameraDirection=function(){var e=a(),t=n.shallowRef(p(e)),r=e.on("cameraUpdate",(function(){t.value=p(e)}));return n.onBeforeUnmount((function(){r()})),t},exports.useFiveCameraRaycaster=function(){var e=a(),t=n.shallowRef(v(e)),r=e.on("cameraUpdate",(function(){t.value=v(e)}));return n.onBeforeUnmount((function(){r()})),t},exports.useFiveCurrentObserver=function(){var e=a(),t=n.reactive(e.getCurrentState()),r=n.ref(e.work?e.work.observers[t.panoIndex]:null),o=e.on("currentStateChange",(function(){Object.assign(t,e.getCurrentState()),e.work&&(r.value=e.work.observers[t.panoIndex])}));return n.onBeforeUnmount((function(){o()})),r},exports.useFiveCurrentState=function(){var e=a(),t=n.ref(e.getCurrentState()),r=e.on("currentStateChange",(function(){Object.assign(t.value,e.getCurrentState())}));return n.onBeforeUnmount((function(){r()})),[t,function(n,t,r){var o="function"==typeof n?n(e.getCurrentState()):n;e.setState(o,t,r)}]},exports.useFiveEventCallback=function(e,t){var r=a().on(e,t);n.onBeforeUnmount((function(){r()}))},exports.useFiveFloor=function(){var e=a(),t=n.ref(e.model.shownFloor),r=n.ref(e.model.floorLength),o=[];return o.push(e.on("modelShownFloorChange",(function(){t.value=e.model.shownFloor}))),o.push(e.on("modelLoaded",(function(){r.value=e.model.floorLength}))),n.onBeforeUnmount((function(){for(var e;e=o.shift();)e()})),[t,r,function(n){"number"==typeof n?e.model.show(n):e.model.show()}]},exports.useFiveHelper=function(){var e=a(),t=n.ref(e.helperVisible),r=e.on("helpersVisibleChange",(function(e){t.value=e}));return n.onBeforeUnmount((function(){r()})),[t,function(n){e.helperVisible=n}]},exports.useFiveModel=function(){var e=a(),t=n.shallowRef(e.model),r=e.on("modelLoaded",(function(){t.value=e.model}));return n.onBeforeUnmount((function(){r()})),t},exports.useFiveModelBounding=function(){var e=a(),t=n.shallowRef(w(e)),r=e.on("modelLoaded",(function(){t.value=w(e)}));return n.onBeforeUnmount((function(){r()})),t},exports.useFiveModelIntersectRaycaster=function(){return h},exports.useFiveModelReadyState=function(){var e=a(),t=n.ref(m(e)),r=e.on("modelLoaded",(function(){t.value=m(e)}));return n.onBeforeUnmount((function(){r()})),t},exports.useFiveProject2d=function(){return d},exports.useFiveScene=function(){return a().scene},exports.useFiveState=function(){var t=a(),r=n.ref(e.__assign({},t.state)),o=t.on("stateChange",(function(n){Object.assign(r.value,e.__assign({},n))}));return n.onBeforeUnmount((function(){o()})),[r,function(e,n,r){void 0===n&&(n=!1),void 0===r&&(r=!0);var o="function"==typeof e?e(t.getCurrentState()):e;t.setState(o,n,r)}]},exports.useFiveWork=function(){var e=a(),t=n.ref(e.work),r=n.readonly(t),o=e.on("load",(function(){t.value=e.work}));return n.onBeforeUnmount((function(){o()})),[r,function(n,t,r,o){if(i)throw new Error("props 'work' is set in fiveProvider, if you need modify work internal, use 'initialWork' instead.");return e.load(n,t,r,o)}]};
260
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),n=require("@realsee/five");function t(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var r=t(require("three")),o=function(){return o=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e},o.apply(this,arguments)},i=!1;var u=Symbol();function a(){var n=e.inject(u);if(!n)throw new Error("Inject five error!");return n}var c={display:"inline-block",overflow:"hidden"},f=e.defineComponent({props:{width:{type:Number,required:!0},height:{type:Number,required:!0}},setup:function(n){var t=e.toRef(n,"width"),r=e.toRef(n,"height"),i=a(),u=e.ref(null);return e.watch([t,r,u],(function(){if(i.renderer&&u.value){if(null!==i.renderer.domElement.parentNode&&i.renderer.domElement.parentNode!==u.value)throw new Error("There are more than 2 fiveCanvas in this context.");i.renderer.domElement.parentNode!==u.value&&u.value.appendChild(i.renderer.domElement),i.camera.aspect=t.value/r.value,i.camera.updateProjectionMatrix(),i.renderer.setSize(t.value,r.value),i.needsRender=!0}})),function(){return e.h("div",{id:"five",style:o({width:"".concat(t.value,"px"),height:"".concat(r.value,"px")},c),ref:u})}}}),l=[];var s=e.defineComponent({props:{work:Object,initialWork:Object,initialState:Object,initialUserAction:Boolean,onWorkChange:Function,onStateChange:Function,onCurrentStateChange:Function,onError:Function,fiveInitArgs:{type:Object,default:function(){return{}}},style:Object},setup:function(t){var a,c,f=e.toRefs(t).work,s=function(e){var n=void 0===e?{}:e,t=n.backgroundColor,o=void 0===t?1579548:t,i=n.backgroundAlpha,u=void 0===i?1:i,a=n.pixelRatio,c=void 0===a?1:a;if("undefined"!=typeof window){var f=l.shift();return f||((f=new r.WebGLRenderer({antialias:!1,alpha:!0})).outputEncoding=r.sRGBEncoding),f.setPixelRatio(c),f.setClearColor(o,u),f.autoClear=!0,f}}({pixelRatio:1===n.getViewportScale()?window.devicePixelRatio:1}),d=new n.Five(o({renderer:s},t.fiveInitArgs));return(t.work||t.initialWork)&&d.load(t.work||t.initialWork,t.initialState,void 0,null===(a=t.initialUserAction)||void 0===a||a),c=!!t.work,i=c,f&&e.watch(f,(function(e,n){e&&e!==(null==d?void 0:d.work)&&(null==d||d.load(e,t.initialState))})),e.onBeforeUnmount((function(){d&&(d.dispose(),function(e){e&&-1===l.indexOf(e)&&l.push(e)}(d.renderer))})),d.on("load",(function(){t.onWorkChange&&d.work&&t.onWorkChange(null==d?void 0:d.work)})),d.on("stateChange",(function(e,n){t.onStateChange&&t.onStateChange(e,n)})),d.on("currentStateChange",(function(e,n){t.onCurrentStateChange&&t.onCurrentStateChange(e,n)})),d.on("error",(function(e){t.onError?t.onError(e):console.warn(e.message)})),e.provide(u,d),{five:e.shallowReadonly(d)}},render:function(){return e.h("div",{style:this.$props.style},this.$slots)}});function d(n,t){void 0===t&&(t=!1);var r=a(),o=e.ref(Symbol()),i=e.shallowRef(n?r.project2d(e.isRef(n)?n.value:n,t):null),u=r.on("cameraUpdate",(function(){o.value=Symbol()}));return e.onBeforeUnmount((function(){u()})),e.watch([o,n],(function(){i.value=r.project2d(e.isRef(n)?n.value:n,t)})),i}function v(e){var n=e.camera.getWorldDirection(new r.Vector3);return new r.Raycaster(e.camera.position,n)}function p(e){return e.camera.getWorldDirection(new r.Vector3)}function h(n){var t=a(),r=e.shallowRef([]);return e.watch(n,(function(){r.value=t.model.intersectRaycaster(e.isRef(n)?n.value:n)})),r}function m(e){return e.model.empty?"Empty":"Loaded"}function w(e){return e.model.bounding.clone()}exports.FiveCanvas=f,exports.FiveProvider=s,exports.unsafe__useFiveInject=function(){return a()},exports.useFiveAction=function(){var e=a();return{updateCamera:function(n,t){return e.updateCamera(n,t)},initBasisLoader:function(n){return e.initBasisLoader(n)},getPixels:function(n,t,r,o,i){return e.getPixels(n,t,r,o,i)},render:function(n){return e.render(n)},needsRender:function(){return e.needsRender=!0},preloadPano:function(n,t){return e.preloadPano(n,t)},project2d:function(n,t){return void 0===t&&(t=!1),e.project2d(n,t)}}},exports.useFiveCameraDirection=function(){var n=a(),t=e.shallowRef(p(n)),r=n.on("cameraUpdate",(function(){t.value=p(n)}));return e.onBeforeUnmount((function(){r()})),t},exports.useFiveCameraRaycaster=function(){var n=a(),t=e.shallowRef(v(n)),r=n.on("cameraUpdate",(function(){t.value=v(n)}));return e.onBeforeUnmount((function(){r()})),t},exports.useFiveCurrentObserver=function(){var n=a(),t=e.reactive(n.getCurrentState()),r=e.ref(n.work?n.work.observers[t.panoIndex]:null),o=n.on("currentStateChange",(function(){Object.assign(t,n.getCurrentState()),n.work&&(r.value=n.work.observers[t.panoIndex])}));return e.onBeforeUnmount((function(){o()})),r},exports.useFiveCurrentState=function(){var n=a(),t=e.ref(n.getCurrentState()),r=n.on("currentStateChange",(function(){Object.assign(t.value,n.getCurrentState())}));return e.onBeforeUnmount((function(){r()})),[t,function(e,t,r){var o="function"==typeof e?e(n.getCurrentState()):e;n.setState(o,t,r)}]},exports.useFiveEventCallback=function(n,t){var r=a().on(n,t);e.onBeforeUnmount((function(){r()}))},exports.useFiveFloor=function(){var n=a(),t=e.ref(n.model.shownFloor),r=e.ref(n.model.floorLength),o=[];return o.push(n.on("modelShownFloorChange",(function(){t.value=n.model.shownFloor}))),o.push(n.on("modelLoaded",(function(){r.value=n.model.floorLength}))),e.onBeforeUnmount((function(){for(var e;e=o.shift();)e()})),[t,r,function(e){"number"==typeof e?n.model.show(e):n.model.show()}]},exports.useFiveHelper=function(){var n=a(),t=e.ref(n.helperVisible),r=n.on("helpersVisibleChange",(function(e){t.value=e}));return e.onBeforeUnmount((function(){r()})),[t,function(e){n.helperVisible=e}]},exports.useFiveModel=function(){var n=a(),t=e.shallowRef(n.model),r=n.on("modelLoaded",(function(){t.value=n.model}));return e.onBeforeUnmount((function(){r()})),t},exports.useFiveModelBounding=function(){var n=a(),t=e.shallowRef(w(n)),r=n.on("modelLoaded",(function(){t.value=w(n)}));return e.onBeforeUnmount((function(){r()})),t},exports.useFiveModelIntersectRaycaster=function(){return h},exports.useFiveModelReadyState=function(){var n=a(),t=e.ref(m(n)),r=n.on("modelLoaded",(function(){t.value=m(n)}));return e.onBeforeUnmount((function(){r()})),t},exports.useFiveProject2d=function(){return d},exports.useFiveScene=function(){return a().scene},exports.useFiveState=function(){var n=a(),t=e.ref(o({},n.state)),r=n.on("stateChange",(function(e){Object.assign(t.value,o({},e))}));return e.onBeforeUnmount((function(){r()})),[t,function(e,t,r){void 0===t&&(t=!1),void 0===r&&(r=!0);var o="function"==typeof e?e(n.getCurrentState()):e;n.setState(o,t,r)}]},exports.useFiveWork=function(){var n=a(),t=e.ref(n.work),r=e.readonly(t),o=n.on("load",(function(){t.value=n.work}));return e.onBeforeUnmount((function(){o()})),[r,function(e,t,r,o){if(i)throw new Error("props 'work' is set in fiveProvider, if you need modify work internal, use 'initialWork' instead.");return n.load(e,t,r,o)}]};
@@ -1 +0,0 @@
1
- <!DOCTYPE html><html class="default"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>TilePlane | 如视 Five SDK - v5.0.0-alpha.162</title><meta name="description" content="Documentation for 如视 Five SDK - v5.0.0-alpha.162"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><div class="tsd-page-toolbar"><div class="container"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">如视 Five SDK - v5.0.0-alpha.162</a></div><div class="table-cell" id="tsd-widgets"><div id="tsd-filter"><a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a><div class="tsd-filter-group"><div class="tsd-select" id="tsd-filter-visibility"><span class="tsd-select-label">All</span><ul class="tsd-select-list"><li data-value="public">Public</li><li data-value="protected">Public/Protected</li><li data-value="private" class="selected">All</li></ul></div> <input type="checkbox" id="tsd-filter-inherited" checked/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div><div class="tsd-page-title"><div class="container"><ul class="tsd-breadcrumb"><li><a href="../modules.html">如视 Five SDK - v5.0.0-alpha.162</a></li><li><a href="../modules/five.html">five</a></li><li><a href="five.TilePlane.html">TilePlane</a></li></ul><h1>Class TilePlane </h1></div></div></header><div class="container container-main"><div class="row"><div class="col-8 col-content"><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><span class="target">TilePlane</span></li></ul></section><section class="tsd-panel-group tsd-index-group"><h2>Index</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section "><h3>Constructors</h3><ul class="tsd-index-list"><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="five.TilePlane.html#constructor" class="tsd-kind-icon">constructor</a></li></ul></section><section class="tsd-index-section "><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-property tsd-parent-kind-class"><a href="five.TilePlane.html#distance" class="tsd-kind-icon">distance</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="five.TilePlane.html#normal" class="tsd-kind-icon">normal</a></li></ul></section><section class="tsd-index-section "><h3>Methods</h3><ul class="tsd-index-list"><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#clone" class="tsd-kind-icon">clone</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#equals" class="tsd-kind-icon">equals</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#fromCoefficients" class="tsd-kind-icon">from<wbr/>Coefficients</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#fromNormalDistance" class="tsd-kind-icon">from<wbr/>Normal<wbr/>Distance</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#fromPointNormal" class="tsd-kind-icon">from<wbr/>Point<wbr/>Normal</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#getPointDistance" class="tsd-kind-icon">get<wbr/>Point<wbr/>Distance</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#projectPointOntoPlane" class="tsd-kind-icon">project<wbr/>Point<wbr/>Onto<wbr/>Plane</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#transform" class="tsd-kind-icon">transform</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-member-group "><h2>Constructors</h2><section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link">constructor<a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">new <wbr/>Tile<wbr/>Plane<span class="tsd-signature-symbol">(</span>normal<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span>, distance<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in lib/five/loaders/model/tiled-model/math/plane.ts:16</li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>normal: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> = ...</span></h5></li><li><h5>distance: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = 0</span></h5></li></ul><h4 class="tsd-returns-title">Returns <a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></h4></li></ul></section></section><section class="tsd-panel-group tsd-member-group "><h2>Properties</h2><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class"><a id="distance" class="tsd-anchor"></a><h3 class="tsd-anchor-link">distance<a href="#distance" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><div class="tsd-signature tsd-kind-icon">distance<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in lib/five/loaders/model/tiled-model/math/plane.ts:14</li></ul></aside></section><section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class"><a id="normal" class="tsd-anchor"></a><h3 class="tsd-anchor-link">normal<a href="#normal" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><div class="tsd-signature tsd-kind-icon">normal<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">default</span></div><aside class="tsd-sources"><ul><li>Defined in lib/five/loaders/model/tiled-model/math/plane.ts:13</li></ul></aside></section></section><section class="tsd-panel-group tsd-member-group "><h2>Methods</h2><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="clone" class="tsd-anchor"></a><h3 class="tsd-anchor-link">clone<a href="#clone" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">clone<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in lib/five/loaders/model/tiled-model/math/plane.ts:46</li></ul></aside><h4 class="tsd-returns-title">Returns <a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="equals" class="tsd-anchor"></a><h3 class="tsd-anchor-link">equals<a href="#equals" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">equals<span class="tsd-signature-symbol">(</span>right<span class="tsd-signature-symbol">: </span><a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in lib/five/loaders/model/tiled-model/math/plane.ts:51</li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>right: <a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="fromCoefficients" class="tsd-anchor"></a><h3 class="tsd-anchor-link">from<wbr/>Coefficients<a href="#fromCoefficients" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">from<wbr/>Coefficients<span class="tsd-signature-symbol">(</span>a<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, b<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, c<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, d<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in lib/five/loaders/model/tiled-model/math/plane.ts:39</li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>a: <span class="tsd-signature-type">number</span></h5></li><li><h5>b: <span class="tsd-signature-type">number</span></h5></li><li><h5>c: <span class="tsd-signature-type">number</span></h5></li><li><h5>d: <span class="tsd-signature-type">number</span></h5></li></ul><h4 class="tsd-returns-title">Returns <a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="fromNormalDistance" class="tsd-anchor"></a><h3 class="tsd-anchor-link">from<wbr/>Normal<wbr/>Distance<a href="#fromNormalDistance" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">from<wbr/>Normal<wbr/>Distance<span class="tsd-signature-symbol">(</span>normal<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span>, distance<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in lib/five/loaders/model/tiled-model/math/plane.ts:22</li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>normal: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span></h5></li><li><h5>distance: <span class="tsd-signature-type">number</span></h5></li></ul><h4 class="tsd-returns-title">Returns <a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="fromPointNormal" class="tsd-anchor"></a><h3 class="tsd-anchor-link">from<wbr/>Point<wbr/>Normal<a href="#fromPointNormal" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">from<wbr/>Point<wbr/>Normal<span class="tsd-signature-symbol">(</span>point<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span>, normal<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in lib/five/loaders/model/tiled-model/math/plane.ts:29</li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>point: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span></h5></li><li><h5>normal: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span></h5></li></ul><h4 class="tsd-returns-title">Returns <a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="getPointDistance" class="tsd-anchor"></a><h3 class="tsd-anchor-link">get<wbr/>Point<wbr/>Distance<a href="#getPointDistance" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">get<wbr/>Point<wbr/>Distance<span class="tsd-signature-symbol">(</span>point<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in lib/five/loaders/model/tiled-model/math/plane.ts:57</li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>point: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="projectPointOntoPlane" class="tsd-anchor"></a><h3 class="tsd-anchor-link">project<wbr/>Point<wbr/>Onto<wbr/>Plane<a href="#projectPointOntoPlane" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">project<wbr/>Point<wbr/>Onto<wbr/>Plane<span class="tsd-signature-symbol">(</span>point<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span>, result<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">default</span></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in lib/five/loaders/model/tiled-model/math/plane.ts:69</li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>point: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span></h5></li><li><h5>result: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol"> = ...</span></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">default</span></h4></li></ul></section><section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"><a id="transform" class="tsd-anchor"></a><h3 class="tsd-anchor-link">transform<a href="#transform" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"><li class="tsd-signature tsd-kind-icon">transform<span class="tsd-signature-symbol">(</span>matrix4<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">default</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></li></ul><ul class="tsd-descriptions"><li class="tsd-description"><aside class="tsd-sources"><ul><li>Defined in lib/five/loaders/model/tiled-model/math/plane.ts:62</li></ul></aside><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>matrix4: <span class="tsd-signature-type">default</span></h5></li></ul><h4 class="tsd-returns-title">Returns <a href="five.TilePlane.html" class="tsd-signature-type" data-tsd-kind="Class">TilePlane</a></h4></li></ul></section></section></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class=""><a href="../modules.html">Modules</a></li><li class="current tsd-kind-module"><a href="../modules/five.html">five</a><ul><li class=" tsd-kind-namespace tsd-parent-kind-module"><a href="../modules/five.SubscribeMixinType.html">Subscribe<wbr/>Mixin<wbr/>Type</a></li></ul></li><li class=" tsd-kind-module"><a href="../modules/gltf_loader.html">gltf-<wbr/>loader</a></li><li class=" tsd-kind-module"><a href="../modules/line.html">line</a></li><li class=" tsd-kind-module"><a href="../modules/react.html">react</a></li><li class=" tsd-kind-module"><a href="../modules/server.html">server</a></li><li class=" tsd-kind-module"><a href="../modules/sticker.html">sticker</a></li><li class=" tsd-kind-module"><a href="../modules/vfx.html">vfx</a></li><li class=" tsd-kind-module"><a href="../modules/vue.html">vue</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-class tsd-parent-kind-module"><a href="five.TilePlane.html" class="tsd-kind-icon">Tile<wbr/>Plane</a><ul><li class="tsd-kind-constructor tsd-parent-kind-class"><a href="five.TilePlane.html#constructor" class="tsd-kind-icon">constructor</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="five.TilePlane.html#distance" class="tsd-kind-icon">distance</a></li><li class="tsd-kind-property tsd-parent-kind-class"><a href="five.TilePlane.html#normal" class="tsd-kind-icon">normal</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#clone" class="tsd-kind-icon">clone</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#equals" class="tsd-kind-icon">equals</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#fromCoefficients" class="tsd-kind-icon">from<wbr/>Coefficients</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#fromNormalDistance" class="tsd-kind-icon">from<wbr/>Normal<wbr/>Distance</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#fromPointNormal" class="tsd-kind-icon">from<wbr/>Point<wbr/>Normal</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#getPointDistance" class="tsd-kind-icon">get<wbr/>Point<wbr/>Distance</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#projectPointOntoPlane" class="tsd-kind-icon">project<wbr/>Point<wbr/>Onto<wbr/>Plane</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="five.TilePlane.html#transform" class="tsd-kind-icon">transform</a></li></ul></li></ul></nav></div></div></div><footer class=""><div class="container"><h2>Legend</h2><div class="tsd-legend-group"><ul class="tsd-legend"><li class="tsd-kind-namespace"><span class="tsd-kind-icon">Namespace</span></li><li class="tsd-kind-variable"><span class="tsd-kind-icon">Variable</span></li><li class="tsd-kind-function"><span class="tsd-kind-icon">Function</span></li><li class="tsd-kind-function tsd-has-type-parameter"><span class="tsd-kind-icon">Function with type parameter</span></li><li class="tsd-kind-type-alias"><span class="tsd-kind-icon">Type alias</span></li><li class="tsd-kind-type-alias tsd-has-type-parameter"><span class="tsd-kind-icon">Type alias with type parameter</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-class"><span class="tsd-kind-icon">Class</span></li><li class="tsd-kind-class tsd-has-type-parameter"><span class="tsd-kind-icon">Class with type parameter</span></li><li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li><li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li><li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li></ul><ul class="tsd-legend"><li class="tsd-kind-interface"><span class="tsd-kind-icon">Interface</span></li><li class="tsd-kind-interface tsd-has-type-parameter"><span class="tsd-kind-icon">Interface with type parameter</span></li></ul></div><h2>Settings</h2><p>Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="overlay"></div><script src="../assets/main.js"></script></body></html>