ohzi-core 12.11.0 → 13.0.0
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.
- package/build/index.mjs +1 -1
- package/build/index.mjs.map +1 -1
- package/package.json +15 -12
- package/src/BaseApplication.ts +33 -0
- package/src/{Browser.js → Browser.ts} +11 -6
- package/src/{CameraManager.js → CameraManager.ts} +7 -5
- package/src/{Capabilities.js → Capabilities.ts} +3 -1
- package/src/{CustomBezierCurve.js → CustomBezierCurve.ts} +6 -4
- package/src/{Debug.js → Debug.ts} +36 -132
- package/src/{Graphics.js → Graphics.ts} +62 -212
- package/src/{Initializer.js → Initializer.ts} +4 -11
- package/src/{KeyboardInput.js → KeyboardInput.ts} +24 -48
- package/src/{OS.js → OS.ts} +15 -2
- package/src/{OScreen.js → OScreen.ts} +18 -23
- package/src/OrthographicCamera.ts +25 -0
- package/src/PerspectiveCamera.ts +25 -0
- package/src/{ReflectionPlaneContext.js → ReflectionPlaneContext.ts} +6 -6
- package/src/{RenderLayers.js → RenderLayers.ts} +0 -1
- package/src/{RenderLoop.js → RenderLoop.ts} +14 -17
- package/src/{RenderOrder.js → RenderOrder.ts} +0 -1
- package/src/{ResourceContainer.js → ResourceContainer.ts} +7 -22
- package/src/{SceneManager.js → SceneManager.ts} +16 -17
- package/src/{Screen.js → Screen.ts} +5 -20
- package/src/{Time.js → Time.ts} +14 -14
- package/src/action_sequencer/{ActionEvent.js → ActionEvent.ts} +6 -7
- package/src/action_sequencer/{ActionInterpolator.js → ActionInterpolator.ts} +8 -12
- package/src/action_sequencer/{ActionSequencer.js → ActionSequencer.ts} +32 -90
- package/src/action_sequencer/{NumberInterpolator.js → NumberInterpolator.ts} +6 -19
- package/src/action_sequencer/{VectorInterpolator.js → VectorInterpolator.ts} +6 -13
- package/src/{blitter_index.js → blitter_index.ts} +4 -9
- package/src/canvas_drawer/{CanvasDrawer.js → CanvasDrawer.ts} +16 -44
- package/src/canvas_drawer/{MultiLineTextDrawer.js → MultiLineTextDrawer.ts} +3 -8
- package/src/canvas_drawer/{SimpleTextDrawer.js → SimpleTextDrawer.ts} +3 -8
- package/src/components/{AudioClip.js → AudioClip.ts} +14 -18
- package/src/components/{AxisHelper.js → AxisHelper.ts} +3 -9
- package/src/components/{BaseObject.js → BaseObject.ts} +16 -10
- package/src/components/{EdgeMesh.js → EdgeMesh.ts} +14 -36
- package/src/components/{GeometryEdgeVisualizer.js → GeometryEdgeVisualizer.ts} +6 -14
- package/src/components/Grid.ts +31 -0
- package/src/components/Input.ts +63 -0
- package/src/components/{Line.js → Line.ts} +19 -43
- package/src/components/{MultiLinePath.js → MultiLinePath.ts} +6 -6
- package/src/components/{MultiLineText2D.js → MultiLineText2D.ts} +5 -15
- package/src/components/{ObjectAxis.js → ObjectAxis.ts} +2 -8
- package/src/components/{ObjectOrientedBoundingBox.js → ObjectOrientedBoundingBox.ts} +16 -36
- package/src/components/{PlaneHelper.js → PlaneHelper.ts} +1 -5
- package/src/components/{Shape2D.js → Shape2D.ts} +4 -14
- package/src/components/{Shape3D.js → Shape3D.ts} +3 -11
- package/src/components/{Text2D.js → Text2D.ts} +8 -12
- package/src/components/{UpdatableMaterialMesh.js → UpdatableMaterialMesh.ts} +3 -7
- package/src/components/{WorldImage.js → WorldImage.ts} +10 -16
- package/src/components/mouse_interactors/{ObjectRotator.js → ObjectRotator.ts} +12 -5
- package/src/components/sdf_text/{SDFText.js → SDFText.ts} +24 -10
- package/src/components/sdf_text/{SDFTextBatch.js → SDFTextBatch.ts} +18 -12
- package/src/components/sdf_text/{TextGlyph.js → TextGlyph.ts} +5 -1
- package/src/data_textures/{CustomDataTexture.js → CustomDataTexture.ts} +10 -7
- package/src/data_textures/{RGBADataTexture.js → RGBADataTexture.ts} +2 -2
- package/src/data_textures/{RGBAFloatDataTexture.js → RGBAFloatDataTexture.ts} +2 -3
- package/src/data_textures/{RGBDataTexture.js → RGBDataTexture.ts} +1 -1
- package/src/data_textures/{RGBFloatDataTexture.js → RGBFloatDataTexture.ts} +1 -1
- package/src/gpu_particles/{GPUParticleSystem.js → GPUParticleSystem.ts} +29 -18
- package/src/gpu_particles/ParticleAttribute.ts +110 -0
- package/src/gpu_particles/{ParticlePositionAttribute.js → ParticlePositionAttribute.ts} +8 -4
- package/src/html_utilities/{CSSAnimator.js → CSSAnimator.ts} +27 -5
- package/src/html_utilities/css_animator_states/{Animating.js → Animating.ts} +7 -4
- package/src/html_utilities/css_animator_states/{Idle.js → Idle.ts} +4 -4
- package/src/{index.js → index.ts} +10 -14
- package/src/loaders/{AsyncAbstractLoader.js → AsyncAbstractLoader.ts} +12 -20
- package/src/loaders/{AsyncAudiosLoader.js → AsyncAudiosLoader.ts} +1 -1
- package/src/loaders/{AsyncObjectsLoader.js → AsyncObjectsLoader.ts} +1 -7
- package/src/loaders/{AsyncTexturesLoader.js → AsyncTexturesLoader.ts} +3 -3
- package/src/loaders/assets_loader/{AssetLoader.js → AssetLoader.ts} +22 -22
- package/src/loaders/assets_loader/{AsyncAssetsLoaderWorker.js → AsyncAssetsLoaderWorker.ts} +8 -3
- package/src/loaders/assets_loader/{ResourceBatch.js → ResourceBatch.ts} +91 -86
- package/src/loaders/assets_loader/{ResourceContainer.js → ResourceContainer.ts} +8 -5
- package/src/loaders/assets_loader/{ResourceLoaderChecker.js → ResourceLoaderChecker.ts} +6 -2
- package/src/materials/{AddMaterial.js → AddMaterial.ts} +2 -1
- package/src/materials/{AlphaFilterMaterial.js → AlphaFilterMaterial.ts} +6 -8
- package/src/materials/{BaseShaderMaterial.js → BaseShaderMaterial.ts} +4 -5
- package/src/materials/{BlitMaterial.js → BlitMaterial.ts} +9 -6
- package/src/materials/{BloomComposeMaterial.js → BloomComposeMaterial.ts} +4 -4
- package/src/materials/{ClearDepthNormalMaterial.js → ClearDepthNormalMaterial.ts} +2 -1
- package/src/materials/{DeferredRendererComposeMaterial.js → DeferredRendererComposeMaterial.ts} +6 -5
- package/src/materials/{DepthNormalMaterial.js → DepthNormalMaterial.ts} +6 -6
- package/src/materials/{DualFilteringBlurMaterial.js → DualFilteringBlurMaterial.ts} +1 -1
- package/src/materials/FXAAMaterial.ts +12 -0
- package/src/materials/{GaussianBlurMaterial.js → GaussianBlurMaterial.ts} +6 -6
- package/src/materials/{LuminosityHighPassMaterial.js → LuminosityHighPassMaterial.ts} +2 -2
- package/src/materials/{MedianFilterMaterial.js → MedianFilterMaterial.ts} +8 -7
- package/src/materials/{SDFScreenTextMaterial.js → SDFScreenTextMaterial.ts} +6 -8
- package/src/materials/{SDFTextMaterial.js → SDFTextMaterial.ts} +7 -9
- package/src/materials/{ScreenSpaceTextureMaterial.js → ScreenSpaceTextureMaterial.ts} +11 -10
- package/src/materials/{UnrealBloomComposeMaterial.js → UnrealBloomComposeMaterial.ts} +24 -23
- package/src/materials/{UnrealBlurMaterial.js → UnrealBlurMaterial.ts} +1 -1
- package/src/materials/{UnrealComposeMaterial.js → UnrealComposeMaterial.ts} +1 -1
- package/src/materials/deferred/{DeferredPointLightMaterial.js → DeferredPointLightMaterial.ts} +7 -8
- package/src/materials/gpu_particles/{AttributeUpdateMaterial.js → AttributeUpdateMaterial.ts} +9 -11
- package/src/materials/gpu_particles/{ParticleStorageMaterial.js → ParticleStorageMaterial.ts} +4 -5
- package/src/materials/gpu_particles/{PositionStorageMaterial.js → PositionStorageMaterial.ts} +1 -0
- package/src/primitives/{Arrow.js → Arrow.ts} +7 -11
- package/src/primitives/{Cube.js → Cube.ts} +4 -10
- package/src/primitives/HorizontalPlane.ts +19 -0
- package/src/primitives/{Sphere.js → Sphere.ts} +6 -5
- package/src/primitives/VerticalPlane.ts +18 -0
- package/src/raycast/{GroupRaycaster.js → GroupRaycaster.ts} +14 -3
- package/src/raycast/{PlaneDragResolver.js → PlaneDragResolver.ts} +13 -8
- package/src/raycast/{PlaneRaycastResolver.js → PlaneRaycastResolver.ts} +4 -2
- package/src/raycast/{PlaneRaycaster.js → PlaneRaycaster.ts} +9 -6
- package/src/raycast/{RaycastResolver.js → RaycastResolver.ts} +4 -2
- package/src/raycast/{SurfaceDragResolver.js → SurfaceDragResolver.ts} +15 -8
- package/src/raycast/states/BaseState.ts +18 -0
- package/src/raycast/states/{IdleState.js → IdleState.ts} +4 -2
- package/src/raycast/states/{OnRaycastEnter.js → OnRaycastEnter.ts} +3 -2
- package/src/raycast/states/{OnRaycastExit.js → OnRaycastExit.ts} +2 -1
- package/src/raycast/states/{OnRaycastHover.js → OnRaycastHover.ts} +5 -3
- package/src/render_mode/BaseRender.ts +36 -0
- package/src/render_mode/{BloomRender.js → BloomRender.ts} +13 -8
- package/src/render_mode/{DeferredRender.js → DeferredRender.ts} +16 -10
- package/src/render_mode/{NormalAORender.js → NormalAORender.ts} +14 -7
- package/src/render_mode/{NormalRender.js → NormalRender.ts} +4 -17
- package/src/render_mode/{UnrealBloomRender.js → UnrealBloomRender.ts} +29 -21
- package/src/render_mode/{VRRender.js → VRRender.ts} +2 -4
- package/src/render_utilities/{Blitter.js → Blitter.ts} +20 -16
- package/src/render_utilities/{Blurrer.js → Blurrer.ts} +10 -6
- package/src/render_utilities/{DepthAndNormalsRenderer.js → DepthAndNormalsRenderer.ts} +9 -4
- package/src/render_utilities/{DualFilteringBlurrer.js → DualFilteringBlurrer.ts} +23 -11
- package/src/render_utilities/{GaussianBlurrer.js → GaussianBlurrer.ts} +25 -11
- package/src/render_utilities/{MedianFilter.js → MedianFilter.ts} +12 -8
- package/src/render_utilities/{ViewPositionRenderer.js → ViewPositionRenderer.ts} +10 -7
- package/src/resource_loader/{AbstractLoader.js → AbstractLoader.ts} +144 -135
- package/src/resource_loader/{AsyncTextureLoader.js → AsyncTextureLoader.ts} +116 -111
- package/src/resource_loader/{AudioLoader.js → AudioLoader.ts} +83 -78
- package/src/resource_loader/{BasisLoader.js → BasisLoader.ts} +10 -8
- package/src/resource_loader/{CubemapLoader.js → CubemapLoader.ts} +59 -57
- package/src/resource_loader/{DAELoader.js → DAELoader.ts} +48 -48
- package/src/resource_loader/{DDSLoader.js → DDSLoader.ts} +48 -48
- package/src/resource_loader/{FileLoader.js → FileLoader.ts} +48 -48
- package/src/resource_loader/{FontLoader.js → FontLoader.ts} +10 -8
- package/src/resource_loader/{GLTFDRACOLoader.js → GLTFDRACOLoader.ts} +51 -50
- package/src/resource_loader/{GLTFLoader.js → GLTFLoader.ts} +49 -49
- package/src/resource_loader/{HDRCubeTextureLoader.js → HDRCubeTextureLoader.ts} +59 -58
- package/src/resource_loader/{RGBETextureLoader.js → HDRTextureLoader.ts} +14 -13
- package/src/resource_loader/{JSONLoader.js → JSONLoader.ts} +6 -2
- package/src/resource_loader/{OBJLoader.js → OBJLoader.ts} +10 -8
- package/src/resource_loader/{PointArrayLoader.js → PointArrayLoader.ts} +13 -12
- package/src/resource_loader/{ResourceBatch.js → ResourceBatch.ts} +90 -86
- package/src/resource_loader/{SVGLoader.js → SVGLoader.ts} +48 -48
- package/src/resource_loader/{TextLoader.js → TextLoader.ts} +48 -48
- package/src/resource_loader/{TextureLoader.js → TextureLoader.ts} +52 -52
- package/src/resource_loader/{VideoLoader.js → VideoLoader.ts} +7 -4
- package/src/scenes/{AbstractScene.js → AbstractScene.ts} +34 -10
- package/src/scenes/Compilator.ts +14 -0
- package/src/scenes/{loading_states/CompilatorManager.js → CompilatorManager.ts} +7 -1
- package/src/scenes/loading_states/{HighQualityLoadingState.js → HighQualityLoadingState.ts} +3 -0
- package/src/scenes/loading_states/{LoadingState.js → LoadingState.ts} +27 -6
- package/src/scenes/loading_states/{RegularLoadingState.js → RegularLoadingState.ts} +4 -1
- package/src/shaders/grid/grid.tsl.ts +33 -0
- package/src/types.d.ts +14 -0
- package/src/utilities/{ArrayUtilities.js → ArrayUtilities.ts} +9 -6
- package/src/utilities/{CameraUtilities.js → CameraUtilities.ts} +32 -23
- package/src/utilities/{EasingFunctions.js → EasingFunctions.ts} +33 -34
- package/src/utilities/{FrustumPointFitter.js → FrustumPointFitter.ts} +13 -10
- package/src/utilities/{GeometryUtilities.js → GeometryUtilities.ts} +3 -4
- package/src/utilities/{HTMLUtilities.js → HTMLUtilities.ts} +4 -4
- package/src/utilities/{ImageUtilities.js → ImageUtilities.ts} +2 -2
- package/src/utilities/{MeshSampler.js → MeshSampler.ts} +29 -12
- package/src/utilities/{ModelUtilities.js → ModelUtilities.ts} +25 -34
- package/src/utilities/{OMath.js → OMath.ts} +26 -25
- package/src/utilities/{ObjectUtilities.js → ObjectUtilities.ts} +82 -82
- package/src/utilities/{OrthographicFrustumPointFitter.js → OrthographicFrustumPointFitter.ts} +4 -3
- package/src/utilities/{PerspectiveFrustumPointFitter.js → PerspectiveFrustumPointFitter.ts} +12 -10
- package/src/utilities/{StringUtilities.js → StringUtilities.ts} +4 -4
- package/src/utilities/{TimeUtilities.js → TimeUtilities.ts} +5 -5
- package/src/utilities/{Validation.js → Validation.ts} +4 -4
- package/src/view_components/{ApplicationView.js → ApplicationView.ts} +12 -2
- package/src/view_components/{TransitionManager.js → TransitionManager.ts} +11 -12
- package/src/view_components/{ViewComponent.js → ViewComponent.ts} +9 -2
- package/src/view_components/{ViewComponentManager.js → ViewComponentManager.ts} +9 -5
- package/src/view_components/{ViewManager.js → ViewManager.ts} +18 -14
- package/src/view_components/{ViewState.js → ViewState.ts} +5 -3
- package/src/view_components/transition/{ActionSequencerBuilder.js → ActionSequencerBuilder.ts} +10 -8
- package/src/view_components/transition/{DrawIOAnimationSheet.js → DrawIOAnimationSheet.ts} +2 -2
- package/src/view_components/transition/{TransitionTable.js → TransitionTable.ts} +7 -4
- package/src/view_components/transition/{ViewStateTransitionHandler.js → ViewStateTransitionHandler.ts} +16 -6
- package/types/CustomBezierCurve.d.ts +20 -19
- package/types/Graphics.d.ts +11 -17
- package/types/ReflectionPlaneContext.d.ts +10 -13
- package/types/RenderLayers.d.ts +8 -6
- package/types/RenderOrder.d.ts +10 -8
- package/types/blitter_index.d.ts +6 -6
- package/types/components/AudioClip.d.ts +16 -25
- package/types/components/Input.d.ts +55 -0
- package/types/components/sdf_text/TextGlyph.d.ts +8 -8
- package/types/data_textures/CustomDataTexture.d.ts +11 -11
- package/types/data_textures/RGBADataTexture.d.ts +4 -4
- package/types/data_textures/RGBAFloatDataTexture.d.ts +4 -4
- package/types/data_textures/RGBDataTexture.d.ts +4 -4
- package/types/data_textures/RGBFloatDataTexture.d.ts +4 -4
- package/types/html_utilities/css_animator_states/Animating.d.ts +10 -8
- package/types/index.d.ts +77 -79
- package/types/loaders/AsyncTexturesLoader.d.ts +4 -3
- package/types/loaders/assets_loader/ResourceContainer.d.ts +10 -9
- package/types/materials/AlphaFilterMaterial.d.ts +4 -3
- package/types/materials/GaussianBlurMaterial.d.ts +8 -6
- package/types/materials/NormalMaterial.d.ts +5 -4
- package/types/materials/SDFScreenTextMaterial.d.ts +1 -3
- package/types/materials/SDFTextMaterial.d.ts +9 -10
- package/types/materials/UnrealBloomComposeMaterial.d.ts +6 -5
- package/types/materials/gpu_particles/ParticleStorageMaterial.d.ts +5 -4
- package/types/render_utilities/DualFilteringBlurrer.d.ts +3 -2
- package/types/resource_loader/{RGBETextureLoader.d.ts → HDRTextureLoader.d.ts} +4 -3
- package/types/scenes/Compilator.d.ts +5 -0
- package/types/scenes/CompilatorManager.d.ts +10 -0
- package/types/scenes/loading_states/LoadingState.d.ts +2 -1
- package/types/shaders/grid/grid.tsl.d.ts +10 -0
- package/types/view_components/TransitionManager.d.ts +3 -3
- package/src/BaseApplication.js +0 -40
- package/src/OrthographicCamera.js +0 -36
- package/src/PerspectiveCamera.js +0 -34
- package/src/UI.js +0 -106
- package/src/components/Grid.js +0 -40
- package/src/components/UIElement.js +0 -246
- package/src/editor/ManipulatorHandle.js +0 -73
- package/src/editor/ObjectEditor.js +0 -68
- package/src/editor/ObjectManipulator.js +0 -112
- package/src/editor/ObjectPicker.js +0 -77
- package/src/editor/shaders/object_picker.frag +0 -6
- package/src/editor/shaders/object_picker.vert +0 -8
- package/src/gpu_particles/ParticleAttribute.js +0 -89
- package/src/materials/ClearAlphaMaterial.js +0 -15
- package/src/materials/ClearColorMaterial.js +0 -33
- package/src/materials/FXAAMaterial.js +0 -12
- package/src/materials/UIElementMaterial.js +0 -30
- package/src/object_pool/Pool.js +0 -75
- package/src/primitives/HorizontalPlane.js +0 -27
- package/src/primitives/VerticalPlane.js +0 -26
- package/src/raycast/states/BaseState.js +0 -18
- package/src/render_mode/BaseRender.js +0 -34
- package/src/render_mode/OutlineRender.js +0 -157
- package/src/render_mode/PlanarReflectionsRender.js +0 -121
- package/src/shaders/ui_element/ui_element.frag +0 -11
- package/src/shaders/ui_element/ui_element.vert +0 -32
- package/src/static_batcher/BatchedMesh.js +0 -56
- package/src/static_batcher/GeometryBatch.js +0 -308
- package/src/static_batcher/GeometryBatcher.js +0 -64
- package/src/static_batcher/MeshBatcher.js +0 -58
- package/src/ui/ui_element_position/ScreenSpacePosition.js +0 -16
- package/src/ui/ui_element_position/WorldSpacePosition.js +0 -23
- package/src/ui/ui_element_state/OnIdle.js +0 -24
- package/src/ui/ui_element_state/OnMouseEnter.js +0 -39
- package/src/ui/ui_element_state/OnMouseExit.js +0 -22
- package/src/ui/ui_element_state/OnMouseHover.js +0 -46
- package/src/ui/ui_element_state/UIElementState.js +0 -34
- package/types/UI.d.ts +0 -92
- package/types/components/UIElement.d.ts +0 -87
- package/types/editor/ManipulatorHandle.d.ts +0 -23
- package/types/editor/ObjectEditor.d.ts +0 -18
- package/types/editor/ObjectManipulator.d.ts +0 -23
- package/types/editor/ObjectPicker.d.ts +0 -19
- package/types/materials/ClearAlphaMaterial.d.ts +0 -3
- package/types/materials/ClearColorMaterial.d.ts +0 -7
- package/types/object_pool/Pool.d.ts +0 -10
- package/types/render_mode/OutlineRender.d.ts +0 -25
- package/types/render_mode/PlanarReflectionsRender.d.ts +0 -19
- package/types/static_batcher/BatchedMesh.d.ts +0 -16
- package/types/static_batcher/GeometryBatch.d.ts +0 -41
- package/types/static_batcher/GeometryBatcher.d.ts +0 -9
- package/types/static_batcher/MeshBatcher.d.ts +0 -5
- package/types/ui/ui_element_position/ScreenSpacePosition.d.ts +0 -5
- package/types/ui/ui_element_position/WorldSpacePosition.d.ts +0 -7
- package/types/ui/ui_element_state/OnIdle.d.ts +0 -9
- package/types/ui/ui_element_state/OnMouseEnter.d.ts +0 -3
- package/types/ui/ui_element_state/OnMouseExit.d.ts +0 -3
- package/types/ui/ui_element_state/OnMouseHover.d.ts +0 -8
- package/types/ui/ui_element_state/UIElementState.d.ts +0 -17
- package/src/materials/{BoxBlurMaterial.js → BoxBlurMaterial.ts} +0 -0
- package/src/materials/{DisplayNormalTextureMaterial.js → DisplayNormalTextureMaterial.ts} +0 -0
- package/src/materials/{NormalMaterial.js → NormalMaterial.ts} +0 -0
- package/src/materials/{SSAOComposeMaterial.js → SSAOComposeMaterial.ts} +0 -0
- package/src/materials/{SSAOMaterial.js → SSAOMaterial.ts} +0 -0
- package/src/materials/{ViewPositionMaterial.js → ViewPositionMaterial.ts} +0 -0
- package/src/materials/gpu_particles/{BasicParticleMaterial.js → BasicParticleMaterial.ts} +1 -1
- /package/src/render_mode/{DebugNormalsRender.js → DebugNormalsRender.ts} +0 -0
- /package/src/shaders/bloom/{bloom_compose_frag.glsl → bloom_compose.frag} +0 -0
- /package/src/shaders/bloom/{cheap_bloom_compose_frag.glsl → cheap_bloom_compose.frag} +0 -0
package/build/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/components/AxisHelper.js","../src/SceneManager.js","../src/primitives/Cube.js","../src/primitives/Sphere.js","../src/primitives/Arrow.js","../src/OScreen.js","../src/PerspectiveCamera.js","../src/CameraManager.js","../src/Capabilities.js","../src/OrthographicCamera.js","../src/render_mode/BaseRender.js","../src/materials/BlitMaterial.js","../src/render_utilities/Blitter.js","../src/materials/ClearDepthNormalMaterial.js","../src/materials/DepthNormalMaterial.js","../src/render_utilities/DepthAndNormalsRenderer.js","../src/Graphics.js","../src/materials/BaseShaderMaterial.js","../src/materials/ScreenSpaceTextureMaterial.js","../src/Debug.js","../src/Time.js","../src/utilities/OMath.js","../src/action_sequencer/ActionEvent.js","../src/utilities/EasingFunctions.js","../src/action_sequencer/ActionInterpolator.js","../src/action_sequencer/ActionSequencer.js","../src/action_sequencer/NumberInterpolator.js","../src/view_components/transition/DrawIOAnimationSheet.js","../src/view_components/transition/ActionSequencerBuilder.js","../src/view_components/transition/TransitionTable.js","../src/view_components/ViewState.js","../src/view_components/transition/ViewStateTransitionHandler.js","../src/view_components/TransitionManager.js","../src/view_components/ViewComponentManager.js","../src/view_components/ViewManager.js","../src/RenderLoop.js","../src/BaseApplication.js","../src/materials/AddMaterial.js","../src/materials/UnrealBloomComposeMaterial.js","../src/resource_loader/AbstractLoader.js","../src/components/AudioClip.js","../src/resource_loader/AudioLoader.js","../src/ResourceContainer.js","../src/loaders/AsyncAbstractLoader.js","../src/loaders/AsyncAudiosLoader.js","../src/resource_loader/GLTFDRACOLoader.js","../src/resource_loader/GLTFLoader.js","../src/loaders/AsyncObjectsLoader.js","../src/Browser.js","../src/resource_loader/AsyncTextureLoader.js","../src/resource_loader/BasisLoader.js","../src/resource_loader/CubemapLoader.js","../src/resource_loader/HDRCubeTextureLoader.js","../src/resource_loader/RGBETextureLoader.js","../src/loaders/AsyncTexturesLoader.js","../src/scenes/loading_states/CompilatorManager.js","../src/scenes/loading_states/LoadingState.js","../src/scenes/loading_states/HighQualityLoadingState.js","../src/scenes/loading_states/RegularLoadingState.js","../src/scenes/AbstractScene.js","../src/view_components/ApplicationView.js","../src/canvas_drawer/CanvasDrawer.js","../src/canvas_drawer/SimpleTextDrawer.js","../src/html_utilities/css_animator_states/Idle.js","../src/html_utilities/css_animator_states/Animating.js","../src/html_utilities/CSSAnimator.js","../src/OS.js","../src/ReflectionPlaneContext.js","../src/static_batcher/GeometryBatch.js","../src/static_batcher/GeometryBatcher.js","../src/materials/UIElementMaterial.js","../src/ui/ui_element_position/ScreenSpacePosition.js","../src/ui/ui_element_position/WorldSpacePosition.js","../src/ui/ui_element_state/UIElementState.js","../src/ui/ui_element_state/OnIdle.js","../src/ui/ui_element_state/OnMouseEnter.js","../src/ui/ui_element_state/OnMouseExit.js","../src/ui/ui_element_state/OnMouseHover.js","../src/components/UIElement.js","../src/UI.js","../src/utilities/PerspectiveFrustumPointFitter.js","../src/utilities/OrthographicFrustumPointFitter.js","../src/utilities/CameraUtilities.js","../src/Initializer.js","../src/KeyboardInput.js","../src/materials/NormalMaterial.js","../src/render_mode/DebugNormalsRender.js","../src/materials/DisplayNormalTextureMaterial.js","../src/materials/SSAOComposeMaterial.js","../src/materials/SSAOMaterial.js","../src/materials/BoxBlurMaterial.js","../src/render_utilities/Blurrer.js","../src/render_mode/NormalAORender.js","../src/render_mode/NormalRender.js","../src/materials/GaussianBlurMaterial.js","../src/materials/LuminosityHighPassMaterial.js","../src/render_utilities/GaussianBlurrer.js","../src/render_mode/UnrealBloomRender.js","../src/render_mode/VRRender.js","../src/Screen.js","../src/view_components/ViewComponent.js","../src/primitives/HorizontalPlane.js","../src/primitives/VerticalPlane.js","../src/utilities/ArrayUtilities.js","../src/utilities/FrustumPointFitter.js","../src/utilities/GeometryUtilities.js","../src/utilities/HTMLUtilities.js","../src/utilities/ImageUtilities.js","../src/utilities/MeshSampler.js","../src/utilities/ModelUtilities.js","../src/utilities/ObjectUtilities.js","../src/utilities/StringUtilities.js","../src/utilities/TimeUtilities.js","../src/utilities/Validation.js","../src/components/Grid.js","../src/components/Line.js","../src/components/WorldImage.js","../src/components/Text2D.js","../src/components/UpdatableMaterialMesh.js","../src/components/sdf_text/TextGlyph.js","../src/components/sdf_text/SDFText.js","../src/materials/SDFTextMaterial.js","../src/components/sdf_text/SDFTextBatch.js","../src/action_sequencer/VectorInterpolator.js","../src/materials/DualFilteringBlurMaterial.js","../src/materials/AlphaFilterMaterial.js","../src/render_utilities/DualFilteringBlurrer.js","../src/materials/MedianFilterMaterial.js","../src/render_utilities/MedianFilter.js","../src/gpu_particles/ParticleAttribute.js","../src/gpu_particles/GPUParticleSystem.js","../src/materials/gpu_particles/ParticleStorageMaterial.js","../src/gpu_particles/ParticlePositionAttribute.js","../src/data_textures/CustomDataTexture.js","../src/data_textures/RGBDataTexture.js","../src/data_textures/RGBADataTexture.js","../src/data_textures/RGBFloatDataTexture.js","../src/data_textures/RGBAFloatDataTexture.js","../src/static_batcher/BatchedMesh.js","../src/static_batcher/MeshBatcher.js","../src/resource_loader/DAELoader.js","../src/resource_loader/FileLoader.js","../src/resource_loader/FontLoader.js","../src/resource_loader/JSONLoader.js","../src/resource_loader/OBJLoader.js","../src/resource_loader/PointArrayLoader.js","../src/resource_loader/TextLoader.js","../src/resource_loader/TextureLoader.js","../src/resource_loader/VideoLoader.js","../src/resource_loader/ResourceBatch.js"],"sourcesContent":["// @ts-check\nimport { Object3D } from 'three';\nimport { LineBasicMaterial } from 'three';\nimport { AlwaysDepth } from 'three';\nimport { BufferGeometry } from 'three';\nimport { Vector3 } from 'three';\nimport { Line } from 'three';\n\nclass AxisHelper extends Object3D\n{\n constructor(scale = 1.0)\n {\n super();\n\n const blue_points = [];\n blue_points.push(new Vector3(0, 0, 0));\n blue_points.push(new Vector3(0, 0, 1000));\n\n const blue_axis_mat = new LineBasicMaterial({ color: 0x4444ff, depthFunc: AlwaysDepth });\n const blue_axis_geo = new BufferGeometry().setFromPoints(blue_points);\n const blue_axis_line = new Line(blue_axis_geo, blue_axis_mat);\n blue_axis_line.renderOrder = 50000;\n\n const green_points = [];\n green_points.push(new Vector3(0, 0, 0));\n green_points.push(new Vector3(0, 1000, 0));\n\n const green_axis_mat = new LineBasicMaterial({ color: 0x44ff44, depthFunc: AlwaysDepth });\n const green_axis_geo = new BufferGeometry().setFromPoints(green_points);\n const green_axis_line = new Line(green_axis_geo, green_axis_mat);\n green_axis_line.renderOrder = 50000;\n\n const red_points = [];\n red_points.push(new Vector3(0, 0, 0));\n red_points.push(new Vector3(1000, 0, 0));\n\n const red_axis_mat = new LineBasicMaterial({ color: 0xff4444, depthFunc: AlwaysDepth });\n const red_axis_geo = new BufferGeometry().setFromPoints(red_points);\n const red_axis_line = new Line(red_axis_geo, red_axis_mat);\n red_axis_line.renderOrder = 50000;\n\n this.renderOrder = 100000;\n\n this.add(blue_axis_line);\n this.add(green_axis_line);\n this.add(red_axis_line);\n\n this.scale.set(scale, scale, scale);\n }\n\n update()\n {\n }\n\n dispose()\n {\n }\n}\n\nexport { AxisHelper };\n","// @ts-check\nimport { Scene, Mesh } from 'three'; // eslint-disable-line no-unused-vars\n\nclass SceneManager\n{\n init()\n {\n this._current = new Scene();\n this._current.name = 'default_scene';\n }\n\n /**\n * @param {string} name\n */\n add_scene(name) // eslint-disable-line no-unused-vars\n {\n\n }\n\n /** @type {Scene} */\n get current()\n {\n return this._current;\n }\n\n set current(scene)\n {\n this._current = scene;\n }\n\n dispose()\n {\n this.current.traverse((/** @type {Mesh} */ child) =>\n {\n if (child.geometry)\n {\n child.geometry.dispose();\n const mat = child.material;\n if ('disppose' in mat && typeof (mat.disppose) === 'function')\n {\n // @ts-ignore\n mat.dispose();\n }\n }\n });\n\n while (this.current.children.length > 0)\n {\n this.current.remove(this.current.children[0]);\n }\n }\n}\n\nconst scene_manager = new SceneManager();\nexport { scene_manager as SceneManager };\n","// @ts-check\nimport { Vector3, Mesh } from 'three';\nimport { BoxGeometry } from 'three';\nimport { MeshBasicMaterial } from 'three';\n\nclass Cube extends Mesh\n{\n /**\n * @param {Vector3} [size]\n * @param {Vector3} [segments]\n * @param {number | string} [color]\n */\n constructor(size, segments, color)\n {\n size = size || new Vector3(1, 1, 1);\n segments = segments || new Vector3(1, 1, 1);\n color = color || 0xff0000;\n const geometry = new BoxGeometry(size.x, size.y, size.z, segments.x, segments.y, segments.z);\n const material = new MeshBasicMaterial({ color: color });\n super(geometry, material);\n }\n}\n\nexport { Cube };\n","import { Mesh, MeshBasicMaterial, SphereGeometry } from 'three';\n\nclass Sphere extends Mesh\n{\n /**\n * @param {number} radius\n * @param {number | string} color\n */\n constructor(radius, color)\n {\n color = color || '#FF0000';\n radius = radius || 1;\n const geometry = new SphereGeometry(radius, 64, 64);\n const material = new MeshBasicMaterial({ color: color });\n super(geometry, material);\n this.radius = radius;\n this.color = color;\n this.center = this.position;\n }\n}\n\nexport { Sphere };\n","// @ts-check\nimport { ConeGeometry, CylinderGeometry, Mesh, MeshBasicMaterial, Vector3 } from 'three';\n\nimport * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js';\n\nclass Arrow extends Mesh\n{\n /**\n * @param {string | number} [color]\n * @param {number} [length]\n * @param {Vector3} [dir]\n */\n constructor(color, length, dir)\n {\n color = color || '#FF0000';\n length = length || 1;\n\n const cone_height = 0.4;\n const cylinder_height = length - cone_height;\n const cylinder_geo = new CylinderGeometry(0.01, 0.01, cylinder_height, 32);\n cylinder_geo.translate(0, cylinder_height / 2, 0);\n\n const cone_geometry = new ConeGeometry(0.1, cone_height, 32);\n cone_geometry.translate(0, cylinder_height + cone_height / 2, 0);\n\n const buffer_geometry = BufferGeometryUtils.mergeGeometries([cylinder_geo, cone_geometry]);\n buffer_geometry.rotateX(3.14 / 2);\n\n const material = new MeshBasicMaterial({ color: color });\n super(buffer_geometry, material);\n\n if (dir)\n {\n this.quaternion.setFromUnitVectors(new Vector3(0, 0, 1), dir);\n }\n\n this._dir = dir;\n }\n\n set dir(dir)\n {\n this.quaternion.setFromUnitVectors(new Vector3(0, 0, 1), dir);\n this._dir = dir;\n }\n\n get dir()\n {\n return this._dir;\n }\n\n set length(value)\n {\n this.scale.z = value;\n }\n\n get length()\n {\n return this.scale.z;\n }\n}\n\nexport { Arrow };\n","// @ts-check\nimport { Vector2 } from 'three';\n\nclass OScreen\n{\n init()\n {\n this.width = 1;\n this.height = 1;\n\n this.position = new Vector2();\n\n this.render_width = 1;\n this.render_height = 1;\n this.width_height = new Vector2(this.width, this.height);\n\n this.dpr = 1;\n this.pixel_size = new Vector2(1 / this.width, 1 / this.height);\n }\n\n /**\n * @param {number} x\n * @param {number} y\n */\n update_position(x, y)\n {\n this.position.set(x, y);\n }\n\n update()\n {\n this.size_changed = false;\n }\n\n /**\n * @param {number} width\n * @param {number} height\n */\n update_size(width, height)\n {\n this.width = width;\n this.height = height;\n\n this.pixel_size = new Vector2(1 / this.width, 1 / this.height);\n\n this.width_height.x = width;\n this.width_height.y = height;\n\n this.render_width = width * this.dpr;\n this.render_height = height * this.dpr;\n\n this.size_changed = true;\n }\n\n /**\n * @param {Vector2} vector2\n */\n apply_pixel_density_v2(vector2)\n {\n vector2.multiplyScalar(1 / this.dpr);\n\n return vector2;\n }\n\n /**\n * @param {number} value\n */\n apply_pixel_density(value)\n {\n return value * (1 / this.dpr);\n }\n\n get_pixel_size()\n {\n return this.pixel_size;\n }\n\n get aspect_ratio()\n {\n return this.width / this.height;\n }\n\n get portrait()\n {\n return this.width < this.height;\n }\n}\n\nconst oscreen = new OScreen();\nexport { oscreen as OScreen };\n","// @ts-check\nimport { Color } from 'three';\nimport { PerspectiveCamera as TPerspectiveCamera } from 'three';\n\nclass PerspectiveCamera extends TPerspectiveCamera\n{\n /**\n * @param {number} fov\n * @param {number} aspect\n * @param {number} near\n * @param {number} far\n */\n constructor(fov, aspect, near, far)\n {\n super(fov, aspect, near, far);\n\n this.clear_color = new Color('#000000');\n this.clear_alpha = 1;\n }\n\n /**\n * @param {PerspectiveCamera} camera\n * @returns {this}\n */\n copy(camera)\n {\n super.copy(camera);\n this.clear_color.copy(camera.clear_color);\n this.clear_alpha = camera.clear_alpha;\n return this;\n }\n}\n\nexport { PerspectiveCamera };\n","// @ts-check\nimport { PerspectiveCamera } from './PerspectiveCamera'; // eslint-disable-line no-unused-vars\n\nclass CameraManager\n{\n init()\n {\n this._current = undefined;\n // VR Spectator\n this._spectator = undefined;\n }\n\n set current(camera)\n {\n this._current = camera;\n }\n\n /** @type {PerspectiveCamera} */\n get current()\n {\n return this._current;\n }\n\n set spectator(camera)\n {\n this._spectator = camera;\n }\n\n /** @type {PerspectiveCamera} */\n get spectator()\n {\n return this._spectator;\n }\n}\n\nconst camera_manager = new CameraManager();\nexport { camera_manager as CameraManager };\n","// @ts-check\nclass Capabilities\n{\n init()\n {\n this.max_anisotropy = 0;\n this.vertex_texture_sampler_available = false;\n this.fp_textures_available = false;\n }\n}\n\nconst capabilities = new Capabilities();\nexport { capabilities as Capabilities };\n","// @ts-check\nimport { Color } from 'three';\nimport { OrthographicCamera as TOrthographicCamera } from 'three';\n\nclass OrthographicCamera extends TOrthographicCamera\n{\n /**\n * @param {number} left\n * @param {number} right\n * @param {number} top\n * @param {number} bottom\n * @param {number} near\n * @param {number} far\n */\n constructor(left, right, top, bottom, near, far)\n {\n super(left, right, top, bottom, near, far);\n\n this.clear_color = new Color('#000000');\n this.clear_alpha = 1;\n }\n\n /**\n * @param {OrthographicCamera} camera\n * @returns {this}\n */\n copy(camera)\n {\n super.copy(camera);\n this.clear_color.copy(camera.clear_color);\n this.clear_alpha = camera.clear_alpha;\n return this;\n }\n}\n\nexport { OrthographicCamera };\n","class BaseRender\n{\n constructor()\n {\n\n }\n\n render()\n {\n\n }\n\n on_enter(context, renderer)\n {\n\n }\n\n on_exit(context, renderer)\n {\n\n }\n\n resize()\n {\n\n }\n\n dispose()\n {\n\n }\n}\n\nexport { BaseRender };\n","import vert from '../shaders/copy/copy.vert';\nimport frag from '../shaders/copy/copy.frag';\n\nimport { ShaderMaterial } from 'three';\nimport { Vector2 } from 'three';\nimport { NoBlending } from 'three';\nimport { AlwaysDepth } from 'three';\n\nclass BlitMaterial extends ShaderMaterial\n{\n constructor(frag_shader, vert_shader, defines)\n {\n super({\n uniforms: {\n _MainTex: { value: null },\n _Resolution: { value: new Vector2(0, 0) },\n _TargetResolution: { value: new Vector2(0, 0) }\n },\n defines: defines || {},\n vertexShader: vert_shader || vert,\n fragmentShader: frag_shader || frag,\n depthWrite: false,\n blending: NoBlending,\n depthTest: false,\n depthFunc: AlwaysDepth\n });\n }\n}\n\nexport { BlitMaterial };\n","import { BlitMaterial } from '../materials/BlitMaterial';\n\nimport { Scene } from 'three';\nimport { Mesh } from 'three';\nimport { PlaneGeometry } from 'three';\nimport { OrthographicCamera } from 'three';\n\nclass Blitter\n{\n constructor(renderer)\n {\n this.renderer = renderer;\n this._blit_scene = new Scene();\n this._blit_material = new BlitMaterial();\n this._blit_quad = new Mesh(\n new PlaneGeometry(1, 1), this._blit_material);\n this._blit_scene.add(this._blit_quad);\n this._blit_camera = new OrthographicCamera(-1, 1, 1, -1, -10000, 10000);\n }\n\n blit(src, dst)\n {\n this._blit_quad.material = this._blit_material;\n\n const src_texture = src.isWebGLRenderTarget === true ? src.texture : src;\n const src_width = src.isWebGLRenderTarget === true ? src.width : src.image.width;\n const src_height = src.isWebGLRenderTarget === true ? src.height : src.image.height;\n\n this._blit_quad.material.uniforms._MainTex.value = src_texture;\n this._blit_quad.material.uniforms._Resolution.value.set(src_width, src_height);\n\n if (dst)\n {\n this._blit_quad.material.uniforms._TargetResolution.value.set(dst.width, dst.height);\n }\n else\n {\n this.renderer.getSize(this._blit_quad.material.uniforms._TargetResolution.value);\n }\n\n this.__render(dst);\n }\n\n material_pass(mat, dst)\n {\n this._blit_quad.material = mat;\n // this._blit_quad.material.uniforms._MainTex.value = undefined;\n // this._blit_quad.material.uniforms._Resolution.value.set(1, 1);\n\n this.__render(dst);\n }\n\n blit_with_material(src, dst, mat)\n {\n const src_texture = src.isWebGLRenderTarget === true ? src.texture : src;\n const src_width = src.isWebGLRenderTarget === true ? src.width : src.image.width;\n const src_height = src.isWebGLRenderTarget === true ? src.height : src.image.height;\n\n this._blit_quad.material = mat;\n this._blit_quad.material.uniforms._MainTex.value = src_texture;\n this._blit_quad.material.uniforms._Resolution.value.set(src_width, src_height);\n\n if (dst)\n {\n this._blit_quad.material.uniforms._TargetResolution.value.set(dst.width, dst.height);\n }\n else\n {\n this.renderer.getSize(this._blit_quad.material.uniforms._TargetResolution.value);\n }\n\n this.__render(dst);\n }\n\n blit_clear_with_material(dst_RT, mat)\n {\n this._blit_quad.material = mat;\n\n this.__render(dst_RT);\n }\n\n dispose()\n {\n this._blit_quad.geometry.dispose();\n this._blit_quad.material.dispose();\n }\n\n __render(dst_RT)\n {\n const RT = dst_RT === undefined ? null : dst_RT;\n\n const current_rt = this.renderer.getRenderTarget();\n\n this.renderer.setRenderTarget(RT);\n this.renderer.render(this._blit_scene, this._blit_camera);\n\n this.renderer.setRenderTarget(current_rt);\n }\n}\n\nexport { Blitter };\n","import { BlitMaterial } from '../materials/BlitMaterial';\n\nimport frag from '../shaders/clear/clear_depth_normal.frag';\n\nimport { Vector4 } from 'three';\n\nclass ClearDepthNormalMaterial extends BlitMaterial\n{\n constructor(clear_depth, clear_normal)\n {\n super(frag);\n this.uniforms._DepthNormal = { value: new Vector4(clear_depth, clear_normal.x, clear_normal.y, clear_normal.z) };\n }\n}\n\nexport { ClearDepthNormalMaterial };\n","import vert from '../shaders/depth_normals/depth_normals.vert';\nimport frag from '../shaders/depth_normals/depth_normals.frag';\n\nimport { ShaderMaterial } from 'three';\n\nclass DepthNormalMaterial extends ShaderMaterial\n{\n constructor()\n {\n super({\n uniforms: {\n _FarPlane: { value: 1 }\n },\n vertexShader: vert,\n fragmentShader: frag\n });\n }\n\n set far_plane(value)\n {\n this.uniforms._FarPlane.value = value;\n }\n\n get far_plane()\n {\n return this.uniforms._FarPlane.value;\n }\n}\n\nexport { DepthNormalMaterial };\n","import { CameraManager } from '../CameraManager';\nimport { OScreen } from '../OScreen';\n\nimport { ClearDepthNormalMaterial } from '../materials/ClearDepthNormalMaterial';\nimport { DepthNormalMaterial } from '../materials/DepthNormalMaterial';\n\nimport { WebGLRenderTarget } from 'three';\nimport { Vector3 } from 'three';\n\nclass DepthAndNormalsRenderer\n{\n constructor()\n {\n this.RT = new WebGLRenderTarget(OScreen.width, OScreen.height);\n\n this.clear_depth_normal_mat = new ClearDepthNormalMaterial(1, new Vector3(0, 0, 1));\n this.depth_normal_material = new DepthNormalMaterial();\n }\n\n render(graphics)\n {\n this.__resize_RT_if_necessary();\n\n graphics.clear(this.RT, undefined, true, true);\n\n graphics.blit_clear_with_material(this.RT, this.clear_depth_normal_mat);\n\n this.depth_normal_material.far_plane = CameraManager.current.far;\n\n graphics.render(undefined, undefined, this.RT, this.depth_normal_material);\n }\n\n __resize_RT_if_necessary()\n {\n if (this.RT.width !== OScreen.width || this.RT.height !== OScreen.height)\n {\n this.RT.setSize(OScreen.width, OScreen.height);\n }\n }\n\n get render_target()\n {\n return this.RT;\n }\n}\n\nexport { DepthAndNormalsRenderer };\n","// @ts-check\nimport { BaseApplication } from './BaseApplication'; // eslint-disable-line no-unused-vars\nimport { CameraManager } from './CameraManager';\nimport { Capabilities } from './Capabilities';\nimport { OScreen } from './OScreen';\nimport { OrthographicCamera } from './OrthographicCamera'; // eslint-disable-line no-unused-vars\nimport { PerspectiveCamera } from './PerspectiveCamera'; // eslint-disable-line no-unused-vars\nimport { SceneManager } from './SceneManager';\n\nimport { BaseRender } from './render_mode/BaseRender';\nimport { Blitter } from './render_utilities/Blitter';\nimport { DepthAndNormalsRenderer } from './render_utilities/DepthAndNormalsRenderer';\n\nimport {\n AlwaysDepth,\n FloatType,\n LinearSRGBColorSpace,\n NearestFilter,\n NoBlending,\n RGBAFormat,\n ShaderMaterial,\n WebGLRenderTarget,\n Material, Object3D, Scene // eslint-disable-line no-unused-vars\n} from 'three';\n\nimport { WebGLRenderer } from 'three';\n\nclass Graphics\n{\n /**\n * @param {Object} options\n * @param {HTMLCanvasElement} options.canvas\n * @param {Record<string, any>} options.core_attributes\n * @param {Record<string, any>} options.context_attributes\n * @param {Record<string, any>} options.threejs_attributes\n * @param {number} options.dpr\n */\n init({ canvas, core_attributes, context_attributes, threejs_attributes, dpr })\n {\n this._renderer = undefined;\n this.blitter = undefined;\n this.canvas = undefined;\n this.no_render = undefined;\n this.current_render_mode = undefined;\n this.generateDepthNormalTexture = false;\n this.depth_and_normals_renderer = undefined;\n\n this.is_webgl2 = false;\n this.canvas_context = undefined;\n this.context_attributes = undefined;\n\n this.core_attributes = {\n force_webgl2: true,\n xr_enabled: false\n };\n\n this.context_attributes = {\n alpha: true,\n antialias: false,\n depth: true,\n desynchronized: false,\n failIfMajorPerformanceCaveat: false,\n powerPreference: 'high-performance',\n premultipliedAlpha: true,\n preserveDrawingBuffer: true,\n stencil: false\n };\n\n /** @type {Record<string, any>} */\n this.threejs_attributes = {\n logarithmicDepthBuffer: false\n };\n\n Object.assign(this.core_attributes, core_attributes);\n Object.assign(this.context_attributes, context_attributes);\n\n Object.assign(this.threejs_attributes, this.context_attributes);\n Object.assign(this.threejs_attributes, threejs_attributes);\n\n if (this.core_attributes.force_webgl2)\n {\n this.canvas_context = canvas.getContext('webgl2', this.context_attributes) ||\n canvas.getContext('webgl', this.context_attributes) ||\n canvas.getContext('experimental-webgl', this.context_attributes);\n }\n else\n {\n this.canvas_context = canvas.getContext('webgl', this.context_attributes) ||\n canvas.getContext('experimental-webgl', this.context_attributes);\n }\n\n this.is_webgl2 = this.canvas_context.constructor.name === 'WebGL2RenderingContext';\n\n // console.log(`Using WebGL ${this.is_webgl2 ? 2 : 1}`);\n\n this.threejs_attributes.canvas = canvas;\n this.threejs_attributes.context = this.canvas_context;\n\n this._renderer = new WebGLRenderer(this.threejs_attributes);\n\n if (this.core_attributes.xr_enabled)\n {\n this._renderer.xr.enabled = true;\n }\n else\n {\n this._renderer.autoClear = false;\n }\n\n OScreen.dpr = dpr;\n this._renderer.setPixelRatio(1);\n\n if (!this.is_webgl2)\n {\n this._renderer.extensions.get('ANGLE_instanced_arrays');\n }\n\n this.blitter = new Blitter(this._renderer);\n\n this.canvas = this._renderer.domElement;\n\n this.no_render = new BaseRender();\n\n this.current_render_mode = this.no_render;\n\n Capabilities.max_anisotropy = this._renderer.capabilities.getMaxAnisotropy();\n Capabilities.vertex_texture_sampler_available = this._renderer.capabilities.maxVertexTextures > 0;\n Capabilities.fp_textures_available = this.is_floating_point_texture_available();\n\n this.generateDepthNormalTexture = false;\n\n this.depth_and_normals_renderer = new DepthAndNormalsRenderer();\n }\n\n get dom_element()\n {\n return this._renderer.domElement;\n }\n\n get depth_normals_RT()\n {\n return this.depth_and_normals_renderer.render_target;\n }\n\n /**\n * @param {BaseRender} new_state\n */\n set_state(new_state)\n {\n // console.log('VIEWAPI - map render mode switch to: ' + new_state.constructor.name);\n\n this.current_render_mode.on_exit(this, this._renderer);\n this.current_render_mode = new_state;\n this.current_render_mode.on_enter(this, this._renderer);\n }\n\n update()\n {\n if (this.generateDepthNormalTexture)\n {\n this.depth_and_normals_renderer.render(this);\n }\n\n this.__update_current_camera();\n\n if (CameraManager.current)\n {\n this.current_render_mode.render();\n }\n\n OScreen.update();\n }\n\n __update_current_camera()\n {\n if (CameraManager.current)\n {\n CameraManager.current.aspect = OScreen.aspect_ratio;\n CameraManager.current.updateProjectionMatrix();\n CameraManager.current.updateMatrix();\n CameraManager.current.updateMatrixWorld(true);\n }\n }\n\n /**\n * @param {Scene} [scene]\n * @param {PerspectiveCamera | OrthographicCamera} [camera]\n * @param {WebGLRenderTarget} [RT]\n * @param {Material} [override_mat]\n */\n render(scene, camera, RT, override_mat)\n {\n this.__apply_override_material(scene, override_mat);\n\n this._renderer.setRenderTarget(RT === undefined ? null : RT);\n this._renderer.render(scene || SceneManager.current,\n camera || CameraManager.current);\n\n this.__apply_override_material(scene, undefined);\n }\n\n /**\n * @param {Scene} scene\n * @param {PerspectiveCamera} camera\n * @param {WebGLRenderTarget} RT\n * @param {Material} override_mat\n */\n compile(scene, camera, RT, override_mat)\n {\n this.__apply_override_material(scene, override_mat);\n\n this._renderer.setRenderTarget(RT === undefined ? null : RT);\n this._renderer.compile(scene || SceneManager.current,\n camera || CameraManager.current);\n\n this.__apply_override_material(scene, undefined);\n }\n\n /**\n * @param {Scene} scene\n * @param {PerspectiveCamera} camera\n * @param {WebGLRenderTarget} RT\n * @param {Material} override_mat\n * @param {Scene} target_scene\n * @returns {Promise<Object3D>}\n */\n async compile_async(scene, camera, RT, override_mat, target_scene)\n {\n this.__apply_override_material(scene, override_mat);\n\n this._renderer.setRenderTarget(RT === undefined ? null : RT);\n const promise = this._renderer.compileAsync(scene || SceneManager.current,\n camera || CameraManager.current, target_scene);\n\n this.__apply_override_material(scene, undefined);\n\n return promise;\n }\n\n /**\n * @param {BaseApplication | Scene | {render:()=>void}} scene\n */\n render_scene(scene)\n {\n if ('on_pre_render' in scene)\n {\n scene.on_pre_render();\n }\n\n if ('render' in scene)\n {\n scene.render();\n }\n else\n {\n // @ts-ignore\n this.render(scene, undefined);\n }\n\n if ('on_post_render' in scene)\n {\n scene.on_post_render();\n }\n }\n\n /**\n * @param {Scene} scene\n * @param {Material} mat\n */\n __apply_override_material(scene, mat)\n {\n mat = mat === undefined ? null : mat;\n if (scene)\n {\n scene.overrideMaterial = mat;\n }\n else\n {\n SceneManager.current.overrideMaterial = mat;\n }\n }\n\n /**\n * @param {WebGLRenderTarget} RT\n * @param {import('three').TypedArray} buffer\n */\n readback_RT(RT, buffer)\n {\n this._renderer.readRenderTargetPixels(RT, 0, 0, RT.width, RT.height, buffer);\n }\n\n /**\n * @param {WebGLRenderTarget} RT\n * @param {PerspectiveCamera} camera\n * @param {boolean} clear_depth\n * @param {boolean} clear_stencil\n */\n clear(RT, camera, clear_depth, clear_stencil)\n {\n this._renderer.setRenderTarget(RT === undefined ? null : RT);\n\n if (camera)\n {\n this._renderer.setClearColor(camera.clear_color, camera.clear_alpha);\n }\n\n this._renderer.clear(!!camera, // clear color\n !!clear_depth,\n !!clear_stencil);\n }\n\n /**\n * @param {ResizeObserverEntry[]} entries\n * @param {number} dpr\n */\n on_resize(entries, dpr)\n {\n for (const entry of entries)\n {\n OScreen.dpr = dpr;\n // this._renderer.setPixelRatio(dpr);\n\n OScreen.update_position(entry.contentRect.x, entry.contentRect.y);\n OScreen.update_size(entry.contentRect.width, entry.contentRect.height);\n\n this.canvas.width = OScreen.render_width;\n this.canvas.height = OScreen.render_height;\n\n this._renderer.setViewport(0, 0, OScreen.render_width, OScreen.render_height);\n\n this.__update_current_camera();\n }\n }\n\n /**\n * @param {Material} mat\n * @param {WebGLRenderTarget} dst\n */\n material_pass(mat, dst)\n {\n this.blitter.material_pass(mat, dst);\n }\n\n /**\n * @param {WebGLRenderTarget} src_RT\n * @param {WebGLRenderTarget} dst_RT\n * @param {Material} mat\n */\n blit(src_RT, dst_RT, mat)\n {\n if (mat)\n {\n this.blitter.blit_with_material(src_RT, dst_RT, mat);\n }\n else\n {\n this.blitter.blit(src_RT, dst_RT);\n }\n }\n\n /**\n * @param {WebGLRenderTarget} dst_RT\n * @param {Material} mat\n */\n blit_clear_with_material(dst_RT, mat)\n {\n this.blitter.blit_clear_with_material(dst_RT, mat);\n }\n\n /**\n * @param {BlobCallback} blob_callback\n * @param {number} width\n * @param {number} height\n */\n take_screenshot(blob_callback, width = OScreen.width, height = OScreen.height)\n {\n // const ctx = this;\n\n const old_width = OScreen.width;\n const old_height = OScreen.height;\n\n const new_width = width;\n const new_height = height;\n\n const tile_width = 1024;\n const tile_height = 1024;\n\n const divisions_x = Math.ceil(new_width / tile_width);\n const divisions_y = Math.ceil(new_height / tile_height);\n\n OScreen.update_size(tile_width, tile_height);\n const old_dpr = this._renderer.getPixelRatio();\n this._renderer.setPixelRatio(1);\n\n this._renderer.setSize(tile_width, tile_height, false);\n\n const canvas_2d = document.createElement('canvas');\n const ctx_2D = canvas_2d.getContext('2d');\n\n ctx_2D.canvas.width = new_width;\n ctx_2D.canvas.height = new_height;\n\n CameraManager.current.aspect = OScreen.aspect_ratio;\n CameraManager.current.updateMatrix();\n CameraManager.current.updateMatrixWorld(true);\n\n for (let x = 0; x < divisions_x; x++)\n {\n for (let y = 0; y < divisions_y; y++)\n {\n CameraManager.current.setViewOffset(new_width, new_height,\n OScreen.width * x, OScreen.height * y,\n OScreen.width, OScreen.height);\n this.current_render_mode.render();\n\n ctx_2D.drawImage(this._renderer.domElement, OScreen.width * x, OScreen.height * y);\n }\n }\n\n // transform the result canvas into a blob\n // } from them the callback turns into a ULR and download it\n ctx_2D.canvas.toBlob(blob_callback, 'image/png;base64;');\n\n CameraManager.current.clearViewOffset();\n\n OScreen.update_size(old_width, old_height);\n this._renderer.setPixelRatio(old_dpr);\n this._renderer.setSize(old_width, old_height, false);\n\n CameraManager.current.aspect = OScreen.aspect_ratio;\n CameraManager.current.updateMatrix();\n CameraManager.current.updateMatrixWorld(true);\n }\n\n /**\n * @param {Blob} blob\n */\n download_screenshot(blob)\n {\n const link = document.createElement('a');\n link.download = 'Snapshot.png';\n\n link.href = URL.createObjectURL(blob);\n link.click();\n\n link.onclick = function()\n {\n requestAnimationFrame(function()\n {\n URL.revokeObjectURL(link.href);\n });\n link.removeAttribute('href');\n };\n }\n\n dispose()\n {\n this._renderer.dispose();\n this.current_render_mode.dispose();\n this.blitter.dispose();\n }\n\n is_floating_point_texture_available()\n {\n const RT = new WebGLRenderTarget(1, 1, {\n minFilter: NearestFilter,\n magFilter: NearestFilter,\n format: RGBAFormat,\n colorSpace: LinearSRGBColorSpace,\n type: FloatType,\n stencilBuffer: false,\n depthBuffer: false\n });\n\n const vert = `\n void main()\n {\n gl_Position = vec4(uv * 2.0 - 1.0, 1.0, 1.0);\n }\n `;\n const frag = `\n void main()\n {\n gl_FragColor = vec4(0.0, 4865.35, 0.0, 1.0);\n }\n `;\n\n const mat = new ShaderMaterial({\n vertexShader: vert,\n fragmentShader: frag,\n depthWrite: false,\n blending: NoBlending,\n depthTest: false,\n depthFunc: AlwaysDepth\n });\n\n this.material_pass(mat, RT);\n\n const output = new Float32Array(4);\n this._renderer.readRenderTargetPixels(RT, 0, 0, 1, 1, output);\n\n return Math.abs(output[1] - 4865.35) < 0.001;\n }\n}\n\nconst graphics = new Graphics();\nexport { graphics as Graphics };\n","import basic_vert from '../shaders/basic_color/basic_color.vert';\nimport basic_frag from '../shaders/basic_color/basic_color.frag';\n\nimport { ShaderMaterial } from 'three';\nimport { Color } from 'three';\n\nclass BaseShaderMaterial extends ShaderMaterial\n{\n constructor(vert, frag, uniforms)\n {\n super({\n vertexShader: vert || basic_vert,\n fragmentShader: frag || basic_frag,\n uniforms: uniforms || {\n _Color: { value: new Color('#FF0000') }\n }\n });\n }\n}\n\nexport { BaseShaderMaterial };\n","import { BaseShaderMaterial } from './BaseShaderMaterial';\nimport { Vector2 } from 'three';\nclass ScreenSpaceTextureMaterial extends BaseShaderMaterial\n{\n constructor(x, y, w, h)\n {\n const vert = `\n uniform vec2 _ScreenSpacePosition;\n uniform vec2 _ScreenSize;\n uniform vec2 _TextureSize;\n varying vec2 vUv;\n void main()\n {\n vec2 pos = uv * vec2(_TextureSize.x / _ScreenSize.x, _TextureSize.y / _ScreenSize.y);\n pos += vec2(_ScreenSpacePosition.x / _ScreenSize.x, _ScreenSpacePosition.y / _ScreenSize.y);\n\n pos.x = pos.x * 2.0 - 1.0;\n pos.y = pos.y * 2.0 - 1.0;\n\n gl_Position = vec4(pos, 0.0, 1.0);\n vUv = uv;\n }\n `;\n const frag = `\n uniform sampler2D _MainTex;\n varying vec2 vUv;\n\n void main()\n {\n gl_FragColor = texture2D(_MainTex, vUv);\n }\n `;\n super(vert, frag, {\n _MainTex: { value: undefined },\n _ScreenSpacePosition: { value: new Vector2() },\n _ScreenSize: { value: new Vector2() },\n _TextureSize: { value: new Vector2() }\n });\n }\n\n set_position(x, y)\n {\n this.uniforms._ScreenSpacePosition.value.set(x, y);\n }\n\n set_texture(tex, w, h)\n {\n this.uniforms._MainTex.value = tex;\n this.uniforms._TextureSize.value.set(tex.image.width, tex.image.height);\n\n if (w !== undefined)\n {\n this.uniforms._TextureSize.value.x = w;\n }\n if (h !== undefined)\n {\n this.uniforms._TextureSize.value.y = h;\n }\n }\n\n set_screen_size(w, h)\n {\n this.uniforms._ScreenSize.value.set(w, h);\n }\n}\n\nexport { ScreenSpaceTextureMaterial };\n","// @ts-check\nimport { AxisHelper } from './components/AxisHelper';\n\nimport { SceneManager } from './SceneManager';\nimport { Cube } from './primitives/Cube';\nimport { Sphere } from './primitives/Sphere';\nimport { Arrow } from './primitives/Arrow';\nimport { OScreen } from './OScreen';\nimport { Graphics } from './Graphics'; // eslint-disable-line no-unused-vars\nimport { ScreenSpaceTextureMaterial } from './materials/ScreenSpaceTextureMaterial';\nimport { PerspectiveCamera } from './PerspectiveCamera';\n\nimport { RenderTarget, Texture, Vector2, Vector3, WebGLRenderer } from 'three'; // eslint-disable-line no-unused-vars\nimport { LineBasicMaterial } from 'three';\nimport { BufferGeometry } from 'three';\nimport { Line } from 'three';\nimport { PlaneGeometry } from 'three';\nimport { ShaderMaterial } from 'three';\nimport { Vector4 } from 'three';\nimport { Mesh } from 'three';\nimport { Box3 } from 'three';\nimport { Box3Helper } from 'three';\nimport { Scene } from 'three';\nimport { CatmullRomCurve3 } from 'three';\nimport { SphereGeometry } from 'three';\nimport { MeshBasicMaterial } from 'three';\n// @ts-ignore\nimport basic_color_vert from './shaders/basic_color/basic_color.vert';\n// @ts-ignore\nimport basic_color_frag from './shaders/basic_color/basic_color.frag';\nimport { CameraManager } from './CameraManager';\n\nclass Debug\n{\n init()\n {\n this.Vector3_one = new Vector3(1, 1, 1);\n this.Vector3_zero = new Vector3(0, 0, 0);\n this.canvas_renderer = undefined;\n\n /** @type { Mesh<PlaneGeometry, ScreenSpaceTextureMaterial>[] } */\n this.display_texture_meshes = [];\n\n this.ctx = undefined;\n this.scene = new Scene();\n this.camera = new PerspectiveCamera(60, OScreen.aspect_ratio, 0.1, 1000);\n this.camera.clear_alpha = 0;\n }\n\n /**\n * @param {Vector3} origin\n * @param {Vector3} dir\n * @param {number | string} color\n * @returns {Arrow}\n */\n draw_arrow(origin, dir, color = 0xff0000)\n {\n const arrow = new Arrow(color, dir.length(), dir.clone().normalize());\n arrow.position.copy(origin);\n this.scene.add(arrow);\n return arrow;\n }\n\n draw_axis()\n {\n const axis = new AxisHelper();\n this.scene.add(axis);\n return axis;\n }\n\n /**\n * @param {RenderTarget} RT\n */\n set_debug_RT(RT)\n {\n this.rt_debug = RT;\n }\n\n /**\n * @param {Vector2 | Vector3} position_2d\n * @param {number} width\n * @param {number} height\n * @param {number | string} color\n */\n draw_rectangle(position_2d, width, height, color)\n {\n width = width || 100;\n height = height || 100;\n this.ctx.fillStyle = color || 'rgba(255, 0, 0, 1)';\n this.ctx.fillRect(position_2d.x - width / 2,\n (this.ctx.canvas.height - position_2d.y) - height / 2, width, height);\n }\n\n clear()\n {\n if (this.ctx)\n {\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n }\n }\n\n /**\n * @param {Vector3 | Vector2} from\n * @param {Vector3 | Vector2} to\n * @param {number | string} color\n */\n draw_line_2D(from, to, color)\n {\n this.ctx.strokeStyle = color || 'rgba(255, 0, 0, 1)';\n this.ctx.beginPath();\n this.ctx.moveTo(from.x, from.y);\n this.ctx.lineTo(to.x, to.y);\n this.ctx.closePath();\n this.ctx.stroke();\n }\n\n /**\n * @param {Vector3[]} points\n * @param {number | string} color\n * @returns {Line}\n */\n draw_line(points, color = 0xff0000)\n {\n const material = new LineBasicMaterial({\n color: color\n });\n\n const geometry = new BufferGeometry().setFromPoints(points);\n\n const line = new Line(geometry, material);\n line.frustumCulled = false;\n this.scene.add(line);\n return line;\n }\n\n /**\n * @param {Vector3} pos\n * @param {number} size\n * @param {number | string} color\n * @returns {Cube}\n */\n draw_cube(pos, size, color)\n {\n size = size || 1;\n color = color || 0xff0000;\n pos = pos || new Vector3();\n\n const cube = new Cube(new Vector3(size, size, size), undefined, color);\n cube.position.copy(pos);\n this.scene.add(cube);\n return cube;\n }\n\n /**\n * @param {Vector3} from\n * @param {Vector3} to\n * @param {number} height\n * @param {number | string} color\n * @param {number} depth\n * @returns {Cube}\n */\n draw_oriented_cube(from, to, height = 1, color = '#FF0000', depth = 0.1)\n {\n const size = from.distanceTo(to);\n const cube = new Cube(new Vector3(depth, height, size), undefined, color);\n\n const center = to.clone().sub(from).multiplyScalar(0.5);\n const forward_dir = center.clone().normalize();\n center.add(from);\n\n cube.position.copy(center);\n\n // let up = new Vector3(0, 1, 0);\n // let forward = forward_dir.clone();\n // let right = forward.clone().cross(up);\n\n // cube.quaternion.setFromRotationMatrix(new Matrix4().makeBasis(right,up,forward));\n cube.quaternion.setFromUnitVectors(new Vector3(0, 0, -1), forward_dir);\n\n this.scene.add(cube);\n return cube;\n }\n\n /**\n *\n * @param {number} [width]\n * @param {number} [height]\n * @param {number | string} [color]\n * @returns\n */\n draw_plane(width, height, color) // eslint-disable-line no-unused-vars\n {\n const geometry = new PlaneGeometry(width, height);\n const material = new ShaderMaterial({\n uniforms: {\n _Color: { value: new Vector4(0, 1, 0, 0.2) }\n },\n vertexShader: basic_color_vert,\n fragmentShader: basic_color_frag,\n transparent: true,\n depthWrite: false\n });\n\n const plane = new Mesh(geometry, material);\n plane.renderOrder = -10000;\n this.scene.add(plane);\n return plane;\n }\n\n /**\n * @param {Vector3} pos\n * @param {number} size\n * @param {number | string} color\n * @returns {Box3Helper}\n */\n draw_empty_cube(pos, size, color)\n {\n size = size || 1;\n color = color || 0xff0000;\n\n const box = new Box3().setFromCenterAndSize(new Vector3(), new Vector3(size, size, size));\n const helper = new Box3Helper(box, color);\n helper.position.copy(pos || new Vector3());\n return helper;\n }\n\n /**\n * @param {Vector3} pos\n * @param {number} size\n * @param {number | string} color\n * @returns {Sphere}\n */\n draw_sphere(pos, size, color)\n {\n size = size || 1;\n color = color || 0xff0000;\n pos = pos || new Vector3();\n\n const sphere = new Sphere(size, color);\n sphere.position.copy(pos);\n this.scene.add(sphere);\n return sphere;\n }\n\n /**\n *\n * @param {Vector3[]} input_points\n * @param {boolean} open\n * @param {number | string} color\n * @returns {Line}\n */\n draw_point_array(input_points, open = false, color = 0xff0000) // eslint-disable-line no-unused-vars\n {\n const catmull = new CatmullRomCurve3(input_points, open);\n catmull.updateArcLengths();\n const points = catmull.getSpacedPoints(200);\n const line_helper = this.draw_line(points, 0x00ff00);\n // line_helper.position.y = 1.5;\n return line_helper;\n }\n\n /**\n * @param {Sphere} sphere\n * @param {number | string} color\n * @returns {Mesh}\n */\n draw_sphere_helper(sphere, color)\n {\n color = color || 0xff0000;\n const geometry = new SphereGeometry(sphere.radius, 32, 32);\n const material = new MeshBasicMaterial({ color: color });\n const sphere_mesh = new Mesh(geometry, material);\n sphere_mesh.position.copy(sphere.center);\n SceneManager.current.add(sphere_mesh);\n return sphere_mesh;\n }\n\n /**\n * @param {Sphere} sphere\n */\n draw_math_sphere(sphere)\n {\n const geometry = new SphereGeometry(sphere.radius, 32, 32);\n const material = new ShaderMaterial({\n uniforms: {\n _Color: { value: new Vector4(1, 0, 0, 0.2) }\n },\n vertexShader: basic_color_vert,\n fragmentShader: basic_color_frag,\n transparent: true\n });\n // var material = new MeshBasicMaterial( {color: 0xff0000, transparent = true} );\n const sphere1 = new Mesh(geometry, material);\n sphere1.position.copy(sphere.center);\n SceneManager.current.add(sphere1);\n }\n\n /**\n * @param {Box3} bb\n */\n draw_bounding_box(bb)\n {\n const helper = new Box3Helper(bb, 0xffff00);\n SceneManager.current.add(helper);\n }\n\n /**\n * @param {Vector3[]} curve\n * @param {object} options\n * @param {number} options.offset\n */\n draw_curve(curve, options)\n {\n const offset = new Vector3(0, 0, 0);\n if (options)\n {\n offset.y = options.offset || 0;\n }\n\n for (let i = 0; i < curve.length - 1; i++)\n {\n this.draw_line([curve[i].clone().add(offset), curve[i + 1].clone().add(offset)]);\n }\n }\n\n /**\n * @param {Texture} tex\n * @param {number} w\n * @param {number} h\n * @returns {Mesh}\n */\n draw_texture(tex, w, h)\n {\n const mesh = new Mesh(new PlaneGeometry(1, 1), new ScreenSpaceTextureMaterial());\n this.display_texture_meshes.push(mesh);\n this.scene.add(mesh);\n\n mesh.material.set_texture(tex, w, h);\n return mesh;\n }\n\n /**\n * @param {Graphics} graphics\n */\n render(graphics)\n {\n for (let i = 0; i < this.display_texture_meshes.length; i++)\n {\n this.display_texture_meshes[i].material.set_screen_size(OScreen.width, OScreen.height);\n }\n if (this.scene.children.length > 0)\n {\n graphics.render(this.scene, CameraManager.current);\n }\n }\n}\n\nconst debug = new Debug();\nexport { debug as Debug };\n","// @ts-check\n\nclass Time\n{\n constructor()\n {\n this.__delta_buffer = [0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016];\n }\n\n init()\n {\n this.__previous_elapsed_time = -1;\n this.__delta_time = 0;\n this.__smooth_delta_time = 0;\n this.__elapsed_time = 0;\n this.__frame_interpolation_t = 0;\n this.fixed_delta_time = 1 / 30;\n }\n\n get elapsed_time()\n {\n return this.__elapsed_time;\n }\n\n get delta_time()\n {\n return this.__delta_time;\n }\n\n get smooth_delta_time()\n {\n return this.__smooth_delta_time;\n }\n\n get frame_interpolation()\n {\n return this.__frame_interpolation_t;\n }\n\n get fdt()\n {\n return this.fixed_delta_time;\n }\n\n get dt()\n {\n return this.delta_time;\n }\n\n get sdt()\n {\n return this.smooth_delta_time;\n }\n\n /**\n * @param {number} value\n */\n __set_frame_interpolation(value)\n {\n this.__frame_interpolation_t = value;\n }\n\n /**\n * @param {number} elapsed_time\n */\n __update(elapsed_time)\n {\n if (this.__previous_elapsed_time < 0)\n {\n this.__previous_elapsed_time = elapsed_time;\n }\n this.__delta_time = (elapsed_time - this.__previous_elapsed_time) / 1000;\n this.__elapsed_time = elapsed_time / 1000;\n\n this.__delta_buffer.shift();\n this.__delta_buffer.push(this.delta_time < 0.32 ? this.delta_time : 0.032);\n\n this.__calculate_smooth_delta_time();\n\n this.__previous_elapsed_time = elapsed_time;\n }\n\n __calculate_smooth_delta_time()\n {\n this.__smooth_delta_time = 0;\n\n for (let i = 0; i < this.__delta_buffer.length; i++)\n {\n this.__smooth_delta_time += this.__delta_buffer[i];\n }\n\n this.__smooth_delta_time = this.__smooth_delta_time / this.__delta_buffer.length;\n }\n}\n\nconst time = new Time();\nexport { time as Time };\n","\nclass OMath\n{\n constructor()\n {}\n\n static linear_map(value,\n from_range_start_value,\n from_range_end_value,\n to_range_start_value,\n to_range_end_value)\n {\n return ((value - from_range_start_value) / (from_range_end_value - from_range_start_value)) * (to_range_end_value - to_range_start_value) + to_range_start_value;\n }\n\n static between(value, min, max)\n {\n return (value >= min && value <= max);\n }\n\n static mod(number, divisor)\n {\n return ((number % divisor) + divisor) % divisor;\n }\n\n static rgb_to_hex(rgb)\n {\n rgb.r = Math.round(rgb.r * 255).toString(16);\n rgb.g = Math.round(rgb.g * 255).toString(16);\n rgb.b = Math.round(rgb.b * 255).toString(16);\n\n if (rgb.r.length === 1)\n {\n rgb.r = '0' + rgb.r;\n }\n if (rgb.g.length === 1)\n {\n rgb.g = '0' + rgb.g;\n }\n if (rgb.b.length === 1)\n {\n rgb.b = '0' + rgb.b;\n }\n\n return '#' + rgb.r + rgb.g + rgb.b;\n }\n\n static project_points_on_plane(points, plane)\n {\n const projected_point = points[0].clone();\n projected_point.set(0, 0, 0);\n\n const points_on_plane = [];\n\n for (let i = 0; i < points.length; i++)\n {\n plane.projectPoint(points[i], projected_point);\n points_on_plane.push(projected_point.clone());\n }\n\n return points_on_plane;\n }\n\n static matrix4_lerp(from, to, target, t)\n {\n for (let i = 0; i < 16; i++)\n {\n target.elements[i] = this.lerp(from.elements[i], to.elements[i], t);\n }\n }\n\n static equals(x1, x2)\n {\n return Math.abs(x1 - x2) < 0.000001;\n }\n\n static lerp(x, y, t)\n {\n return (1 - t) * x + t * y;\n }\n\n static clamp(value, min, max)\n {\n return Math.max(min, Math.min(max, value));\n }\n\n static euclideanModulo(n, m)\n {\n return ((n % m) + m) % m;\n }\n\n static pingpong(x, length = 1)\n {\n return length - Math.abs(OMath.euclideanModulo(x, length * 2) - length);\n }\n\n static degToRad(degrees)\n {\n return degrees * (Math.PI / 180);\n }\n\n static radToDeg(radians)\n {\n return radians * (180 / Math.PI);\n }\n\n static deg_to_rad(degrees)\n {\n return degrees * (Math.PI / 180);\n }\n\n static rad_to_deg(radians)\n {\n return radians * (180 / Math.PI);\n }\n\n static perspective_divide(v)\n {\n v.x /= v.w;\n v.y /= v.w;\n v.z /= v.w;\n return v;\n }\n\n static points_average(points)\n {\n const center = points[0].clone();\n for (let i = 1; i < points.length; i++)\n {\n center.add(points[i]);\n }\n center.multiplyScalar(1 / points.length);\n return center;\n }\n\n static get_random_color()\n {\n const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f'];\n\n let col = '#';\n col += arr[Math.floor(Math.random() * 16)];\n col += arr[Math.floor(Math.random() * 16)];\n\n col += arr[Math.floor(Math.random() * 16)];\n col += arr[Math.floor(Math.random() * 16)];\n\n col += arr[Math.floor(Math.random() * 16)];\n col += arr[Math.floor(Math.random() * 16)];\n return col;\n }\n\n static saturate(x)\n {\n return OMath.clamp(x, 0, 1);\n }\n\n /**\n * Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier}\n * (universally unique identifier).\n *\n * @return {string} The UUID.\n */\n static generate_uuid()\n {\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n const _lut = [\n '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f',\n '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f',\n '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f',\n '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f',\n '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f',\n '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f',\n '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f',\n '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f',\n '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f',\n '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f',\n 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af',\n 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf',\n 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf',\n 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df',\n 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef',\n 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff'];\n\n const d0 = Math.random() * 0xffffffff | 0;\n const d1 = Math.random() * 0xffffffff | 0;\n const d2 = Math.random() * 0xffffffff | 0;\n const d3 = Math.random() * 0xffffffff | 0;\n const uuid = _lut[d0 & 0xff] + _lut[d0 >> 8 & 0xff] + _lut[d0 >> 16 & 0xff] + _lut[d0 >> 24 & 0xff] + '-' +\n _lut[d1 & 0xff] + _lut[d1 >> 8 & 0xff] + '-' + _lut[d1 >> 16 & 0x0f | 0x40] + _lut[d1 >> 24 & 0xff] + '-' +\n _lut[d2 & 0x3f | 0x80] + _lut[d2 >> 8 & 0xff] + '-' + _lut[d2 >> 16 & 0xff] + _lut[d2 >> 24 & 0xff] +\n _lut[d3 & 0xff] + _lut[d3 >> 8 & 0xff] + _lut[d3 >> 16 & 0xff] + _lut[d3 >> 24 & 0xff];\n\n // .toLowerCase() here flattens concatenated strings to save heap memory space.\n return uuid.toLowerCase();\n }\n}\n\nexport { OMath };\n","// @ts-check\nclass ActionEvent\n{\n /**\n * @param {string} name\n * @param {string} method\n * @param {string} args\n */\n constructor(name, method, args)\n {\n this.name = name;\n this.method = method;\n this.args = args;\n }\n\n trigger()\n {\n ViewApi.application[this.name][this.method](...this.args.split(','));\n }\n}\n\nexport { ActionEvent };\n","\nclass EasingFunctions\n{\n constructor()\n {}\n\n static linear(x)\n {\n return x;\n }\n\n static triangular(x)\n {\n return 1 - Math.abs((x * 2) % (1 * 2) - 1);\n }\n\n static ease_in_sine(x)\n {\n return 1 - Math.cos(x * 3.1415926 / 2);\n }\n\n static ease_out_sine(x)\n {\n return Math.sin(x * 3.1415926 / 2);\n }\n\n static ease_in_out_sine(x)\n {\n return -(Math.cos(3.1415926 * x) - 1) / 2;\n }\n\n static ease_in_cubic(x)\n {\n return x * x * x;\n }\n\n static ease_out_cubic(x)\n {\n return 1 - Math.pow(1 - x, 3);\n }\n\n static ease_in_out_cubic(x)\n {\n return x < 0.5\n ? 4 * x * x * x\n : 1 - Math.pow(-2 * x + 2, 3) / 2;\n }\n\n static ease_in_quad(x)\n {\n return x * x;\n }\n\n static ease_out_quad(x)\n {\n return 1 - (1 - x) * (1 - x);\n }\n\n static ease_in_out_quad(x)\n {\n return x < 0.5\n ? 2 * x * x\n : 1 - Math.pow(-2 * x + 2, 2) / 2;\n }\n\n static ease_in_quart(x)\n {\n return x * x * x * x;\n }\n\n static ease_out_quart(x)\n {\n return 1 - Math.pow(1 - x, 4);\n }\n\n static ease_in_out_quart(x)\n {\n return x < 0.5\n ? 8 * x * x * x * x\n : 1 - Math.pow(-2 * x + 2, 4) / 2;\n }\n\n static ease_in_quint(x)\n {\n return x * x * x * x * x;\n }\n\n static ease_out_quint(x)\n {\n return 1 - Math.pow(1 - x, 5);\n }\n\n static ease_in_out_quint(x)\n {\n return x < 0.5\n ? 16 * x * x * x * x * x\n : 1 - Math.pow(-2 * x + 2, 5) / 2;\n }\n\n static ease_in_expo(x)\n {\n return x === 0 ? 0 : Math.pow(2, 10 * x - 10);\n }\n\n static ease_out_expo(x)\n {\n return x === 1 ? 1 : 1 - Math.pow(2, -10 * x);\n }\n\n static ease_in_out_expo(x)\n {\n return x === 0\n ? 0\n : x === 1\n ? 1\n : x < 0.5\n ? Math.pow(2, 20 * x - 10) / 2\n : (2 - Math.pow(2, -20 * x + 10)) / 2;\n }\n\n static ease_in_circ(x)\n {\n return 1 - Math.sqrt(1 - Math.pow(x, 2));\n }\n\n static ease_out_circ(x)\n {\n return Math.sqrt(1 - Math.pow(x - 1, 2));\n }\n\n static ease_in_out_circ(x)\n {\n return x < 0.5\n ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2\n : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2;\n }\n\n static ease_in_back(x)\n {\n return 2.7015 * x * x * x - 1.7015 * x * x;\n }\n\n static ease_out_back(x)\n {\n return 1 + 2.7015 * Math.pow(x - 1, 3) + 1.7015 * Math.pow(x - 1, 2);\n }\n\n static ease_in_out_back(x)\n {\n return x < 0.5\n ? (Math.pow(2 * x, 2) * ((2.5949095 + 1) * 2 * x - 2.5949095)) / 2\n : (Math.pow(2 * x - 2, 2) * ((2.5949095 + 1) * (x * 2 - 2) + 2.5949095) + 2) / 2;\n }\n\n static ease_in_elastic(x)\n {\n const c4 = (2 * Math.PI) / 3;\n\n return x === 0\n ? 0\n : x === 1\n ? 1\n : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4);\n }\n\n static ease_out_elastic(x)\n {\n return x === 0\n ? 0\n : x === 1\n ? 1\n : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * 2.0943950) + 1;\n }\n\n static ease_in_out_elastic(x)\n {\n return x === 0\n ? 0\n : x === 1\n ? 1\n : x < 0.5\n ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * 1.3962633)) / 2\n : Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * 1.3962633) / 2 + 1;\n }\n\n static ease_in_bounce(x)\n {\n return 1 - this.ease_out_bounce(1 - x);\n }\n\n static ease_out_bounce(x)\n {\n const n1 = 7.5625;\n const d1 = 2.75;\n\n if (x < 1 / d1)\n {\n return n1 * x * x;\n }\n else if (x < 2 / d1)\n {\n return n1 * (x -= 1.5 / d1) * x + 0.75;\n }\n else if (x < 2.5 / d1)\n {\n return n1 * (x -= 2.25 / d1) * x + 0.9375;\n }\n else\n {\n return n1 * (x -= 2.625 / d1) * x + 0.984375;\n }\n }\n\n static ease_in_out_bounce(x)\n {\n return x < 0.5\n ? (1 - this.ease_out_bounce(1 - 2 * x)) / 2\n : (1 + this.ease_out_bounce(2 * x - 1)) / 2;\n }\n\n static heartbeat(t)\n {\n return 1.0 - Math.pow(Math.abs(Math.sin(t + 1.0)), 63.0) * Math.sign(Math.sin(t)) * Math.sin(t + 1.5 + 1.0) * 0.8;\n }\n}\n\n/**\n * @typedef {'linear'|'triangular'|'ease_in_sine'|'ease_out_sine'|'ease_in_out_sine'|'ease_in_cubic'|'ease_out_cubic'|'ease_in_out_cubic'|'ease_in_quad'|'ease_out_quad'|'ease_in_out_quad'|'ease_in_quart'|'ease_out_quart'|'ease_in_out_quart'|'ease_in_quint'|'ease_out_quint'|'ease_in_out_quint'|'ease_in_expo'|'ease_out_expo'|'ease_in_out_expo'|'ease_in_circ'|'ease_out_circ'|'ease_in_out_circ'|'ease_in_back'|'ease_out_back'|'ease_in_out_back'|'ease_in_elastic'|'ease_out_elastic'|'ease_in_out_elastic'|'ease_in_bounce'|'ease_out_bounce'|'ease_in_out_bounce'|'heartbeat'} EasingFunctionType\n */\n\nexport { EasingFunctions };\n","// @ts-check\nimport { Vector3 } from 'three'; // eslint-disable-line no-unused-vars\nimport { EasingFunctions } from '../utilities/EasingFunctions';\n\nclass ActionInterpolator\n{\n /**\n * @param {import('../utilities/EasingFunctions').EasingFunctionType | function} easing_function\n */\n constructor(easing_function = 'linear')\n {\n this.easing_function = undefined;\n\n if (typeof easing_function === 'string')\n {\n this.easing_function = EasingFunctions[easing_function];\n }\n else\n {\n this.easing_function = easing_function;\n }\n\n this.attribute_name = '';\n /** @type {number | Vector3} */\n this.from = 0;\n /** @type {number | Vector3} */\n this.to = 1;\n }\n\n /**\n * @param {any} context\n * @param {number} t\n */\n update(context, t) // eslint-disable-line no-unused-vars\n {\n }\n}\n\nexport { ActionInterpolator };\n","// @ts-check\nimport { OMath } from '../utilities/OMath';\nimport { ActionEvent } from './ActionEvent'; // eslint-disable-line no-unused-vars\nimport { ActionInterpolator } from './ActionInterpolator'; // eslint-disable-line no-unused-vars\n\nclass ActionSequencer\n{\n /**\n * @param {any} [context]\n */\n constructor(context = {})\n {\n this.previous_elapsed_time = -0.00001;\n this.elapsed_time = -0.00001;\n this.playback_speed = this.__get_playback_speed();\n this.playing = true;\n\n /** @type {{action:ActionEvent, trigger_time:number }[]} */\n this.action_events = [];\n this.context = context;\n\n this.initial_context = JSON.parse(JSON.stringify(context));\n\n this.tmp_t = 0;\n\n /** @type {{[key:string]:any[]}} */\n this.channels = {};\n\n const channel_names = Object.keys(context);\n for (let i = 0; i < channel_names.length; i++)\n {\n this.channels[channel_names[i]] = [];\n }\n\n this.duration = 0;\n }\n\n play()\n {\n this.playing = true;\n }\n\n stop()\n {\n this.playing = false;\n }\n\n reset()\n {\n this.elapsed_time = -0.00001;\n }\n\n skip()\n {\n const duration = this.get_duration();\n this.__play_clips(this.elapsed_time, duration + 0.0001);\n this.elapsed_time = duration;\n }\n\n /**\n * @param {number} delta_time\n */\n update(delta_time)\n {\n if (this.playing)\n {\n this.previous_elapsed_time = this.elapsed_time;\n this.elapsed_time += delta_time * this.playback_speed;\n this.__play_clips(this.previous_elapsed_time, this.elapsed_time);\n }\n }\n\n /**\n * @param {number} time\n */\n set_progress(time)\n {\n this.previous_elapsed_time = this.elapsed_time;\n this.elapsed_time = OMath.clamp(time, 0, this.duration);\n this.__play_clips(this.elapsed_time, this.elapsed_time);\n }\n\n /**\n * @param {number} t\n */\n set_normalized_progress(t)\n {\n this.previous_elapsed_time = this.elapsed_time;\n this.elapsed_time = OMath.clamp(t, 0, 1) * this.duration;\n this.__play_clips(this.elapsed_time, this.elapsed_time);\n }\n\n get_progress()\n {\n return OMath.clamp(this.elapsed_time / this.get_duration(), 0, 1);\n }\n\n is_finished()\n {\n return this.elapsed_time > this.get_duration();\n }\n\n /**\n * @param {number} trigger_time\n * @param {ActionEvent} action\n */\n add_action_event(trigger_time, action)\n {\n this.action_events.push({\n trigger_time: trigger_time,\n action: action\n });\n\n this.duration = Math.max(this.duration, trigger_time);\n }\n\n /**\n * @param {number} from\n * @param {number} to\n * @param {ActionInterpolator} interpolator\n * @param {boolean} [use_dynamic_from_value]\n */\n add_action_interpolator(from, to, interpolator, use_dynamic_from_value = false)\n {\n if (use_dynamic_from_value)\n {\n const keyframes = this.channels[interpolator.attribute_name];\n\n if (keyframes === undefined)\n {\n console.error(`${interpolator.attribute_name} missing in initial state data.`);\n }\n\n if (keyframes.length === 0)\n {\n interpolator.from = this.initial_context[interpolator.attribute_name];\n }\n else\n {\n interpolator.from = keyframes[keyframes.length - 1].interpolator.to;\n }\n }\n\n const keyframe = {\n from: from,\n to: to,\n interpolator: interpolator\n };\n\n this.duration = Math.max(this.duration, to);\n this.channels[interpolator.attribute_name].push(keyframe);\n }\n\n /**\n * @param {string} name\n */\n get_current_target_value(name)\n {\n const keyframe = this.__get_current_keyframe(name, this.elapsed_time);\n\n if (this.elapsed_time < keyframe.from)\n {\n return keyframe.interpolator.evaluate(0);\n }\n\n return keyframe.interpolator.evaluate(1);\n }\n\n /**\n * @param {string} name\n */\n get_current_starting_value(name)\n {\n const keyframe = this.__get_current_keyframe(name, this.elapsed_time);\n\n return keyframe.interpolator.evaluate(0);\n }\n\n /**\n * @param {string} name\n */\n get_current_progress(name)\n {\n const keyframe = this.__get_current_keyframe(name, this.elapsed_time);\n const t = this.__linear_map_01(this.elapsed_time, keyframe.from, keyframe.to);\n\n return keyframe.interpolator.easing_function(t);\n }\n\n get_duration()\n {\n return this.duration;\n }\n\n /**\n * @param {number} from\n * @param {number} to\n */\n __play_clips(from, to) // eslint-disable-line no-unused-vars\n {\n if (this.elapsed_time > this.previous_elapsed_time)\n {\n this.__play_events(this.previous_elapsed_time, this.elapsed_time);\n }\n const channel_names = Object.keys(this.initial_context);\n\n for (let i = 0; i < channel_names.length; i++)\n {\n const name = channel_names[i];\n const keyframe = this.__get_current_keyframe(name, from);\n\n this.context[name] = this.evaluate_keyframe(keyframe, from);\n }\n }\n\n /**\n * @param {number} from\n * @param {number} to\n */\n __play_events(from, to)\n {\n for (let i = 0; i < this.action_events.length; i++)\n {\n const trigger_time = this.action_events[i].trigger_time;\n if (OMath.between(trigger_time, from, to))\n {\n // console.log('Play event: ' + this.action_events[i].action.constructor.name + ' at ' + this.action_events[i].trigger_time);\n this.action_events[i].action.trigger();\n }\n }\n }\n\n /**\n * @param {any} keyframe\n * @param {number} time\n */\n evaluate_keyframe(keyframe, time)\n {\n this.tmp_t = this.__linear_map_01(time, keyframe.from, keyframe.to);\n\n return keyframe.interpolator.evaluate(OMath.clamp(this.tmp_t, 0, 1));\n }\n\n /**\n * @param {string} channel_name\n */\n get_keyframes(channel_name)\n {\n return this.channels[channel_name];\n }\n\n /**\n * @param {string} channel_name\n */\n is_channel_redefined(channel_name)\n {\n for (let i = 0; i < this.channels[channel_name].length; i++)\n {\n const keyframe = this.channels[channel_name][i];\n\n if (keyframe.interpolator.initial)\n {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * @param {number} value\n * @param {number} from_range_start_value\n * @param {number} from_range_end_value\n * @returns {number}\n */\n __linear_map_01(value,\n from_range_start_value,\n from_range_end_value)\n {\n return OMath.saturate(((value - from_range_start_value) / (from_range_end_value - from_range_start_value)) * (1 - 0) + 0);\n }\n\n /**\n * @param {string} channel_name\n * @param {number} time\n */\n __get_current_keyframe(channel_name, time)\n {\n let current = undefined;\n\n const keyframes = this.channels[channel_name];\n\n for (let i = 0; i < keyframes.length; i++)\n {\n const keyframe = keyframes[i];\n\n if (time >= keyframe.from && time <= keyframe.to)\n {\n current = keyframe;\n return current;\n }\n }\n\n let min = Infinity;\n\n for (let i = 0; i < keyframes.length; i++)\n {\n const keyframe = keyframes[i];\n const distance = Math.abs(keyframe.to - time);\n\n if (distance < min)\n {\n current = keyframe;\n min = distance;\n }\n }\n\n return current;\n }\n\n __get_playback_speed()\n {\n const url_params = new URLSearchParams(window.location.search);\n\n const transitions_velocity = url_params.get('transitions_velocity');\n\n if (transitions_velocity)\n {\n return Number(transitions_velocity);\n }\n else\n {\n return 1;\n }\n }\n\n /**\n * @param {string} name\n * @param {number} value\n */\n set_initial_value_on_channel(name, value)\n {\n const keyframes = this.get_keyframes(name);\n keyframes[0].interpolator.from = value;\n }\n\n /**\n * @param {string} name\n * @param {number} value\n */\n set_final_value_on_channel(name, value)\n {\n const keyframes = this.get_keyframes(name);\n keyframes[keyframes.length - 1].interpolator.to = value;\n }\n}\n\nexport { ActionSequencer };\n","// @ts-check\nimport { ActionInterpolator } from './ActionInterpolator';\nimport { OMath } from '../utilities/OMath';\n\nclass NumberInterpolator extends ActionInterpolator\n{\n /**\n * @param {string} attribute_name\n * @param {number} [from]\n * @param {number} [to]\n * @param {boolean} [initial]\n * @param {import('../utilities/EasingFunctions').EasingFunctionType | function} [easing_function]\n */\n constructor(attribute_name, from = 0, to = 1, initial = false, easing_function = 'linear')\n {\n super(easing_function);\n\n this.attribute_name = attribute_name;\n this.from = from;\n this.to = to;\n this.initial = initial;\n }\n\n /**\n * @param {any} context\n * @param {number} t\n */\n update(context, t)\n {\n context[this.attribute_name] = OMath.lerp(this.from, this.to, this.easing_function(t));\n }\n\n /**\n * @param {number} t\n */\n evaluate(t)\n {\n return OMath.lerp(this.from, this.to, this.easing_function(t));\n }\n}\n\nexport { NumberInterpolator };\n","class DrawIOAnimationSheet\n{\n constructor()\n {\n\n }\n\n parse(xml_document)\n {\n const doc = new DOMParser().parseFromString(xml_document, 'text/xml');\n\n const animation_nodes = doc.querySelectorAll('mxGeometry');\n\n const animation_tracks = [];\n const triggers = [];\n\n for (let i = 0; i < animation_nodes.length; i++)\n {\n const node = animation_nodes[i];\n const parent_node = node.parentElement;\n const data = parent_node.getAttribute('value');\n\n const x_pos = this.get_node_x_position(node);\n\n const from = x_pos / 100;\n const duration = parseFloat(node.getAttribute('width')) / 100;\n\n // is trigger\n if (parent_node.getAttribute('style').includes('rhombus;'))\n {\n const split_data = data.split('.');\n const trigger_name = split_data[0];\n const trigger_method = split_data[1];\n\n triggers.push({\n name: trigger_name,\n method: trigger_method,\n at_time: from + duration * 0.5\n });\n }\n\n const valid_element = parent_node.getAttribute('style').includes('rounded=0;') &&\n !parent_node.getAttribute('style').includes('text;');\n\n if (valid_element && data !== '' && !data.includes(' '))\n {\n const split_data = data.split('=');\n\n const attribute_name = split_data[0];\n\n const value_data = split_data[1].split('--');\n const to_value = parseFloat(value_data[0]);\n const easing_function = value_data[1];\n\n if (split_data.length !== 2)\n {\n console.error('DrawIO data is malformed:', data);\n }\n\n if (value_data.length !== 2)\n {\n console.error('DrawIO data is malformed:', data);\n }\n\n animation_tracks.push({\n attribute_name: attribute_name,\n from_time: from,\n to_time: from + duration,\n to_value: to_value,\n easing_function: easing_function\n });\n }\n }\n\n animation_tracks.sort((a, b) =>\n {\n return a.from_time - b.from_time;\n });\n return {\n animation_tracks: animation_tracks,\n triggers: triggers\n };\n }\n\n get_node_x_position(node)\n {\n const x_pos = node.getAttribute('x');\n return x_pos === null ? 0 : parseFloat(x_pos);\n }\n}\n\nexport { DrawIOAnimationSheet };\n","import { ActionSequencer } from '../../action_sequencer/ActionSequencer';\nimport { NumberInterpolator } from '../../action_sequencer/NumberInterpolator';\nimport { ActionEvent } from '../../action_sequencer/ActionEvent';\nimport { DrawIOAnimationSheet } from './DrawIOAnimationSheet';\n\nclass ActionSequencerBuilder\n{\n constructor(default_state_data)\n {\n this.default_state_data = default_state_data;\n }\n\n from_animation_sheet(animation_data, current_context, initial_context)\n {\n initial_context = initial_context || this.default_state_data;\n const tracks = animation_data.animation_tracks;\n const triggers = animation_data.triggers;\n\n const initial_tracks = this.state_to_tracks(this.default_state_data, this.get_longest_time(animation_data.animation_tracks));\n\n for (let i = 0; i < initial_tracks.length; i++)\n {\n if (tracks.find(element => element.attribute_name === initial_tracks[i].attribute_name) === undefined)\n {\n tracks.push(initial_tracks[i]);\n }\n }\n\n const sequencer = new ActionSequencer(current_context);\n\n for (let i = 0; i < tracks.length; i++)\n {\n const t = tracks[i];\n const interpolator = new NumberInterpolator(\n t.attribute_name,\n current_context[t.attribute_name],\n t.to_value,\n t.initial,\n t.easing_function\n );\n\n sequencer.add_action_interpolator(t.from_time, t.to_time, interpolator, true);\n }\n\n for (let i = 0; i < triggers.length; i++)\n {\n const t = triggers[i];\n const action_event = new ActionEvent(t.name, t.method, t.args);\n sequencer.add_action_event(t.at_time, action_event);\n }\n\n return sequencer;\n }\n\n state_to_tracks(state, longest_time)\n {\n const tracks = [];\n\n const keys = Object.keys(state);\n\n for (let i = 0; i < keys.length; i++)\n {\n tracks.push({\n attribute_name: keys[i],\n from_time: 0,\n to_time: longest_time < 1 ? longest_time : 1,\n to_value: state[keys[i]],\n initial: true,\n easing_function: 'ease_in_out_cubic'\n });\n }\n\n return tracks;\n }\n\n from_draw_io(xml, context)\n {\n const transition_data = (new DrawIOAnimationSheet()).parse(xml);\n const tracks = transition_data.animation_tracks;\n const triggers = transition_data.triggers;\n const sequencer = new ActionSequencer(context);\n\n for (let i = 0; i < tracks.length; i++)\n {\n const t = tracks[i];\n const interpolator = new NumberInterpolator(\n t.attribute_name,\n context[t.attribute_name],\n t.to_value,\n t.initial,\n t.easing_function\n );\n\n sequencer.add_action_interpolator(t.from_time, t.to_time, interpolator, true);\n }\n\n for (let i = 0; i < triggers.length; i++)\n {\n const t = triggers[i];\n const action_event = new ActionEvent(t.name, t.method);\n sequencer.add_action_event(t.at_time, action_event);\n }\n\n return sequencer;\n }\n\n get_longest_time(tracks)\n {\n let longest_time = -1;\n\n for (let i = 0; i < tracks.length; i++)\n {\n const track = tracks[i];\n\n const track_time = track.to_time;\n\n longest_time = track_time > longest_time ? track_time : longest_time;\n }\n\n return longest_time;\n }\n}\n\nexport { ActionSequencerBuilder };\n","import { ActionSequencerBuilder } from './ActionSequencerBuilder';\n\nclass TransitionTable\n{\n constructor()\n {\n this.transitions = [];\n this.default_state_data = {};\n }\n\n get(from_state_name, to_state_name, current_context)\n {\n for (let i = 0; i < this.transitions.length; i++)\n {\n if (this.transitions[i].from === from_state_name && this.transitions[i].to === to_state_name)\n {\n const action_sequencer = new ActionSequencerBuilder(this.default_state_data).from_animation_sheet(this.transitions[i].data, current_context);\n return action_sequencer;\n }\n }\n\n for (let i = 0; i < this.transitions.length; i++)\n {\n if (this.transitions[i].to === to_state_name && this.transitions[i].from === undefined)\n {\n const action_sequencer = new ActionSequencerBuilder(this.default_state_data).from_animation_sheet(this.transitions[i].data, current_context);\n return action_sequencer;\n }\n }\n\n console.error('TransitionTable.get no data found for: ', from_state_name, to_state_name);\n return undefined;\n }\n\n add_transitions(transitions)\n {\n for (let i = 0; i < transitions.length; i++)\n {\n this.transitions.push(transitions[i]);\n }\n }\n\n set_transitions(transitions)\n {\n this.transitions = transitions;\n }\n\n set_default_state_data(default_state_data)\n {\n this.default_state_data = default_state_data;\n }\n}\n\nexport { TransitionTable };\n","class ViewState\n{\n constructor(name)\n {\n this.name = name;\n }\n\n start()\n {\n }\n\n before_enter()\n {\n }\n\n on_enter()\n {\n }\n\n before_exit()\n {\n }\n\n on_exit()\n {\n }\n\n before_update()\n {\n }\n\n update()\n {\n }\n\n fixed_update()\n {\n }\n\n update_enter_transition(global_view_data, transition_progress, action_sequencer)\n {\n }\n\n update_exit_transition(global_view_data, transition_progress, action_sequencer)\n {\n }\n}\n\nexport { ViewState };\n","import { Time } from '../../Time';\nimport { ViewState } from '../ViewState';\n\nclass ViewStateTransitionHandler\n{\n constructor(transition_table)\n {\n this.last_state = new ViewState();\n this.current_state = new ViewState();\n\n this.default_state_data = {};\n this.current_state_data = {};\n\n this.transition_table = transition_table;\n\n this.transitioning = false;\n }\n\n go_to_state(state, skip = false)\n {\n if (this.transitioning)\n {\n this.__exit_last_state();\n }\n\n this.last_state = this.current_state;\n this.current_state = state;\n\n this.last_state.before_exit();\n this.current_state.before_enter();\n\n this.action_sequencer = this.transition_table.get(this.last_state.name, this.current_state.name, this.current_state_data);\n this.action_sequencer.play();\n\n this.transitioning = true;\n\n if (skip)\n {\n this.action_sequencer.skip();\n this.update();\n }\n }\n\n update()\n {\n if (this.transitioning)\n {\n this.__update_transitions();\n\n if (this.action_sequencer.is_finished())\n {\n this.transitioning = false;\n\n this.__update_transitions();\n\n this.__exit_last_state();\n\n this.current_state.on_enter();\n }\n }\n else\n {\n this.current_state.update();\n }\n }\n\n before_update()\n {\n this.current_state.before_update();\n }\n\n fixed_update()\n {\n this.current_state.fixed_update();\n }\n\n set_state(state)\n {\n this.current_state = state;\n }\n\n set_default_state_data(default_state_data)\n {\n Object.assign(this.default_state_data, default_state_data);\n Object.assign(this.current_state_data, default_state_data);\n }\n\n __update_transitions()\n {\n this.action_sequencer.update(Time.delta_time);\n this.last_state.update_exit_transition(this.current_state_data, this.action_sequencer.get_progress(), this.action_sequencer);\n this.current_state.update_enter_transition(this.current_state_data, this.action_sequencer.get_progress(), this.action_sequencer);\n }\n\n __exit_last_state()\n {\n // if (this.last_state.name !== this.current_state.name)\n // {\n // this.last_state.hide();\n // }\n\n this.last_state.on_exit();\n }\n}\n\nexport { ViewStateTransitionHandler };\n","import { TransitionTable } from './transition/TransitionTable';\nimport { ViewStateTransitionHandler } from './transition/ViewStateTransitionHandler';\n\nclass TransitionManager\n{\n constructor()\n {\n this.transition_table = new TransitionTable();\n this.transition_handler = new ViewStateTransitionHandler(this.transition_table);\n }\n\n get action_sequencer()\n {\n return this.transition_handler.action_sequencer;\n }\n\n get current_state_data()\n {\n return this.transition_handler.current_state_data;\n }\n\n get_current_state()\n {\n return this.transition_handler.current_state;\n }\n\n go_to_state(state, skip = false)\n {\n this.transition_handler.go_to_state(state, skip);\n }\n\n before_update()\n {\n this.transition_handler.before_update();\n }\n\n update()\n {\n this.transition_handler.update();\n }\n\n fixed_update()\n {\n this.transition_handler.fixed_update();\n }\n\n add_transitions(transitions)\n {\n this.transition_table.add_transitions(transitions);\n }\n\n set_transitions(transitions)\n {\n this.transition_table.set_transitions(transitions);\n }\n\n set_state(state)\n {\n this.transition_handler.set_state(state);\n }\n\n set_default_state_data(default_state_data)\n {\n this.transition_table.set_default_state_data(default_state_data);\n this.transition_handler.set_default_state_data(default_state_data);\n }\n\n set_transitions_velocity(transitions_velocity)\n {\n this.transition_table.set_transitions_velocity(transitions_velocity);\n }\n}\n\nconst transition_manager = new TransitionManager();\nexport { transition_manager as TransitionManager };\n","import { TransitionManager } from './TransitionManager';\n\nclass ViewComponentManager\n{\n constructor()\n {\n this.components = [];\n this.enabled_components = new Set();\n }\n\n update()\n {\n this.__set_components_opacities();\n\n for (const component of this.enabled_components)\n {\n component.update(TransitionManager.current_state_data);\n }\n }\n\n register_component(component)\n {\n this.components.push(component);\n }\n\n enable_component(component)\n {\n // const component_to_enable = this.get_component_by_name(component_name);\n\n this.enabled_components.add(component);\n }\n\n disable_component(component)\n {\n // const component_to_disable = this.get_component_by_name(component_name);\n\n this.enabled_components.delete(component);\n }\n\n get_component_by_name(component_name)\n {\n console.warn('DEPRECATED. Use ViewComponentManager.get instead');\n this.get(component_name);\n }\n\n get(component_name)\n {\n for (let i = 0; i < this.components.length; i++)\n {\n if (this.components[i].name === component_name)\n {\n return this.components[i];\n }\n }\n console.error('[ViewComponentManager.get] no component found for: ', component_name);\n return undefined;\n }\n\n __set_components_opacities()\n {\n for (let i = 0; i < this.components.length; i++)\n {\n this.components[i].set_opacity(TransitionManager.current_state_data);\n }\n }\n}\n\nconst view_component_manager = new ViewComponentManager();\nexport { view_component_manager as ViewComponentManager };\n","import { TransitionManager } from './TransitionManager';\n\nclass ViewManager\n{\n constructor()\n {\n this.views = [];\n\n this.browser_title_suffix = '';\n }\n\n update()\n {\n this.__set_views_opacities();\n }\n\n go_to_view(view_name, change_url = true, skip = false)\n {\n const v = this.get(view_name);\n\n if (change_url)\n {\n this.__change_browser_url(v.url);\n this.__change_browser_title(v.url);\n }\n\n TransitionManager.go_to_state(v, skip);\n }\n\n go_to_scene(scene_name, change_url = false, skip = false)\n {\n const next_view = this.get(scene_name);\n const transition_view = this.get('transition');\n\n transition_view.set_next_view(next_view);\n this.go_to_view(transition_view.name, change_url, skip);\n }\n\n register_view(view)\n {\n this.views.push(view);\n }\n\n has_view(view_name)\n {\n for (let i = 0; i < this.views.length; i++)\n {\n if (this.views[i].name === view_name)\n {\n return true;\n }\n }\n return false;\n }\n\n set_view(view_name)\n {\n const view = this.get(view_name);\n\n TransitionManager.set_state(view);\n }\n\n set_browser_title_suffix(title_suffix)\n {\n this.browser_title_suffix = title_suffix;\n }\n\n get_current_view()\n {\n return TransitionManager.get_current_state();\n }\n\n get_view_by_name(view_name)\n {\n console.warn('DEPRECATED. Use ViewManager.get instead');\n this.get(view_name);\n }\n\n get(view_name)\n {\n for (let i = 0; i < this.views.length; i++)\n {\n if (this.views[i].name === view_name)\n {\n return this.views[i];\n }\n }\n console.error('[ViewManager.get] no view found for: ', view_name);\n return undefined;\n }\n\n get_by_url(url)\n {\n for (let i = 0; i < this.views.length; i++)\n {\n if (this.views[i].url === url)\n {\n return this.views[i];\n }\n }\n console.error('[ViewManager.get_by_url] no view found for: ', url);\n return undefined;\n }\n\n __change_browser_url(url)\n {\n window.history.pushState('', '', url);\n }\n\n __change_browser_title(name)\n {\n const title = this.__capitalize(name);\n\n document.title = title ? `${title} | ${this.browser_title_suffix}` : this.browser_title_suffix;\n }\n\n __set_views_opacities()\n {\n for (let i = 0; i < this.views.length; i++)\n {\n this.views[i].set_opacity(TransitionManager.current_state_data);\n }\n }\n\n __capitalize(string)\n {\n let aux_string = string.toUpperCase().replace('/', '');\n aux_string = this.__snake_to_whitespace(aux_string);\n\n return aux_string;\n }\n\n __snake_to_whitespace(string)\n {\n return string.replace(\n /([-_][A-Z])/g,\n (group) => group\n .replace('-', ' ')\n .replace('_', ' ')\n );\n }\n}\n\nconst view_manager = new ViewManager();\nexport { view_manager as ViewManager };\n","// @ts-check\nimport { BaseApplication } from './BaseApplication';\nimport { Debug } from './Debug';\nimport { Time } from './Time';\nimport { TransitionManager } from './view_components/TransitionManager';\nimport { ViewComponentManager } from './view_components/ViewComponentManager';\nimport { ViewManager } from './view_components/ViewManager';\nimport { Graphics, KeyboardInput } from './index'; // eslint-disable-line no-unused-vars\n\nclass RenderLoop\n{\n /**\n * @param {BaseApplication} target_application\n * @param {Graphics} graphics\n */\n constructor(target_application, graphics, input)\n {\n target_application = target_application || new BaseApplication();\n\n this.target_application = target_application;\n this.graphics = graphics;\n this.input = input;\n\n this.is_running = false;\n this.frames_passed = 0;\n\n this.time_accumulator = 0;\n }\n\n /**\n * @param {number} elapsed_time\n */\n update(elapsed_time)\n {\n if (!this.is_running)\n {\n return;\n }\n Time.__update(elapsed_time);\n\n // ###### START CYCLE ######\n if (this.frames_passed === 1)\n {\n this.target_application.on_post_start();\n }\n\n this.input.update();\n\n this.time_accumulator += Time.delta_time;\n\n this.target_application.before_update();\n TransitionManager.before_update();\n\n while (this.time_accumulator > Time.fixed_delta_time)\n {\n this.target_application.fixed_update();\n TransitionManager.fixed_update();\n\n this.time_accumulator -= Time.fixed_delta_time;\n }\n Time.__set_frame_interpolation(this.time_accumulator / Time.fixed_delta_time);\n\n this.target_application.update();\n\n TransitionManager.update();\n ViewManager.update();\n ViewComponentManager.update();\n\n this.target_application.on_pre_render();\n\n this.graphics.update(); // render scene\n this.target_application.on_post_render();\n\n Debug.render(this.graphics); // render debug layer\n\n // ###### END CYCLE #######\n this.target_application.on_frame_end();\n this.frames_passed++;\n\n this.input.clear();\n Debug.clear();\n }\n\n start()\n {\n if (this.is_running) return; // sanity check\n\n if (this.frames_passed === 0)\n {\n this.target_application.on_enter();\n }\n\n this.is_running = true;\n\n this.graphics._renderer.setAnimationLoop(this.update.bind(this));\n }\n\n stop()\n {\n if (this.is_running === false) return; // sanity check\n\n this.is_running = false;\n this.target_application.on_exit();\n\n this.graphics._renderer.setAnimationLoop(null);\n }\n\n /**\n * @param {BaseApplication} new_state\n */\n set_state(new_state)\n {\n this.target_application.on_exit(this);\n this.target_application = new_state;\n this.target_application.on_enter(this);\n }\n\n dispose()\n {\n this.stop();\n this.frames_passed = 0;\n }\n}\n\nexport { RenderLoop };\n","import { RenderLoop } from './RenderLoop'; // eslint-disable-line no-unused-vars\n\n// @ts-check\nclass BaseApplication\n{\n on_post_start()\n {}\n\n /**\n * @param {RenderLoop} [loop]\n */\n on_enter(loop) // eslint-disable-line no-unused-vars\n {}\n\n /**\n * @param {RenderLoop} [loop]\n */\n on_exit(loop) // eslint-disable-line no-unused-vars\n {}\n\n before_update()\n {}\n\n update()\n {}\n\n fixed_update()\n {}\n\n on_post_render()\n {}\n\n on_pre_render()\n {}\n\n on_frame_end()\n {}\n}\n\nexport { BaseApplication };\n","import { BlitMaterial } from './BlitMaterial';\n\nimport frag from '../shaders/add/add.frag';\n\nclass AddMaterial extends BlitMaterial\n{\n constructor(use_half_float = false)\n {\n super(frag);\n this.defines.USE_LINEAR_COLOR_SPACE = use_half_float;\n this.uniforms._SecondTex = { value: undefined };\n }\n\n set_add_texture(tex)\n {\n this.uniforms._SecondTex.value = tex;\n }\n}\n\nexport { AddMaterial };\n","import { BlitMaterial } from './BlitMaterial';\n\nimport frag from '../shaders/gaussian_blur/unreal_bloom_compose.frag';\n\nimport { Color } from 'three';\nclass UnrealBloomComposeMaterial extends BlitMaterial\n{\n constructor(nMips, use_linear_color_space = false)\n {\n super(frag, undefined, {\n NUM_MIPS: nMips\n });\n this.uniforms._MainTex = { value: undefined };\n this.uniforms._BlurredTex = { value: undefined };\n this.uniforms._BloomStrength = { value: 1 };\n\n this.uniforms.blurTexture1 = { value: null };\n this.uniforms.blurTexture2 = { value: null };\n this.uniforms.blurTexture3 = { value: null };\n this.uniforms.blurTexture4 = { value: null };\n this.uniforms.blurTexture5 = { value: null };\n\n this.uniforms.bloomStrength = { value: 1.0 };\n this.uniforms.bloomFactors = { value: [1.0, 0.8, 0.6, 0.4, 0.2] };\n this.uniforms.bloomRadius = { value: 1.0 };\n\n this.defines.USE_LINEAR_COLOR_SPACE = use_linear_color_space;\n const bloomTintColors = [\n new Color('#FFFFFF'),\n new Color('#FFFFFF'),\n new Color('#FFFFFF'),\n new Color('#FFFFFF'),\n new Color('#FFFFFF')\n ];\n\n this.uniforms.bloomTintColors = { value: bloomTintColors };\n }\n\n set_RT_0(rt)\n {\n this.uniforms.blurTexture1.value = rt;\n }\n\n set_RT_1(rt)\n {\n this.uniforms.blurTexture2.value = rt;\n }\n\n set_RT_2(rt)\n {\n this.uniforms.blurTexture3.value = rt;\n }\n\n set_RT_3(rt)\n {\n this.uniforms.blurTexture4.value = rt;\n }\n\n set_RT_4(rt)\n {\n this.uniforms.blurTexture5.value = rt;\n }\n\n set_bloom_strength(value)\n {\n this.uniforms.bloomStrength.value = value;\n }\n\n set_bloom_radius(value)\n {\n this.uniforms.bloomRadius.value = value;\n }\n\n set_tint_color_0(col_string)\n {\n this.uniforms.bloomTintColors.value[0].set(col_string);\n }\n\n set_tint_color_1(col_string)\n {\n this.uniforms.bloomTintColors.value[1].set(col_string);\n }\n\n set_tint_color_2(col_string)\n {\n this.uniforms.bloomTintColors.value[2].set(col_string);\n }\n\n set_tint_color_3(col_string)\n {\n this.uniforms.bloomTintColors.value[3].set(col_string);\n }\n\n set_tint_color_4(col_string)\n {\n this.uniforms.bloomTintColors.value[4].set(col_string);\n }\n}\n\nexport { UnrealBloomComposeMaterial };\n","\r\nexport class AbstractLoader\r\n{\r\n constructor(resource_id, url, size = 1)\r\n {\r\n this.resource_id = resource_id;\r\n this.url = url;\r\n this.loaded_bytes = 0;\r\n this.total_bytes = size;\r\n\r\n this.has_finished = false;\r\n this.has_error = false;\r\n this.error_message = 'none';\r\n }\r\n\r\n __update_downloaded_bytes(loaded, total)\r\n {\r\n loaded = this.is_number(loaded) ? loaded : 1;\r\n total = this.is_number(total) ? total : 1;\r\n\r\n this.loaded_bytes = loaded;\r\n\r\n if (total > 0)\r\n {\r\n this.total_bytes = total;\r\n }\r\n\r\n if (this.loaded_bytes > this.total_bytes)\r\n {\r\n console.warn('Total bytes is smaller than loaded ones. Please set total bytes by hand to:', this.url);\r\n }\r\n }\r\n\r\n __loading_ended()\r\n {\r\n this.has_finished = true;\r\n }\r\n\r\n __set_error(message)\r\n {\r\n this.has_error = true;\r\n this.error_message = message;\r\n }\r\n\r\n print_error()\r\n {\r\n console.error('Error while loading ' + this.resource_id + '\\n\\t path: ' + this.url + '\\n\\t\\t' + this.error_message);\r\n }\r\n\r\n load(resource_container)\r\n {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n const cache = 'default';\r\n\r\n fetch(this.url, {\r\n method: 'GET', // *GET, POST, PUT, DELETE, etc.\r\n mode: 'cors', // no-cors, *cors, same-origin\r\n cache: cache, // *default, no-cache, reload, force-cache, only-if-cached\r\n credentials: 'same-origin', // include, *same-origin, omit\r\n redirect: 'follow' // manual, *follow, error\r\n })\r\n .then(this.on_progress.bind(this, resource_container))\r\n .catch(this.__on_error.bind(this));\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n }\r\n\r\n async on_progress(resource_container, response)\r\n {\r\n const response_clone = response.clone();\r\n const reader = response.body.getReader();\r\n\r\n // Step 2: get total length\r\n const contentLength = +response.headers.get('Content-Length');\r\n\r\n // Step 3: read the data\r\n let receivedLength = 0; // received that many bytes at the moment\r\n\r\n while (true)\r\n {\r\n const { done, value } = await reader.read();\r\n\r\n if (done)\r\n {\r\n break;\r\n }\r\n\r\n receivedLength += value.length;\r\n\r\n this.__update_downloaded_bytes(receivedLength, contentLength);\r\n // console.log(`Received ${receivedLength} of ${contentLength}`);\r\n }\r\n\r\n if (response.ok)\r\n {\r\n this.on_preloaded_finished(resource_container, response_clone);\r\n }\r\n else\r\n {\r\n this.__set_error(`${response.status}: ${response.statusText}`);\r\n this.__loading_ended();\r\n }\r\n }\r\n\r\n on_preloaded_finished(resource_container, response)\r\n {\r\n }\r\n\r\n __on_error(data)\r\n {\r\n console.error(data);\r\n }\r\n\r\n is_int(n)\r\n {\r\n return Number(n) === n && n % 1 === 0;\r\n }\r\n\r\n is_float(n)\r\n {\r\n return Number(n) === n && n % 1 !== 0;\r\n }\r\n\r\n is_number(n)\r\n {\r\n return this.is_int(n) || this.is_float(n);\r\n }\r\n}\r\n","// @ts-check\nimport { AudioListener, Audio as TAudio } from 'three'; // eslint-disable-line no-unused-vars\nimport { PositionalAudio as TPositionalAudio } from 'three';\n\nclass AudioClip\n{\n /**\n * @param {AudioBuffer} buffer\n * @param {boolean} [loop]\n * @param {number} [volume]\n * @param {boolean} [positional]\n */\n constructor(buffer, loop = true, volume = 1, positional = false)\n {\n this.buffer = buffer;\n this.loop = loop;\n this.volume = volume;\n this.positional = positional;\n\n this.audio = undefined;\n }\n\n /**\n * @param {AudioListener} audio_listener\n */\n init(audio_listener)\n {\n if (this.positional)\n {\n this.audio = new TPositionalAudio(audio_listener);\n }\n else\n {\n this.audio = new TAudio(audio_listener);\n }\n\n this.audio.setBuffer(this.buffer);\n this.audio.setLoop(this.loop);\n\n // This prevents undesired volume at the beginning of playing\n this.audio.gain.gain.value = 0;\n\n this.audio.setVolume(this.loop ? 0 : this.volume);\n }\n\n play()\n {\n this.audio.play();\n }\n\n pause()\n {\n this.audio.pause();\n }\n\n stop()\n {\n this.audio.stop();\n }\n\n get is_playing()\n {\n return this.audio.isPlaying;\n }\n}\n\nexport { AudioClip };\n","import { AudioContext } from 'three';\r\n\r\nimport { AudioClip } from '../components/AudioClip';\r\nimport { AbstractLoader } from './AbstractLoader';\r\n\r\nclass AudioLoader extends AbstractLoader\r\n{\r\n constructor(resource_id, url, loop = true, volume = 0, size, positional = false)\r\n {\r\n super(resource_id, url, size);\r\n this.loop = loop;\r\n this.volume = volume;\r\n this.positional = positional;\r\n }\r\n\r\n on_preloaded_finished(resource_container)\r\n {\r\n // if (!window.user_interaction_for_audio)\r\n // {\r\n // setTimeout(this.on_preloaded_finished.bind(this, resource_container), 100);\r\n // }\r\n // else\r\n // {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n this.instantiate_audio(resource_container);\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n // }\r\n }\r\n\r\n instantiate_audio(resource_container)\r\n {\r\n const context = AudioContext.getContext();\r\n\r\n const buffer = context.createBuffer(2, 22050, 44100);\r\n\r\n fetch(this.url).then(r => r.blob()).then((response) =>\r\n {\r\n if (response.arrayBuffer)\r\n {\r\n response.arrayBuffer().then((array_buffer) =>\r\n {\r\n context.decodeAudioData(array_buffer, (audio_buffer) =>\r\n {\r\n resource_container.set_resource(\r\n this.resource_id,\r\n this.url,\r\n new AudioClip(audio_buffer, this.loop, this.volume, this.positional)\r\n );\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n });\r\n });\r\n }\r\n else\r\n {\r\n resource_container.set_resource(\r\n this.resource_id,\r\n this.url,\r\n new AudioClip(buffer, this.loop, this.volume, this.positional)\r\n );\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport { AudioLoader };\r\n","// @ts-check\nimport { Object3D, Texture, } from 'three'; // eslint-disable-line\n\n/**\n * @typedef {Object3D | Texture} Resource\n */\n\nclass ResourceContainer\n{\n init()\n {\n /** @type {Record<string, Resource>} */\n this.resources = {};\n\n /** @type {Record<string, any>} */\n this.resources_by_url = {};\n }\n\n /**\n * @param {string} name\n * @param {string} url\n * @param {Resource} resource\n */\n set_resource(name, url, resource)\n {\n const urls = Object.keys(this.resources_by_url);\n\n if (urls.includes(url))\n {\n this.resources[name] = this.resources_by_url[url];\n }\n else\n {\n this.resources[name] = resource;\n this.resources_by_url[url] = resource;\n }\n }\n\n /**\n * @param {string} name\n */\n get_resource(name)\n {\n return this.resources[name];\n }\n\n /**\n * @param {string} name\n */\n get(name)\n {\n return this.resources[name];\n }\n}\n\nconst resource_container = new ResourceContainer();\nexport { resource_container as ResourceContainer };\n","// @ts-check\nimport { ResourceContainer } from '../ResourceContainer';\n\nclass AsyncAbstractLoader\n{\n /**\n * @param {string} name\n * @param {any[]} assets\n * @param {Worker} worker\n */\n constructor(name, assets, worker)\n {\n this.resource_container = ResourceContainer;\n this.assets = assets;\n this.name = name;\n\n this.worker = worker;\n\n this.bound_on_message = this.on_message.bind(this);\n\n this.__setup_worker();\n\n this.assets_loaders = this.__setup_loaders();\n }\n\n load()\n {\n this.worker.postMessage({ type: 'load', loader_name: this.name });\n }\n\n is_loaded()\n {\n for (let i = 0; i < this.assets_loaders.length; i++)\n {\n const asset_loader = this.assets_loaders[i];\n\n if (!asset_loader.has_finished)\n {\n return false;\n }\n else\n {\n if (asset_loader.has_error)\n {\n // Restore original url so the error message make more sense\n asset_loader.url = asset_loader.original_url;\n\n asset_loader.print_error();\n }\n }\n }\n\n return true;\n }\n\n get_progress()\n {\n return this.__get_loaded_bytes() / this.__get_total_bytes();\n }\n\n __get_loaded_bytes()\n {\n let loaded_bytes = 1;\n\n for (let i = 0; i < this.assets_loaders.length; i++)\n {\n loaded_bytes += this.assets_loaders[i].loaded_bytes;\n }\n\n return loaded_bytes;\n }\n\n __get_total_bytes()\n {\n let total_bytes = 1;\n\n for (let i = 0; i < this.assets_loaders.length; i++)\n {\n total_bytes += this.assets_loaders[i].total_bytes;\n }\n\n return total_bytes;\n }\n\n get_assets_names()\n {\n const names = [];\n\n for (let i = 0; i < this.assets.length; i++)\n {\n const asset = this.assets[i];\n\n names.push(asset.name);\n }\n\n return names;\n }\n\n static create_worker()\n {\n const worker = new Worker(\n new URL('./assets_loader/AsyncAssetsLoaderWorker.js', import.meta.url),\n { name: 'OHZI - AssetLoader', type: 'module' });\n\n return worker;\n }\n\n __setup_worker()\n {\n this.worker.addEventListener('message', this.bound_on_message);\n\n this.worker.postMessage({ type: 'assets', loader_name: this.name, data: this.assets });\n }\n\n /**\n * @param {MessageEvent} e\n */\n on_message(e)\n {\n const message = e.data;\n\n switch (message.type)\n {\n case `asset_loaded_${this.name}`:\n this.__on_assets_loaded(message.data);\n break;\n }\n }\n\n /**\n * @param {any} resources\n */\n __on_assets_loaded(resources)\n {\n this.worker.removeEventListener('message', this.bound_on_message);\n\n for (let i = 0; i < this.assets_loaders.length; i++)\n {\n const asset_loader = this.assets_loaders[i];\n\n // Save original url to show in a possible error\n asset_loader.original_url = asset_loader.url;\n\n asset_loader.url = resources[asset_loader.resource_id];\n\n asset_loader.on_preloaded_finished(this.resource_container);\n }\n }\n\n /**\n * @returns {any[]}\n */\n __setup_loaders()\n {\n console.warn('Not implemented');\n return [];\n }\n}\n\nexport { AsyncAbstractLoader };\n","import { AudioLoader } from '../resource_loader/AudioLoader';\nimport { AsyncAbstractLoader } from './AsyncAbstractLoader';\n\nclass AsyncAudiosLoader extends AsyncAbstractLoader\n{\n constructor(scene_name, assets, worker)\n {\n super(scene_name, assets, worker);\n }\n\n // Called from parent\n __setup_loaders()\n {\n const loaders = [];\n\n for (let i = 0; i < this.assets.length; i++)\n {\n const asset_data = this.assets[i];\n\n loaders.push(new AudioLoader(\n asset_data.name,\n asset_data.url,\n asset_data.loop,\n asset_data.volume,\n asset_data.size,\n asset_data.positional\n ));\n }\n\n return loaders;\n }\n}\n\nexport { AsyncAudiosLoader };\n","import { AbstractLoader } from './AbstractLoader';\r\n\r\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';\r\n\r\nclass GLTFDRACOLoader extends AbstractLoader\r\n{\r\n constructor(resource_id, url, loader, size)\r\n {\r\n super(resource_id, url, size);\r\n this.loader = new GLTFLoader();\r\n\r\n this.loader.setDRACOLoader(loader);\r\n }\r\n\r\n on_preloaded_finished(resource_container)\r\n {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n this.loader.load(this.url, (gltf) =>\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, gltf);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n },\r\n (xhr) =>\r\n {\r\n // if (xhr)\r\n // {\r\n // let total = xhr.total || this.total_bytes;\r\n // this.__update_downloaded_bytes(xhr.loaded, total);\r\n // }\r\n },\r\n (msg) =>\r\n {\r\n this.__set_error(msg + '\\n\\n\\t If the error says something about unexpected token < in JSON then the probably the problem is related to the file not being found. Check the name and path of the resource');\r\n this.__loading_ended();\r\n });\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n }\r\n}\r\n\r\nexport { GLTFDRACOLoader };\r\n","import { AbstractLoader } from './AbstractLoader';\r\n\r\nimport { GLTFLoader as TGLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';\r\n\r\nclass GLTFLoader extends AbstractLoader\r\n{\r\n constructor(resource_id, url, size)\r\n {\r\n super(resource_id, url, size);\r\n this.loader = new TGLTFLoader();\r\n }\r\n\r\n on_preloaded_finished(resource_container)\r\n {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n this.loader.load(this.url, (gltf) =>\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, gltf);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n },\r\n (xhr) =>\r\n {\r\n // if (xhr)\r\n // {\r\n // let total = xhr.total || this.total_bytes;\r\n\r\n // this.__update_downloaded_bytes(xhr.loaded, total);\r\n // }\r\n },\r\n (msg) =>\r\n {\r\n this.__set_error(msg + '\\n\\n\\t If the error says something about unexpected token < in JSON then the probably the problem is related to the file not being found. Check the name and path of the resource');\r\n this.__loading_ended();\r\n });\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n }\r\n}\r\n\r\nexport { GLTFLoader };\r\n","// @ts-check\nimport { GLTFDRACOLoader } from '../resource_loader/GLTFDRACOLoader';\nimport { GLTFLoader } from '../resource_loader/GLTFLoader';\nimport { ResourceContainer } from '../ResourceContainer';\nimport { AsyncAbstractLoader } from './AsyncAbstractLoader';\n\nclass AsyncObjectsLoader extends AsyncAbstractLoader\n{\n /**\n * @param {string} scene_name\n * @param {any[]} assets\n * @param {Worker} worker\n */\n constructor(scene_name, assets, worker)\n {\n super(scene_name, assets, worker);\n }\n\n // Called from parent\n __setup_loaders()\n {\n const loaders = [];\n\n for (let i = 0; i < this.assets.length; i++)\n {\n const asset_data = this.assets[i];\n\n if (asset_data.draco)\n {\n const draco_loader = ResourceContainer.get('draco_loader');\n\n loaders.push(new GLTFDRACOLoader(asset_data.name, asset_data.url, draco_loader, asset_data.size));\n }\n else\n {\n loaders.push(new GLTFLoader(asset_data.name, asset_data.url, asset_data.size));\n }\n }\n\n return loaders;\n }\n}\n\nexport { AsyncObjectsLoader };\n","// @ts-check\nclass Browser\n{\n async init()\n {\n this.browser_name = '';\n this.agent = window.navigator.userAgent.toLowerCase();\n\n this.has_web_xr_support = 'xr' in navigator;\n this.is_vr = this.has_web_xr_support && await navigator.xr.isSessionSupported('immersive-vr');\n\n switch (true)\n {\n case this.agent.indexOf('edge') > -1:\n this.browser_name = 'edge_ie';\n break;\n case this.agent.indexOf('edg') > -1:\n this.browser_name = 'edge_chromium';\n break;\n // @ts-ignore\n case this.agent.indexOf('opr') > -1 && !!window.opr:\n this.browser_name = 'opera';\n break;\n // @ts-ignore\n case this.agent.indexOf('chrome') > -1 && !!window.chrome:\n this.browser_name = 'chrome';\n break;\n case this.agent.indexOf('trident') > -1:\n this.browser_name = 'iexplorer';\n break;\n case this.agent.indexOf('firefox') > -1:\n this.browser_name = 'firefox';\n break;\n case this.agent.indexOf('safari') > -1:\n this.browser_name = 'safari';\n break;\n default:\n this.browser_name = 'other';\n break;\n }\n\n this.version = this.get_version();\n }\n\n get name()\n {\n return this.browser_name;\n }\n\n get is_safari()\n {\n return this.browser_name === 'safari';\n }\n\n get is_chrome()\n {\n return this.browser_name === 'chrome';\n }\n\n get is_firefox()\n {\n return this.browser_name === 'firefox';\n }\n\n get is_edge()\n {\n return this.browser_name === 'edge_ie';\n }\n\n get is_edge_chromium()\n {\n return this.browser_name === 'edge_chromium';\n }\n\n get has_webm()\n {\n return !!(this.is_chrome || this.is_firefox || this.is_edge_chromium);\n }\n\n get has_hvec()\n {\n return this.is_safari;\n }\n\n get preferred_video_extension()\n {\n return this.has_webm ? 'webm' : this.has_hvec ? 'hvec.mp4' : 'mp4';\n }\n\n get_version()\n {\n const ua = navigator.userAgent;\n let tem = [];\n let version = '0';\n\n let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n\n if (/trident/i.test(M[1]))\n {\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n version = 'IE ' + (tem[1] || '');\n }\n if (M[1] === 'Chrome')\n {\n tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\n if (tem != null) version = tem.slice(1).join(' ').replace('OPR', 'Opera');\n }\n\n M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\n if ((tem = ua.match(/version\\/(\\d+(\\.\\d+)?)/i)) != null) M.splice(1, 1, tem[1]);\n\n version = M.join(' ');\n\n return Number(version.split(' ')[1]);\n }\n}\n\nconst browser = new Browser();\nexport { browser as Browser };\n","import { Browser } from '../Browser';\r\nimport { AbstractLoader } from './AbstractLoader';\r\n\r\nimport { NoColorSpace, SRGBColorSpace, Texture } from 'three';\r\n\r\nexport class AsyncTextureLoader extends AbstractLoader\r\n{\r\n constructor(resource_id, url, size, flipY = true, premultiplyAlpha = false, colorSpaceConversion = true)\r\n {\r\n super(resource_id, url, size);\r\n\r\n this.original_url = '';\r\n\r\n this.colorSpaceConversion = colorSpaceConversion;\r\n this.premultiplyAlpha = premultiplyAlpha;\r\n this.flipY = flipY;\r\n }\r\n\r\n on_preloaded_finished(resource_container)\r\n {\r\n if (Browser.is_safari) // && Browser.version < 15\r\n {\r\n this.load_with_old_method(resource_container);\r\n }\r\n else\r\n {\r\n this.load_with_new_method(resource_container);\r\n }\r\n }\r\n\r\n load_with_old_method(resource_container)\r\n {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n const texture = new Texture();\r\n const image = new Image();\r\n\r\n image.src = this.url;\r\n\r\n image.onload = () =>\r\n {\r\n texture.image = image;\r\n texture.flipY = this.flipY;\r\n texture.premultiplyAlpha = this.premultiplyAlpha;\r\n texture.colorSpace = this.colorSpaceConversion ? SRGBColorSpace : NoColorSpace;\r\n texture.needsUpdate = true;\r\n\r\n resource_container.set_resource(this.resource_id, this.url, texture);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n };\r\n\r\n image.onerror = () =>\r\n {\r\n console.error('The source image could not be decoded.', this.original_url);\r\n };\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n }\r\n\r\n load_with_new_method(resource_container)\r\n {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n const fetchOptions = {};\r\n fetchOptions.credentials = 'same-origin';\r\n // fetchOptions.headers = this.requestHeader;\r\n\r\n fetch(this.url, fetchOptions).then((res) =>\r\n {\r\n return res.blob();\r\n }).then((blob) =>\r\n {\r\n return createImageBitmap(blob, {\r\n colorSpaceConversion: this.colorSpaceConversion ? 'default' : 'none',\r\n imageOrientation: this.flipY ? 'flipY' : 'from-image',\r\n premultiplyAlpha: this.premultiplyAlpha ? 'premultiply' : 'none'\r\n });\r\n }).then((imageBitmap) =>\r\n {\r\n const texture = new Texture(imageBitmap);\r\n texture.flipY = this.flipY;\r\n texture.premultiplyAlpha = this.premultiplyAlpha;\r\n texture.colorSpace = this.colorSpaceConversion ? SRGBColorSpace : NoColorSpace;\r\n texture.needsUpdate = true;\r\n\r\n resource_container.set_resource(this.resource_id, this.url, texture);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }).catch((e) =>\r\n {\r\n console.error(e, this.original_url);\r\n });\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n }\r\n}\r\n","import { AbstractLoader } from './AbstractLoader';\n\n// import { sRGBEncoding } from 'three';\n\nclass BasisLoader extends AbstractLoader\n{\n constructor(resource_id, url, loader, size)\n {\n super(resource_id, url, size);\n\n this.loader = loader;\n }\n\n on_preloaded_finished(resource_container)\n {\n if (resource_container.resources_by_url[this.url] === undefined)\n {\n this.loader.load(this.url, (basis) =>\n {\n // basis.encoding = sRGBEncoding;\n\n resource_container.set_resource(this.resource_id, this.url, basis);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n },\n (xhr) =>\n {\n // if (xhr)\n // {\n // let total = xhr.total || this.total_bytes;\n // this.__update_downloaded_bytes(xhr.loaded, total);\n // }\n },\n (msg) =>\n {\n this.__set_error(msg + '\\n\\n\\t If the error says something about unexpected token < in JSON then the probably the problem is related to the file not being found. Check the name and path of the resource');\n this.__loading_ended();\n });\n }\n else\n {\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n }\n }\n}\n\nexport { BasisLoader };\n","import { AbstractLoader } from './AbstractLoader';\r\n\r\nimport { CubeTextureLoader } from 'three';\r\n\r\nclass CubemapLoader extends AbstractLoader\r\n{\r\n constructor(resource_id, url, extension, size)\r\n {\r\n super(resource_id, url, size);\r\n this.loader = new CubeTextureLoader();\r\n this.loader.setPath(url + '/');\r\n this.urls = [\r\n `px.${extension}`,\r\n `nx.${extension}`,\r\n `py.${extension}`,\r\n `ny.${extension}`,\r\n `pz.${extension}`,\r\n `nz.${extension}`\r\n ];\r\n }\r\n\r\n on_preloaded_finished(resource_container)\r\n {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n this.loader.load(this.urls, (image) =>\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, image);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n },\r\n (xhr) =>\r\n {\r\n // if (xhr)\r\n // {\r\n // let total = xhr.total || this.total_bytes;\r\n // this.__update_downloaded_bytes(xhr.loaded, total);\r\n // }\r\n },\r\n (error) =>\r\n {\r\n this.__set_error('Image could not be loaded. Maybe wrong name or path, I don\\'t know' + '¯\\\\_(ツ)_/¯', error);\r\n this.__loading_ended();\r\n });\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n }\r\n}\r\n\r\nexport { CubemapLoader };\r\n","import { AbstractLoader } from './AbstractLoader';\r\n\r\nimport { HDRCubeTextureLoader as THDRCubeTextureLoader } from 'three/examples/jsm/loaders/HDRCubeTextureLoader.js';\r\n\r\nclass HDRCubeTextureLoader extends AbstractLoader\r\n{\r\n constructor(resource_id, url, extension, size)\r\n {\r\n super(resource_id, url, size);\r\n this.loader = new THDRCubeTextureLoader();\r\n this.loader.setPath(url + '/');\r\n // this.loader.setDataType(UnsignedByteType);\r\n this.urls = [\r\n `px.${extension}`,\r\n `nx.${extension}`,\r\n `py.${extension}`,\r\n `ny.${extension}`,\r\n `pz.${extension}`,\r\n `nz.${extension}`\r\n ];\r\n }\r\n\r\n on_preloaded_finished(resource_container)\r\n {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n this.loader.load(this.urls, (hdr) =>\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, hdr);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n },\r\n (xhr) =>\r\n {\r\n // if (xhr)\r\n // {\r\n // let total = xhr.total || this.total_bytes;\r\n // this.__update_downloaded_bytes(xhr.loaded, total);\r\n // }\r\n },\r\n (msg) =>\r\n {\r\n this.__set_error(msg + '\\n\\n\\t If the error says something about unexpected token < in JSON then the probably the problem is related to the file not being found. Check the name and path of the resource');\r\n this.__loading_ended();\r\n });\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n }\r\n}\r\n\r\nexport { HDRCubeTextureLoader };\r\n","import { AbstractLoader } from './AbstractLoader';\n\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';\n\nclass RGBETextureLoader extends AbstractLoader\n{\n constructor(resource_id, url, size)\n {\n super(resource_id, url, size);\n this.loader = new RGBELoader();\n }\n\n on_preloaded_finished(resource_container)\n {\n if (resource_container.resources_by_url[this.url] === undefined)\n {\n this.loader.load(this.url, (hdr) =>\n {\n resource_container.set_resource(this.resource_id, this.url, hdr);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n },\n (xhr) =>\n {\n // if (xhr)\n // {\n // let total = xhr.total || this.total_bytes;\n // this.__update_downloaded_bytes(xhr.loaded, total);\n // }\n },\n (msg) =>\n {\n this.__set_error(msg + '\\n\\n\\t If the error says something about unexpected token < in JSON then the probably the problem is related to the file not being found. Check the name and path of the resource');\n this.__loading_ended();\n });\n }\n else\n {\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n }\n }\n}\n\nexport { RGBETextureLoader };\n","import { AsyncTextureLoader } from '../resource_loader/AsyncTextureLoader';\nimport { BasisLoader } from '../resource_loader/BasisLoader';\nimport { CubemapLoader } from '../resource_loader/CubemapLoader';\nimport { HDRCubeTextureLoader } from '../resource_loader/HDRCubeTextureLoader';\nimport { RGBETextureLoader } from '../resource_loader/RGBETextureLoader';\nimport { ResourceContainer } from '../ResourceContainer';\nimport { AsyncAbstractLoader } from './AsyncAbstractLoader';\n\nclass AsyncTexturesLoader extends AsyncAbstractLoader\n{\n constructor(scene_name, assets, worker)\n {\n super(scene_name, assets, worker);\n }\n\n // Called from parent\n __setup_loaders()\n {\n const loaders = [];\n\n for (let i = 0; i < this.assets.length; i++)\n {\n const asset_data = this.assets[i];\n\n switch (asset_data.kind)\n {\n case 'regular':\n loaders.push(new AsyncTextureLoader(\n asset_data.name,\n asset_data.url,\n asset_data.size,\n asset_data.flipY,\n asset_data.premultiplyAlpha,\n asset_data.colorSpaceConversion\n ));\n\n break;\n case 'basis':\n loaders.push(new BasisLoader(\n asset_data.name,\n asset_data.url,\n ResourceContainer.get('basis_loader'),\n asset_data.size\n ));\n\n break;\n case 'hdr':\n loaders.push(new RGBETextureLoader(\n asset_data.name,\n asset_data.url,\n asset_data.size\n ));\n\n break;\n case 'cubemap':\n loaders.push(new CubemapLoader(\n asset_data.name,\n asset_data.url,\n asset_data.extension,\n asset_data.size\n ));\n break;\n case 'cubemap_hdr':\n loaders.push(new HDRCubeTextureLoader(\n asset_data.name,\n asset_data.url,\n asset_data.extension,\n asset_data.size\n ));\n\n break;\n default:\n break;\n }\n }\n\n return loaders;\n }\n}\n\nexport { AsyncTexturesLoader };\n","class CompilatorManager\n{\n constructor(compilators)\n {\n this.compilators = compilators;\n this.first_update = true;\n\n this.index = 0;\n }\n\n update()\n {\n if (!this.is_finished())\n {\n if (this.compilators[this.index].finished)\n {\n this.index++;\n this.first_update = true;\n }\n else\n {\n if (this.first_update)\n {\n this.compilators[this.index].start();\n this.first_update = false;\n }\n else\n {\n this.compilators[this.index].update();\n }\n }\n }\n }\n\n is_finished()\n {\n return this.index === this.compilators.length;\n }\n}\n\nexport { CompilatorManager };\n","import { ResourceContainer } from 'ohzi-core';\n\nimport { AsyncAudiosLoader } from '../../loaders/AsyncAudiosLoader';\nimport { AsyncObjectsLoader } from '../../loaders/AsyncObjectsLoader';\nimport { AsyncTexturesLoader } from '../../loaders/AsyncTexturesLoader';\nimport { CompilatorManager } from './CompilatorManager';\n\nexport class LoadingState\n{\n constructor(scene, { SceneCompilator, TexturesCompilator, AudiosCompilator })\n {\n this.scene = scene;\n\n this.SceneCompilator = SceneCompilator;\n this.TexturesCompilator = TexturesCompilator;\n this.AudiosCompilator = AudiosCompilator;\n\n this.loaders = [];\n this.compilators = [];\n\n this.callback_called = false;\n }\n\n set_assets(scene_objects, scene_textures, scene_sounds, custom_loaders = [], custom_compilators = [], custom_data = [])\n {\n this.scene_objects = scene_objects;\n this.scene_textures = scene_textures;\n this.scene_sounds = scene_sounds;\n\n this.custom_loaders = custom_loaders;\n this.custom_compilators = custom_compilators;\n this.custom_data = custom_data;\n }\n\n get loading_progress()\n {\n let progress = 0;\n\n for (let i = 0; i < this.loaders.length; i++)\n {\n const loader = this.loaders[i];\n progress += loader.get_progress();\n }\n return progress / this.loaders.length;\n }\n\n load()\n {\n this.setup_loader();\n\n // TODO: improve this.\n // We call load method to one of the 3 loaders because they share the same worker.\n this.loaders[0].load();\n }\n\n on_enter()\n {\n }\n\n on_exit()\n {\n }\n\n update()\n {\n\n }\n\n setup_loader()\n {\n const compilators = [];\n\n const assets_worker = ResourceContainer.get('assets_worker');\n assets_worker.postMessage({ type: 'reset', loader_name: this.scene.name });\n\n const object_loader = new AsyncObjectsLoader(this.scene.name, this.scene_objects, assets_worker);\n this.loaders.push(object_loader);\n compilators.push(new this.SceneCompilator(this.scene));\n\n const textures_loader = new AsyncTexturesLoader(this.scene.name, this.scene_textures, assets_worker);\n this.loaders.push(textures_loader);\n compilators.push(new this.TexturesCompilator(textures_loader.get_assets_names()));\n\n const audios_loader = new AsyncAudiosLoader(this.scene.name, this.scene_sounds, assets_worker);\n this.loaders.push(audios_loader);\n compilators.push(new this.AudiosCompilator(audios_loader.get_assets_names()));\n\n for (let i = 0; i < this.custom_loaders.length; i++)\n {\n const loader = new this.custom_loaders[i](this.scene.name, this.custom_data[i], assets_worker);\n this.loaders.push(loader);\n compilators.push(new this.custom_compilators[i](loader.get_assets_names()));\n }\n\n this.compilator_manager = new CompilatorManager(compilators);\n }\n\n is_loaded()\n {\n let loaded = true;\n\n for (let i = 0; i < this.loaders.length; i++)\n {\n const loader = this.loaders[i];\n\n loaded = loaded && loader.is_loaded();\n }\n\n return loaded;\n }\n\n is_compiled()\n {\n this.compilator_manager.update();\n return this.compilator_manager.is_finished();\n }\n}\n","import { LoadingState } from './LoadingState';\n\nexport class HighQualityLoadingState extends LoadingState\n{\n on_enter()\n {\n super.on_enter();\n // this.setup_loader();\n }\n\n on_exit()\n {\n super.on_exit();\n }\n\n update()\n {\n super.update();\n\n if (this.is_loaded())\n {\n // if (this.is_compiled())\n // {\n this.scene.on_high_quality_assets_ready();\n // }\n }\n }\n}\n","import { LoadingState } from './LoadingState';\n\nexport class RegularLoadingState extends LoadingState\n{\n constructor(scene, compilators)\n {\n super(scene, compilators);\n\n this.on_assets_ready_called = false;\n }\n\n on_enter()\n {\n super.on_enter();\n // this.setup_loader();\n }\n\n on_exit()\n {\n super.on_exit();\n }\n\n update()\n {\n super.update();\n\n if (this.is_loaded())\n {\n if (!this.on_assets_ready_called)\n {\n this.scene.on_assets_ready();\n this.on_assets_ready_called = true;\n }\n\n if (this.is_compiled())\n {\n this.scene.on_assets_compiled();\n }\n }\n }\n}\n","import { Scene } from 'three';\n// import { AvatarSystem } from '../../components/avatar/AvatarSystem';\n\nimport { HighQualityLoadingState } from './loading_states/HighQualityLoadingState';\nimport { LoadingState } from './loading_states/LoadingState';\nimport { RegularLoadingState } from './loading_states/RegularLoadingState';\n\nclass AbstractScene extends Scene\n{\n constructor({ name, compilators })\n {\n super();\n\n this.name = name;\n\n this.initialized = false;\n this.is_loaded = false;\n this.is_high_loaded = false;\n\n this.loading_states = {\n regular: new RegularLoadingState(this, compilators),\n high: new HighQualityLoadingState(this, compilators)\n };\n\n this.current_loading_state = new LoadingState(this, compilators);\n // this.set_loading_state(this.loading_states.regular);\n }\n\n get loading_progress()\n {\n return this.current_loading_state.loading_progress;\n }\n\n init()\n {\n this.initialized = true;\n }\n\n load()\n {\n if (!this.initialized)\n {\n this.init();\n }\n\n this.set_loading_state(this.loading_states.regular);\n this.current_loading_state.load();\n }\n\n get_objects()\n {\n const objects = [];\n\n this.traverse(child =>\n {\n if (child.geometry)\n {\n objects.push(child);\n\n // if (child.name === 'pitch_floor')\n // {\n // objects.push(child);\n // }\n // else\n // {\n // child.visible = false;\n // }\n }\n });\n\n return objects;\n }\n\n dispose_cpu()\n {\n this.traverse(child =>\n {\n if (child.geometry)\n {\n child.geometry.attributes.position.array = new Float32Array(3);\n if (child.geometry.attributes.normal)\n {\n child.geometry.attributes.normal.array = new Float32Array(3);\n }\n if (child.geometry.attributes.uv)\n {\n child.geometry.attributes.uv.array = new Float32Array(2);\n }\n if (child.material.map)\n {\n for (let i = 0; i < child.material.map.mipmaps.length; i++)\n {\n child.material.map.mipmaps[i] = new Uint8Array(4);\n }\n }\n }\n });\n\n // AvatarSystem.component_container.component_instancer.data_texture.data = new Float32Array(4);\n\n this.initialized = false;\n }\n\n dispose()\n {\n this.traverse(child =>\n {\n if (child.material)\n {\n if (child.material.map)\n {\n child.material.map.dispose();\n }\n\n child.material.dispose();\n child.geometry.dispose();\n }\n });\n // AvatarSystem.component_container.component_instancer.data_texture.data = new Float32Array(4);\n\n this.initialized = false;\n }\n\n set_assets(scene_objects, scene_textures, scene_sounds, custom_loaders, custom_compilators, custom_data)\n {\n this.loading_states.regular.set_assets(scene_objects, scene_textures, scene_sounds, custom_loaders, custom_compilators, custom_data);\n }\n\n set_high_assets(scene_objects, scene_textures, scene_sounds, custom_loaders, custom_compilators, custom_data)\n {\n this.loading_states.high.set_assets(scene_objects, scene_textures, scene_sounds, custom_loaders, custom_compilators, custom_data);\n }\n\n set_loading_state(state)\n {\n this.current_loading_state.on_exit();\n this.current_loading_state = state;\n this.current_loading_state.on_enter();\n }\n\n // Called from transition\n update_loading_state()\n {\n if (!this.is_high_loaded)\n {\n this.current_loading_state.update();\n }\n }\n\n update()\n {\n this.update_loading_state();\n }\n\n on_assets_ready()\n {\n\n }\n\n on_assets_compiled()\n {\n this.is_loaded = true;\n\n // Load high quality assets\n this.set_loading_state(this.loading_states.high);\n this.current_loading_state.load();\n }\n\n on_high_quality_assets_ready()\n {\n this.is_high_loaded = true;\n }\n}\n\nexport { AbstractScene };\n","import { TransitionManager } from './TransitionManager';\nimport { ViewManager } from './ViewManager';\nimport { ViewState } from './ViewState';\n\nclass ApplicationView extends ViewState\n{\n constructor({ name, url, container, transition_data })\n {\n super(name);\n\n this.container = container;\n this.url = url;\n\n this.current_opacity = 0;\n\n transition_data = transition_data || {\n animation_tracks: [],\n triggers: []\n };\n\n const transitions = [\n {\n to: name,\n data: transition_data\n }\n ];\n\n ViewManager.register_view(this);\n TransitionManager.add_transitions(transitions);\n }\n\n before_enter()\n {\n this.container.classList.add('before_enter');\n this.container.classList.remove('before_exit');\n this.container.classList.remove('hidden');\n }\n\n on_enter()\n {\n this.container.classList.remove('before_enter');\n this.container.classList.remove('before_exit');\n this.container.classList.remove('hidden');\n }\n\n before_exit()\n {\n this.container.classList.add('before_exit');\n this.container.classList.remove('before_enter');\n this.container.classList.remove('hidden');\n }\n\n on_exit()\n {\n this.container.classList.add('hidden');\n this.container.classList.remove('before_enter');\n this.container.classList.remove('before_exit');\n }\n\n set_opacity(current_state_data)\n {\n const opacity = current_state_data[`${this.name}_opacity`];\n\n if (this.current_opacity > opacity || this.current_opacity < opacity)\n {\n this.current_opacity = opacity;\n\n this.container.style.opacity = this.current_opacity;\n }\n }\n}\n\nexport { ApplicationView };\n","// @ts-check\nimport { CanvasTexture } from 'three';\nimport { Vector2 } from 'three';\nimport { UVMapping } from 'three';\nimport { ClampToEdgeWrapping } from 'three';\nimport { NearestFilter } from 'three';\n\nclass CanvasDrawer\n{\n /**\n * @param {boolean} [uses_dynamic_font]\n */\n constructor(uses_dynamic_font)\n {\n this.uses_dynamic_font = !!uses_dynamic_font;\n this.__textHeight = null;\n\n this.canvas = document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d');\n }\n\n getFontHeight(fontStyle = 'Arial')\n {\n if (this.__textHeight == null || this.uses_dynamic_font)\n {\n const body = document.getElementsByTagName('body')[0];\n const dummy = document.createElement('div');\n const dummyText = document.createTextNode('MÉqgOLAKTAL');\n dummy.appendChild(dummyText);\n dummy.setAttribute('style', `font:${fontStyle};position:absolute;top:0;left:0`);\n body.appendChild(dummy);\n this.__textHeight = dummy.offsetHeight;\n body.removeChild(dummy);\n }\n return this.__textHeight;\n }\n\n /**\n * @param {string} text\n * @param {string} font\n */\n get_text_size(text, font = '24px Arial')\n {\n const size = new Vector2();\n this.ctx.font = font;\n size.x = Math.ceil(this.ctx.measureText(text).width);\n size.y = Math.ceil(this.getFontHeight(font));\n return size;\n }\n\n /**\n * @param {string} text\n * @param {any} [ctxOptions]\n */\n draw_canvas(text, ctxOptions = {})\n {\n ctxOptions.font = ctxOptions.font || '24px Arial';\n ctxOptions.font_color = ctxOptions.font_color || '#000000';\n\n this.__draw(text, ctxOptions, this.canvas, this.ctx);\n return this.canvas;\n }\n\n /**\n * @param {string} text\n * @param {any} [ctxOptions]\n */\n draw_on_texture(text, ctxOptions)\n {\n const canvas = this.draw_canvas(text, ctxOptions);\n const canvas_texture = new CanvasTexture(canvas, UVMapping,\n ClampToEdgeWrapping,\n ClampToEdgeWrapping,\n NearestFilter,\n NearestFilter);\n canvas_texture.generateMipmaps = false;\n canvas_texture.needsUpdate = true;\n\n return canvas_texture;\n }\n\n /**\n * @param {string[] | string} text\n * @param {any} [ctxOptions]\n * @param {HTMLCanvasElement} [canvas]\n * @param {CanvasRenderingContext2D} [ctx]\n */\n __draw(text, ctxOptions, canvas, ctx) // eslint-disable-line no-unused-vars\n {}\n\n /**\n * @param {CanvasRenderingContext2D} ctx\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {number | {tl:number, tr:number, br:number, bl:number}} radius\n * @param {boolean} fill\n * @param {boolean} stroke\n */\n roundRect(ctx, x, y, width, height, radius, fill, stroke)\n {\n if (typeof stroke === 'undefined')\n {\n stroke = true;\n }\n if (typeof radius === 'undefined')\n {\n radius = 5;\n }\n if (typeof radius === 'number')\n {\n radius = { tl: radius, tr: radius, br: radius, bl: radius };\n }\n else\n {\n const defaultRadius = { tl: 0, tr: 0, br: 0, bl: 0 };\n for (const side in defaultRadius)\n {\n const _side = /** @type {keyof typeof defaultRadius} */ (side);\n radius[_side] = radius[_side] || defaultRadius[_side];\n }\n }\n ctx.beginPath();\n ctx.moveTo(x + radius.tl, y);\n ctx.lineTo(x + width - radius.tr, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius.tr);\n ctx.lineTo(x + width, y + height - radius.br);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius.br, y + height);\n ctx.lineTo(x + radius.bl, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius.bl);\n ctx.lineTo(x, y + radius.tl);\n ctx.quadraticCurveTo(x, y, x + radius.tl, y);\n ctx.closePath();\n if (fill)\n {\n ctx.fill();\n }\n if (stroke)\n {\n ctx.stroke();\n }\n }\n}\n\nexport { CanvasDrawer };\n","// @ts-check\nimport { CanvasDrawer } from './CanvasDrawer';\n\nimport { Vector2 } from 'three';\n\nclass SimpleTextDrawer extends CanvasDrawer\n{\n constructor()\n {\n super();\n this.text_margin = new Vector2(2, 0);\n }\n\n /**\n * @param {string} text\n * @param {any} [ctxOptions]\n * @param {HTMLCanvasElement} [canvas]\n * @param {CanvasRenderingContext2D} [ctx]\n */\n __draw(text, ctxOptions, canvas, ctx)\n {\n ctx.font = ctxOptions.font;\n\n const text_size = this.get_text_size(text, ctxOptions.font);\n // canvas.width = Math.ceilPowerOfTwo(text_size.x+this.text_margin.x*2);\n // canvas.height = Math.ceilPowerOfTwo(text_size.y+ this.text_margin.y*2);\n canvas.width = Math.ceil(text_size.x + this.text_margin.x * 2);\n canvas.height = Math.ceil(text_size.y + this.text_margin.y * 2);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n // turn this on for debugging\n ctx.globalAlpha = 0.0;\n ctx.fillStyle = ctxOptions.font_color || '#000000';\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.globalAlpha = 1;\n\n ctx.globalAlpha = 1;\n\n ctx.font = ctxOptions.font;\n ctx.fillStyle = ctxOptions.font_color || '#000000';\n ctx.textBaseline = 'middle';\n\n ctx.textAlign = ctxOptions.textAlign || 'center';\n if (ctx.textAlign === 'center')\n {\n ctx.fillText(text, canvas.width / 2, canvas.height / 2);\n }\n else\n {\n ctx.fillText(text, 0, canvas.height / 2);\n }\n }\n}\n\nexport { SimpleTextDrawer };\n","class Idle\n{\n constructor()\n {\n }\n\n get is_animating()\n {\n return false;\n }\n\n on_enter(view)\n {\n\n }\n\n update(view)\n {\n }\n\n on_exit(view)\n {\n\n }\n}\n\nexport { Idle };\n","import { Time } from '../../Time';\nimport { Idle } from './Idle';\n\nimport { OMath } from '../../utilities/OMath';\nclass Animating\n{\n constructor()\n {\n this.t = 0;\n this.easing_function_t = 0;\n }\n\n get is_animating()\n {\n return true;\n }\n\n on_enter(animator)\n {\n }\n\n update(animator)\n {\n this.t += Time.delta_time / animator.duration;\n\n this.easing_function_t = animator.easing_function(this.t);\n this.easing_function_t = OMath.clamp(this.easing_function_t, 0, 1);\n\n animator.set_property_value(OMath.lerp(animator.from, animator.to, this.easing_function_t));\n\n if (this.easing_function_t >= 0.9999)\n {\n animator.set_property_value(animator.to);\n\n animator.set_current_state(new Idle());\n animator.finished_callback(animator);\n }\n }\n\n on_exit(view)\n {\n\n }\n}\n\nexport { Animating };\n","import { Animating } from './css_animator_states/Animating';\nimport { Idle } from './css_animator_states/Idle';\nimport { EasingFunctions } from '../utilities/EasingFunctions';\n\nclass CSSAnimator\n{\n constructor({\n element,\n css_property,\n from = 0,\n to = 1,\n duration = 1,\n value_prefix = '',\n value_suffix = '',\n easing_function = EasingFunctions.ease_in_out_cubic,\n finished_callback = () =>\n {}\n })\n {\n this.element = element;\n this.css_property = css_property;\n this.from = from;\n this.to = to;\n this.value_prefix = value_prefix;\n this.value_suffix = value_suffix;\n this.duration = duration;\n this.easing_function = easing_function;\n this.finished_callback = finished_callback;\n\n this.current_state = new Idle();\n }\n\n animate()\n {\n this.set_current_state(new Animating());\n }\n\n stop()\n {\n this.set_current_state(new Idle());\n }\n\n set_property_value(value)\n {\n this.element.style[this.css_property] = `${this.value_prefix}${value}${this.value_suffix}`;\n }\n\n update()\n {\n this.current_state.update(this);\n }\n\n get is_animating()\n {\n return this.current_state.is_animating;\n }\n\n set_current_state(state)\n {\n this.current_state.on_exit(this);\n this.current_state = state;\n this.current_state.on_enter(this);\n }\n}\n\nexport { CSSAnimator };\n","// @ts-check\nclass OS\n{\n init()\n {\n this.operating_systems = {\n ANDROID: 'android',\n IOS: 'ios',\n LINUX: 'linux',\n MAC: 'mac',\n WINDOWS: 'windows'\n };\n\n this.is_mobile = !!(navigator.userAgent.match(/(iPhone|iPod|iPad|Android|playbook|silk|BlackBerry|BB10|Windows Phone|Tizen|Bada|webOS|IEMobile|Opera Mini)/));\n this.is_ipad = !!(navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2);\n this.is_ios = !!navigator.userAgent.match(/(iPhone|iPod|iPad)/) || this.is_ipad;\n\n this.is_android = this.get_os() === this.operating_systems.ANDROID;\n this.is_linux = this.get_os() === this.operating_systems.LINUX;\n this.is_mac = this.get_os() === this.operating_systems.MAC;\n this.is_windows = this.get_os() === this.operating_systems.WINDOWS;\n }\n\n get_os()\n {\n const userAgent = window.navigator.userAgent;\n const platform = window.navigator.platform;\n const macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'];\n const windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'];\n const iosPlatforms = ['iPhone', 'iPad', 'iPod'];\n let os = null;\n\n if (macosPlatforms.indexOf(platform) !== -1)\n {\n os = this.operating_systems.MAC;\n }\n else if (iosPlatforms.indexOf(platform) !== -1)\n {\n os = this.operating_systems.IOS;\n }\n else if (windowsPlatforms.indexOf(platform) !== -1)\n {\n os = this.operating_systems.WINDOWS;\n }\n else if (/Android/.test(userAgent))\n {\n os = this.operating_systems.ANDROID;\n }\n else if (!os && /Linux/.test(platform))\n {\n os = this.operating_systems.LINUX;\n }\n\n return os;\n }\n}\n\nconst os = new OS();\nexport { os as OS };\n","// @ts-check\nimport { BufferGeometry, Vector3 } from 'three'; // eslint-disable-line\n\nclass ReflectionPlaneContext\n{\n init()\n {\n this.target_geometry = undefined;\n this.target_position = new Vector3();\n }\n\n /**\n * @param {BufferGeometry} geometry\n */\n set_target_geometry(geometry)\n {\n this.target_geometry = geometry;\n }\n}\n\nconst reflection_plane_context = new ReflectionPlaneContext();\nexport { reflection_plane_context as ReflectionPlaneContext };\n","import { DataTexture, FloatType, Mesh, RGBAFormat, ShaderMaterial, Vector2 } from 'three';\n\nclass GeometryBatch\n{\n constructor(geometry, batch_width)\n {\n this.geometry = geometry;\n\n this.material = undefined;\n this.uniforms = {};\n this.batch_width = batch_width;\n\n this.data_textures = [];\n\n this.object_names = undefined;\n\n this.zero_offset = new Vector2();\n this.write_offset = new Vector2();\n\n this.uniform_dirty_count = 0;\n\n this.tmp_uploaded_data_count = 0;\n }\n\n init(object_names, vert_shader, frag_shader)\n {\n this.material = new ShaderMaterial({\n uniforms: this.uniforms,\n vertexShader: vert_shader,\n fragmentShader: frag_shader\n });\n this.object_names = object_names;\n }\n\n add_global_uniform(name, data)\n {\n this.uniforms[name] = { value: data };\n this.material.needsUpdate = true;\n }\n\n set_global_uniform(name, data)\n {\n this.uniforms[name].value = data;\n }\n\n add_object_uniform_v3(uniform_name, default_value_v3)\n {\n const src_tex = this.__create_rgb_texture(this.batch_width);\n const dst_tex = this.__create_rgb_texture(this.batch_width);\n const one_pixel_tex = this.__create_rgb_texture(1);\n\n const new_data_tex = this.__add_data_texture(uniform_name, src_tex, dst_tex, one_pixel_tex);\n\n if (default_value_v3)\n {\n this.__flood_data_texture_rgb(new_data_tex, default_value_v3);\n }\n }\n\n add_object_uniform_v4(uniform_name, default_value_v4)\n {\n const src_tex = this.__create_rgba_texture(this.batch_width);\n const dst_tex = this.__create_rgba_texture(this.batch_width);\n const one_pixel_tex = this.__create_rgba_texture(1);\n\n const new_data_tex = this.__add_data_texture(uniform_name, src_tex, dst_tex, one_pixel_tex);\n\n if (default_value_v4)\n {\n this.__flood_data_texture_rgba(new_data_tex, default_value_v4);\n }\n }\n\n add_object_uniform_v4_float(uniform_name, default_value_v4)\n {\n const src_tex = this.__create_rgba_float_texture(this.batch_width);\n const dst_tex = this.__create_rgba_float_texture(this.batch_width);\n const one_pixel_tex = this.__create_rgba_float_texture(1);\n\n const new_data_tex = this.__add_data_texture(uniform_name, src_tex, dst_tex, one_pixel_tex);\n\n if (default_value_v4)\n {\n this.__flood_data_texture_rgba(new_data_tex, default_value_v4);\n }\n }\n\n set_object_uniform_v3(object_name, uniform_name, vector3, use_r, use_g, use_b)\n {\n const obj_index = this.__get_object_index(object_name);\n const data_texture = this.__get_data_texture(uniform_name);\n\n this.__set_pixel_rgb(data_texture.src, obj_index, vector3, use_r, use_g, use_b);\n this.__set_pixel_rgb(data_texture.one_pixel, 0, vector3, use_r, use_g, use_b);\n\n data_texture.last_accessed_index = obj_index;\n\n data_texture.dirty_count++;\n }\n\n set_object_uniform_v4(object_name, uniform_name, vector4, use_r, use_g, use_b, use_a)\n {\n const obj_index = this.__get_object_index(object_name);\n const data_texture = this.__get_data_texture(uniform_name);\n\n this.__set_pixel_rgba(data_texture.src, obj_index, vector4, use_r, use_g, use_b, use_a);\n this.__set_pixel_rgba(data_texture.one_pixel, 0, vector4, use_r, use_g, use_b, use_a);\n data_texture.last_accessed_index = obj_index;\n\n data_texture.dirty_count++;\n }\n\n upload_texture_data(renderer, upload_budget)\n {\n for (let i = 0; i < this.data_textures.length; i++)\n {\n if (upload_budget > 0 && this.data_textures[i].dirty_count > 0)\n {\n if (this.data_textures[i].dirty_count === 1)\n {\n this.__partial_texture_data_upload(renderer, this.data_textures[i]);\n }\n if (this.data_textures[i].dirty_count > 1)\n {\n this.__full_texture_data_upload(renderer, this.data_textures[i]);\n }\n\n this.data_textures[i].dirty_count = 0;\n\n upload_budget--;\n }\n }\n }\n\n get_uniform_dirty_count()\n {\n this.uniform_dirty_count = 0;\n for (let i = 0; i < this.data_textures.length; i++)\n {\n if (this.data_textures[i].dirty_count > 0)\n {\n this.uniform_dirty_count++;\n }\n }\n return this.uniform_dirty_count;\n }\n\n __full_texture_data_upload(renderer, texture_data)\n {\n // console.log(\"full texture update of\"+ texture_data.name);\n texture_data.dst.needsUpdate = true;\n renderer.copyTextureToTexture(\n this.zero_offset,\n texture_data.src,\n texture_data.dst\n );\n }\n\n __partial_texture_data_upload(renderer, texture_data)\n {\n // console.log(\"partial texture update\"+ texture_data.name);\n const index = texture_data.last_accessed_index;\n if (index === -1)\n {\n return;\n }\n\n this.write_offset.y = Math.floor(index / this.batch_width);\n this.write_offset.x = index - this.batch_width * this.write_offset.y;\n renderer.copyTextureToTexture(\n this.write_offset,\n texture_data.one_pixel,\n texture_data.dst\n );\n }\n\n get_mesh()\n {\n return new Mesh(this.geometry, this.material);\n }\n\n __set_pixel_rgb(data_texture, index, vector3, use_r, use_g, use_b)\n {\n if (use_r)\n {\n data_texture.image.data[index * 3 + 0] = vector3.x;\n }\n if (use_g)\n {\n data_texture.image.data[index * 3 + 1] = vector3.y;\n }\n if (use_b)\n {\n data_texture.image.data[index * 3 + 2] = vector3.z;\n }\n }\n\n __set_pixel_rgba(data_texture, index, vector4, use_r, use_g, use_b, use_a)\n {\n if (use_r)\n {\n data_texture.image.data[index * 4 + 0] = vector4.x;\n }\n if (use_g)\n {\n data_texture.image.data[index * 4 + 1] = vector4.y;\n }\n if (use_b)\n {\n data_texture.image.data[index * 4 + 2] = vector4.z;\n }\n if (use_a)\n {\n data_texture.image.data[index * 4 + 3] = vector4.w;\n }\n }\n\n __flood_data_texture_rgb(data_texture, v3)\n {\n for (let i = 0; i < this.batch_width * this.batch_width; i++)\n {\n this.__set_pixel_rgb(data_texture.src, i, v3, true, true, true);\n data_texture.dirty_count++;\n }\n }\n\n __flood_data_texture_rgba(data_texture, v4)\n {\n for (let i = 0; i < this.batch_width * this.batch_width; i++)\n {\n this.__set_pixel_rgba(data_texture.src, i, v4, true, true, true, true);\n data_texture.dirty_count++;\n }\n }\n\n __create_rgb_texture(width)\n {\n const data = new Uint8Array(3 * width * width);\n return new DataTexture(data, width, width, RGBAFormat);\n }\n\n __create_rgba_texture(width)\n {\n const data = new Uint8Array(4 * width * width);\n return new DataTexture(data, width, width, RGBAFormat);\n }\n\n __create_rgba_float_texture(width)\n {\n const data = new Float32Array(4 * width * width);\n return new DataTexture(data, width, width, RGBAFormat, FloatType);\n }\n\n __get_data_texture(uniform_name)\n {\n for (let i = 0; i < this.data_textures.length; i++)\n {\n if (this.data_textures[i].name === uniform_name)\n {\n return this.data_textures[i];\n }\n }\n console.error('Data texture ' + uniform_name + ' does not exist');\n return undefined;\n }\n\n __get_object_index(name)\n {\n for (let i = 0; i < this.object_names.length; i++)\n {\n if (this.object_names[i] === name)\n {\n return i;\n }\n }\n console.error('the name ' + name + ' is not contained in this batch');\n return undefined;\n }\n\n __add_data_texture(uniform_name, src_texture, dst_texture, one_pixel_text)\n {\n dst_texture.needsUpdate = true;\n\n this.data_textures.push({\n name: uniform_name,\n src: src_texture,\n dst: dst_texture,\n one_pixel: one_pixel_text,\n last_accessed_index: -1,\n dirty_count: 0\n });\n\n this.uniforms[uniform_name] = { value: dst_texture };\n return this.data_textures[this.data_textures.length - 1];\n }\n\n dispose()\n {\n for (let i = 0; i < this.data_textures.length; i++)\n {\n this.data_textures[i].src.dispose();\n this.data_textures[i].dst.dispose();\n this.data_textures[i].one_pixel.dispose();\n }\n }\n}\n\nexport { GeometryBatch };\n","import { GeometryBatch } from './GeometryBatch';\n\nimport * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js';\n\nimport { BufferAttribute } from 'three';\nimport { OMath } from '../utilities/OMath';\n\nclass GeometryBatcher\n{\n init()\n {\n this.batches = [];\n }\n\n batch(buffer_geometries)\n {\n const attr_accessor_uvs = [];\n const texture_width = OMath.ceilPowerOfTwo(Math.sqrt(buffer_geometries.length));\n // console.log(\"Store count: \" + buffer_geometries.length + \", Texture size: \" +texture_width);\n\n this.__init_uv_array(attr_accessor_uvs, texture_width);\n\n let uv_index = 0;\n\n for (let i = 0; i < buffer_geometries.length; i++)\n {\n const vertex_count = buffer_geometries[i].getAttribute('position').count;\n const y = Math.floor(i / texture_width);\n const x = i - texture_width * y;\n for (let count = 0; count < vertex_count; count++)\n {\n attr_accessor_uvs[uv_index] = (x / texture_width) + 0.5 / texture_width;\n attr_accessor_uvs[uv_index + 1] = (y / texture_width) + 0.5 / texture_width;\n uv_index += 2;\n }\n }\n\n const buffer_attribute = new BufferAttribute(new Float32Array(attr_accessor_uvs), 2);\n const buffer_geometry = BufferGeometryUtils.mergeGeometries(buffer_geometries);\n buffer_geometry.setAttribute('attr_accessor_uv', buffer_attribute);\n\n this.batches.push(new GeometryBatch(buffer_geometry, texture_width));\n return this.batches[this.batches.length - 1];\n }\n\n upload_texture_data(renderer)\n {\n for (let i = 0; i < this.batches.length; i++)\n {\n this.batches[i].upload_texture_data(renderer, 1);\n }\n }\n\n __init_uv_array(uvs, texture_width)\n {\n for (let i = 0; i < texture_width * texture_width * 2; i++)\n {\n uvs.push(0);\n }\n }\n}\n\nconst geometry_batcher = new GeometryBatcher();\nexport { geometry_batcher as GeometryBatcher };\n","import vert from '../shaders/ui_element/ui_element.vert';\nimport frag from '../shaders/ui_element/ui_element.frag';\n\nimport { BaseShaderMaterial } from '../materials/BaseShaderMaterial';\n\nimport { Vector2 } from 'three';\nimport { Vector3 } from 'three';\n\nimport { OScreen } from '../OScreen';\n\nclass UIElementMaterial extends BaseShaderMaterial\n{\n constructor(intensity = 1)\n {\n super(vert, frag, {\n _MainTex: { value: undefined },\n _ScreenSize: { value: new Vector2(OScreen.width, OScreen.height) },\n _TextureSize: { value: new Vector2() },\n _PixelOffset: { value: new Vector2(0, 0) },\n _NDC: { value: new Vector3() },\n _PivotPoint: { value: new Vector2() },\n _DepthOffset: { value: 0 }\n });\n this.transparent = true;\n this.depthWrite = false;\n this.depthTest = false;\n }\n}\n\nexport { UIElementMaterial };\n","import { Vector2 } from 'three';\n\nclass ScreenSpacePosition\n{\n constructor()\n {\n this.tmp_vec = new Vector2();\n }\n\n get_pos_NDC(position)\n {\n return this.tmp_vec.set(position.x, position.y);\n }\n}\n\nexport { ScreenSpacePosition };\n","import { CameraManager } from '../../CameraManager';\n\nimport { Vector2 } from 'three';\nimport { Vector3 } from 'three';\n\nclass WorldSpacePosition\n{\n constructor()\n {\n this.tmp_vec3 = new Vector3();\n this.tmp_vec2 = new Vector2();\n }\n\n get_pos_NDC(position)\n {\n this.tmp_vec3.copy(position);\n this.tmp_vec3.project(CameraManager.current);\n\n return this.tmp_vec2.set(this.tmp_vec3.x, this.tmp_vec3.y);\n }\n}\n\nexport { WorldSpacePosition };\n","// @ts-check\nimport { Vector2 } from 'three'; // eslint-disable-line no-unused-vars\nimport { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars\n\nclass UIElementState\n{\n constructor()\n {\n\n }\n\n /**\n * @param {UIElement} ui_element\n * @param {Vector2} normalized_mouse_position\n */\n update(ui_element, normalized_mouse_position) // eslint-disable-line no-unused-vars\n {\n\n }\n\n /**\n * @param {UIElement} ui_element\n */\n on_enter(ui_element) // eslint-disable-line no-unused-vars\n {}\n\n /**\n * @param {UIElement} ui_element\n */\n on_exit(ui_element) // eslint-disable-line no-unused-vars\n {}\n}\n\nexport { UIElementState };\n","import { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars\nimport { UIElementState } from './UIElementState';\n\nclass OnIdle extends UIElementState\n{\n constructor()\n {\n super();\n }\n\n /**\n * @param {UIElement} ui_element\n * @param {Vector2} normalized_mouse_position\n */\n update(ui_element, normalized_mouse_position)\n {\n if (ui_element.is_mouse_over(normalized_mouse_position))\n {\n ui_element.set_state(ui_element._on_enter_state);\n }\n }\n}\n\nexport { OnIdle };\n","// @ts-check\nimport { Vector2 } from 'three'; // eslint-disable-line no-unused-vars\nimport { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars\nimport { UIElementState } from './UIElementState';\n\nclass OnMouseEnter extends UIElementState\n{\n constructor()\n {\n super();\n }\n\n /**\n *\n * @param {UIElement} ui_element\n */\n on_enter(ui_element)\n {\n ui_element.on_mouse_enter();\n }\n\n /**\n * @param {UIElement} ui_element\n * @param {Vector2} normalized_mouse_position\n */\n update(ui_element, normalized_mouse_position)\n {\n if (ui_element.is_mouse_over(normalized_mouse_position))\n {\n ui_element.set_state(ui_element._on_hover_state);\n }\n else\n {\n ui_element.set_state(ui_element._on_exit_state);\n }\n }\n}\n\nexport { OnMouseEnter };\n","// @ts-check\nimport { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars\nimport { UIElementState } from './UIElementState';\n\nclass OnMouseExit extends UIElementState\n{\n constructor()\n {\n super();\n }\n\n /**\n * @param {UIElement} ui_element\n */\n on_enter(ui_element)\n {\n ui_element.on_mouse_exit();\n ui_element.set_state(ui_element._on_idle_state);\n }\n}\n\nexport { OnMouseExit };\n","// @ts-check\nimport { Vector2 } from 'three'; // eslint-disable-line no-unused-vars\nimport { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars\nimport { UIElementState } from './UIElementState';\n\nclass OnMouseHover extends UIElementState\n{\n constructor()\n {\n super();\n }\n\n /**\n * @param {UIElement} ui_element\n */\n on_enter(ui_element)\n {\n this.__trigger_on_hover(ui_element);\n }\n\n /**\n * @param {UIElement} ui_element\n * @param {Vector2} normalized_mouse_position\n */\n update(ui_element, normalized_mouse_position)\n {\n if (ui_element.is_mouse_over(normalized_mouse_position))\n {\n this.__trigger_on_hover(ui_element);\n }\n else\n {\n ui_element.set_state(ui_element._on_exit_state);\n }\n }\n\n /**\n * @param {UIElement} ui_element\n */\n __trigger_on_hover(ui_element)\n {\n ui_element.on_mouse_hover();\n }\n}\n\nexport { OnMouseHover };\n","// @ts-check\nimport { OScreen } from '../OScreen';\n\nimport { UIElementMaterial } from '../materials/UIElementMaterial';\n\nimport { ScreenSpacePosition } from '../ui/ui_element_position/ScreenSpacePosition';\nimport { WorldSpacePosition } from '../ui/ui_element_position/WorldSpacePosition';\n\nimport { OnIdle } from '../ui/ui_element_state/OnIdle';\nimport { OnMouseEnter } from '../ui/ui_element_state/OnMouseEnter';\nimport { OnMouseExit } from '../ui/ui_element_state/OnMouseExit';\nimport { OnMouseHover } from '../ui/ui_element_state/OnMouseHover';\n\nimport { Mesh, Texture } from 'three'; // eslint-disable-line no-unused-vars\nimport { PlaneGeometry } from 'three';\nimport { Vector2 } from 'three';\nimport { Vector3 } from 'three';\nimport { NearestFilter } from 'three';\nimport { Box2 } from 'three';\nimport { UIElementState } from '../ui/ui_element_state/UIElementState'; // eslint-disable-line no-unused-vars\n\nclass UIElement extends Mesh\n{\n /**\n * @param {string} [vert]\n * @param {string} [frag]\n */\n constructor(vert, frag) // eslint-disable-line no-unused-vars\n {\n const material = new UIElementMaterial();\n super(new PlaneGeometry(1, 1), material);\n this.material = material;\n\n this.is_clickable = false;\n\n /** @type {WorldSpacePosition | ScreenSpacePosition} */\n this.position_strategy = new WorldSpacePosition();\n this.current_state = new OnIdle();\n\n this._position = new Vector3();\n\n this._on_idle_state = new OnIdle();\n this._on_enter_state = new OnMouseEnter();\n this._on_exit_state = new OnMouseExit();\n this._on_hover_state = new OnMouseHover();\n\n this.on_enter = undefined;\n this.on_exit = undefined;\n this.on_hover = undefined;\n\n this.mouse_pos_tmp = new Vector2();\n this.cached_NDC_position = new Vector2();\n this.screen_pos_tmp = new Vector2();\n\n this.texture_size = new Vector2(1, 1);\n\n this.frustumCulled = false;\n this.matrixAutoUpdate = false;\n this.renderOrder = 0;\n\n this.size = 1;\n this.pixel_offset = new Vector2();\n }\n\n /**\n * @param {number} value\n */\n set_render_order(value)\n {\n this.renderOrder = value;\n }\n\n get pivot_point()\n {\n return this.material.uniforms._PivotPoint.value;\n }\n\n /**\n * @param {Vector2} offset\n */\n set_pixel_offset(offset)\n {\n this.pixel_offset.copy(offset);\n this.material.uniforms._PixelOffset.value.copy(offset);\n }\n\n /**\n *@param {UIElementState} new_state\n */\n set_state(new_state)\n {\n this.current_state.on_exit(this);\n this.current_state = new_state;\n this.current_state.on_enter(this);\n }\n\n // @ts-ignore\n get position()\n {\n return this._position;\n }\n\n set use_depth(boolean)\n {\n this.material.depthTest = boolean;\n }\n\n get use_depth()\n {\n return this.material.depthTest;\n }\n\n set depth_offset(value)\n {\n this.material.uniforms._DepthOffset.value = value;\n }\n\n get depth_offset()\n {\n return this.material.uniforms._DepthOffset.value;\n }\n\n clear_state()\n {\n this.visible = false;\n }\n\n set_world_space_coordinate_system()\n {\n this.position_strategy = new WorldSpacePosition();\n }\n\n set_screen_space_coordinate_system()\n {\n this.position_strategy = new ScreenSpacePosition();\n }\n\n /**\n * @param {Texture} texture\n */\n set_texture(texture)\n {\n texture.minFilter = NearestFilter;\n texture.magFilter = NearestFilter;\n texture.needsUpdate = true;\n\n this.texture_size.set(texture.image.width, texture.image.height);\n\n this.material.uniforms._MainTex.value = texture;\n this.get_size(this.material.uniforms._TextureSize.value);\n this.visible = true;\n }\n\n /**\n * @param {Vector2} normalized_mouse_pos\n */\n update_state(normalized_mouse_pos)\n {\n this.material.uniforms._ScreenSize.value.set(OScreen.width, OScreen.height);\n this.get_size(this.material.uniforms._TextureSize.value);\n\n this.cached_NDC_position.copy(this.position_strategy.get_pos_NDC(this.position));\n this.material.uniforms._NDC.value.copy(this.position);\n this.current_state.update(this, normalized_mouse_pos);\n }\n\n /**\n * @param {Vector2} normalized_mouse_pos\n */\n is_mouse_over(normalized_mouse_pos)\n {\n this.screen_pos_tmp.copy(this.cached_NDC_position);\n this.to_screen_position(this.screen_pos_tmp);\n this.screen_pos_tmp.x += this.pixel_offset.x;\n this.screen_pos_tmp.y += this.pixel_offset.y;\n\n const rect = new Box2().setFromCenterAndSize(this.screen_pos_tmp, this.get_size());\n\n this.mouse_pos_tmp.copy(normalized_mouse_pos);\n this.to_screen_position(this.mouse_pos_tmp);\n\n return rect.containsPoint(this.mouse_pos_tmp);\n }\n\n /**\n * @param {Vector2} projected_pos\n */\n to_screen_position(projected_pos)\n {\n projected_pos.x = (projected_pos.x * 0.5 + 0.5) * OScreen.width + this.pixel_offset.x;\n projected_pos.y = (projected_pos.y * 0.5 + 0.5) * OScreen.height + this.pixel_offset.y;\n }\n\n get_screen_space_position()\n {\n const pos = this.cached_NDC_position.clone();\n this.to_screen_position(pos);\n return pos;\n }\n\n /**\n * @param {Vector2} screen_pos\n */\n set_screen_space_position(screen_pos)\n {\n this.position.x = (screen_pos.x / OScreen.width) * 2 - 1;\n this.position.y = (screen_pos.y / OScreen.height) * 2 - 1;\n }\n\n dispose()\n {\n if (this.material.uniforms._MainTex.value)\n {\n this.material.uniforms._MainTex.value.dispose();\n }\n // OScreen.remove_screen_material(this.material);\n this.geometry.dispose();\n this.material.dispose();\n }\n\n /**\n * @param {Vector2} [vector2]\n */\n get_size(vector2)\n {\n if (vector2)\n {\n return vector2.copy(this.texture_size).multiplyScalar(this.size / OScreen.dpr);\n }\n else\n {\n return new Vector2().copy(this.texture_size).multiplyScalar(this.size / OScreen.dpr);\n }\n }\n\n on_mouse_enter()\n {}\n\n on_mouse_exit()\n {}\n\n on_mouse_hover()\n {}\n}\n\nexport { UIElement };\n","// @ts-check\nimport { CameraManager } from './CameraManager';\nimport { Graphics } from './Graphics';\n\nimport { Vector2 } from 'three';\nimport { Scene } from 'three';\nimport { OrthographicCamera } from './OrthographicCamera';\nimport { UIElement } from './components/UIElement'; // eslint-disable-line\n\nclass UI\n{\n init(input)\n {\n this.input = input;\n /** @type {UIElement[]} */\n this.ui_elements = [];\n this._tmp_normalized_pos = new Vector2();\n this.ss_scene = new Scene();\n this.ss_scene.matrixWorldAutoUpdate = false;\n this.ss_scene.frustumCulled = false;\n\n this.ws_scene = new Scene();\n this.ws_scene.matrixWorldAutoUpdate = false;\n this.ws_scene.frustumCulled = false;\n\n this.ss_camera = new OrthographicCamera(-1, 1, 1, -1, -100, 100);\n }\n\n /**\n * @param {UIElement} elem\n */\n delete_element(elem)\n {\n const index = this.ui_elements.indexOf(elem);\n if (index > -1)\n {\n this.ui_elements.splice(index, 1);\n }\n\n this.ss_scene.remove(elem);\n this.ws_scene.remove(elem);\n\n elem.dispose();\n }\n\n /**\n * @param {UIElement} elem\n */\n add_screen_space_element(elem)\n {\n this.ui_elements.push(elem);\n this.ss_scene.add(elem);\n\n elem.set_screen_space_coordinate_system();\n }\n\n /**\n * @param {UIElement} elem\n */\n add_world_space_element(elem)\n {\n this.ui_elements.push(elem);\n this.ws_scene.add(elem);\n\n elem.set_world_space_coordinate_system();\n }\n\n update()\n {\n // this.ss_camera.left = -OScreen.width / 2;\n // this.ss_camera.right = OScreen.width / 2;\n // this.ss_camera.top = OScreen.top / 2;\n // this.ss_camera.right = -OScreen.bottom / 2;\n this.ss_camera.updateProjectionMatrix();\n\n this._tmp_normalized_pos.copy(this.input.NDC);\n for (let i = 0; i < this.ui_elements.length; i++)\n {\n this.ui_elements[i].update_state(this._tmp_normalized_pos);\n }\n }\n\n /**\n * @param {Graphics} renderer\n */\n render(renderer)\n {\n // renderer.render_ui(this.scene);\n if (this.ss_scene.children.length > 0)\n {\n Graphics.render(this.ss_scene, this.ss_camera);\n }\n if (this.ws_scene.children.length > 0)\n {\n Graphics.render(this.ws_scene, CameraManager.current);\n }\n }\n\n clear()\n {\n this.current_clicked_element = undefined;\n }\n}\n\nconst ui = new UI();\nexport { ui as UI };\n","import { Vector3, Plane, Quaternion, Sphere, Line3 } from 'three';\nimport { OMath } from './OMath';\n\nclass PerspectiveFrustumPointFitter\n{\n constructor()\n {\n this.sphere = new Sphere();\n }\n\n fit_points(points, camera_quaternion, vertical_fov, aspect)\n {\n this.sphere.setFromPoints(points);\n\n const v_fov = OMath.degToRad(vertical_fov / 2);\n const h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;\n\n const up_plane_normal = this.get_up_plane_normal(camera_quaternion, v_fov);\n const down_plane_normal = this.get_down_plane_normal(camera_quaternion, v_fov);\n const left_plane_normal = this.get_left_plane_normal(camera_quaternion, h_fov);\n const right_plane_normal = this.get_right_plane_normal(camera_quaternion, h_fov);\n\n const camera_forward_dir = new Vector3(0, 0, -1).applyQuaternion(camera_quaternion);\n\n const sphere_center = this.sphere.center.clone();\n\n const pull_back_distance = this.get_distance_to_fit_rect(this.sphere.radius * 2, this.sphere.radius * 2, vertical_fov, aspect);\n const far_pos = sphere_center.clone().add(camera_forward_dir.clone().multiplyScalar(pull_back_distance * -1));\n\n const up_plane = new Plane().setFromNormalAndCoplanarPoint(up_plane_normal, far_pos);\n const down_plane = new Plane().setFromNormalAndCoplanarPoint(down_plane_normal, far_pos);\n\n const left_plane = new Plane().setFromNormalAndCoplanarPoint(left_plane_normal, far_pos);\n const right_plane = new Plane().setFromNormalAndCoplanarPoint(right_plane_normal, far_pos);\n\n this.apply_center_correction_to_pos(far_pos, points, camera_quaternion, up_plane, down_plane, left_plane, right_plane);\n\n up_plane.setFromNormalAndCoplanarPoint(up_plane_normal, far_pos);\n down_plane.setFromNormalAndCoplanarPoint(down_plane_normal, far_pos);\n\n left_plane.setFromNormalAndCoplanarPoint(left_plane_normal, far_pos);\n right_plane.setFromNormalAndCoplanarPoint(right_plane_normal, far_pos);\n\n let closest_distance = Infinity;\n\n const inverse_dir = camera_forward_dir.clone().multiplyScalar(pull_back_distance * -2);\n for (let i = 0; i < points.length; i++)\n {\n const line = new Line3(points[i].clone(), points[i].clone().add(inverse_dir));\n\n const up_line_intersection = new Vector3();\n const down_line_intersection = new Vector3();\n\n const left_line_intersection = new Vector3();\n const right_line_intersection = new Vector3();\n\n up_plane.intersectLine(line, up_line_intersection);\n down_plane.intersectLine(line, down_line_intersection);\n\n left_plane.intersectLine(line, left_line_intersection);\n right_plane.intersectLine(line, right_line_intersection);\n\n if (up_line_intersection.length() < 0.0001)\n {\n console.log('up intersection not found', i);\n }\n if (down_line_intersection.length() < 0.0001)\n {\n console.log('down intersection not found', i);\n }\n if (left_line_intersection.length() < 0.0001)\n {\n console.log('left intersection not found', i);\n }\n if (right_line_intersection.length() < 0.0001)\n {\n console.log('right intersection not found', i);\n }\n\n const new_up_distance = points[i].clone().sub(up_line_intersection).length();\n const new_down_distance = points[i].clone().sub(down_line_intersection).length();\n\n const new_left_distance = points[i].clone().sub(left_line_intersection).length();\n const new_right_distance = points[i].clone().sub(right_line_intersection).length();\n\n const vertical_min = Math.min(new_up_distance, new_down_distance);\n const horizontal_min = Math.min(new_left_distance, new_right_distance);\n\n const min = Math.min(vertical_min, horizontal_min);\n\n if (min < closest_distance)\n {\n closest_distance = min;\n }\n }\n\n const forward_correction = camera_forward_dir.clone().multiplyScalar(closest_distance);\n const closest_position = far_pos.clone().add(forward_correction);\n\n return closest_position;\n }\n\n apply_center_correction_to_pos(target_pos, points, camera_quaternion, up_plane, down_plane, left_plane, right_plane)\n {\n const vertical_offset = this.get_vertical_correction(points, down_plane, up_plane, camera_quaternion);\n const horizontal_offset = this.get_horizontal_correction(points, left_plane, right_plane, camera_quaternion);\n\n target_pos.add(vertical_offset);\n target_pos.add(horizontal_offset);\n }\n\n get_vertical_correction(points, down_plane, up_plane, camera_quaternion)\n {\n let closest_distance_to_up_plane = Infinity;\n let closest_distance_to_down_plane = Infinity;\n // let closest_up_point = undefined;\n // let closest_down_point = undefined;\n\n const up_dir = new Vector3(0, 1, 0).applyQuaternion(camera_quaternion);\n for (let i = 0; i < points.length; i++)\n {\n const down_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(-5000000)));\n const up_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(5000000)));\n\n const down_line_intersection = new Vector3();\n const up_line_intersection = new Vector3();\n\n down_plane.intersectLine(down_line, down_line_intersection);\n up_plane.intersectLine(up_line, up_line_intersection);\n\n const down_dist = down_line_intersection.distanceTo(points[i]);\n const up_dist = up_line_intersection.distanceTo(points[i]);\n\n if (up_line_intersection.length() < 0.0001)\n {\n console.log('vertical up intersection not found', i);\n }\n if (down_line_intersection.length() < 0.0001)\n {\n console.log('vertical down intersection not found', i);\n }\n\n if (down_dist < closest_distance_to_down_plane)\n {\n closest_distance_to_down_plane = down_dist;\n // closest_down_point = points[i];\n }\n if (up_dist < closest_distance_to_up_plane)\n {\n closest_distance_to_up_plane = up_dist;\n // closest_up_point = points[i];\n }\n }\n\n const correction = (closest_distance_to_up_plane - closest_distance_to_down_plane) / 2;\n\n // console.log(\"vertical_correction\", correction)\n return up_dir.clone().multiplyScalar(-correction);\n }\n\n get_horizontal_correction(points, left_plane, right_plane, camera_quaternion)\n {\n let closest_distance_to_right_plane = Infinity;\n let closest_distance_to_left_plane = Infinity;\n // let closest_right_point = undefined;\n // let closest_left_point = undefined;\n\n const right_dir = new Vector3(1, 0, 0).applyQuaternion(camera_quaternion);\n\n for (let i = 0; i < points.length; i++)\n {\n const left_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(-5000000)));\n const right_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(5000000)));\n\n const left_line_intersection = new Vector3();\n const right_line_intersection = new Vector3();\n\n left_plane.intersectLine(left_line, left_line_intersection);\n right_plane.intersectLine(right_line, right_line_intersection);\n\n const left_dist = left_line_intersection.distanceTo(points[i]);\n const right_dist = right_line_intersection.distanceTo(points[i]);\n\n if (left_line_intersection.length() < 0.0001)\n {\n console.log('left intersection not found', i);\n }\n if (right_line_intersection.length() < 0.0001)\n {\n console.log('right intersection not found', i);\n }\n\n if (left_dist < closest_distance_to_left_plane)\n {\n closest_distance_to_left_plane = left_dist;\n // closest_left_point = points[i];\n }\n if (right_dist < closest_distance_to_right_plane)\n {\n closest_distance_to_right_plane = right_dist;\n // closest_right_point = points[i];\n }\n }\n\n const correction = (closest_distance_to_right_plane - closest_distance_to_left_plane) / 2;\n // console.log(\"horizontal_correction\", correction)\n\n return right_dir.clone().multiplyScalar(-correction);\n }\n\n get_up_plane_normal(camera_quaternion, v_fov)\n {\n const up_plane_normal = new Vector3(0, -1, 0);\n up_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), v_fov));\n up_plane_normal.applyQuaternion(camera_quaternion);\n return up_plane_normal;\n }\n\n get_down_plane_normal(camera_quaternion, v_fov)\n {\n const down_plane_normal = new Vector3(0, 1, 0);\n down_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), -v_fov));\n down_plane_normal.applyQuaternion(camera_quaternion);\n return down_plane_normal;\n }\n\n get_left_plane_normal(camera_quaternion, h_fov)\n {\n const left_plane_normal = new Vector3(1, 0, 0);\n left_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), h_fov));\n left_plane_normal.applyQuaternion(camera_quaternion);\n return left_plane_normal;\n }\n\n get_right_plane_normal(camera_quaternion, h_fov)\n {\n const right_plane_normal = new Vector3(-1, 0, 0);\n right_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), -h_fov));\n right_plane_normal.applyQuaternion(camera_quaternion);\n return right_plane_normal;\n }\n\n get_distance_to_fit_rect(width, height, vertical_fov, aspect)\n {\n const v_fov = (vertical_fov / 2) * Math.PI / 180;\n const h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;\n\n const distV = height / Math.tan(v_fov);\n const distH = width / Math.tan(h_fov);\n return Math.max(Math.abs(distH), Math.abs(distV));\n }\n}\n\nexport { PerspectiveFrustumPointFitter };\n","import { Vector3, Box3 } from 'three';\n\nclass OrthographicFrustumPointFitter\n{\n constructor()\n {\n\n }\n\n fit_points(points, camera_quaternion, vertical_fov, aspect)\n {\n const inverse_camera_quat = camera_quaternion.clone().inverse();\n\n const inverted_points = [];\n\n for (let i = 0; i < points.length; i++)\n {\n inverted_points.push(points[i].clone().applyQuaternion(inverse_camera_quat));\n }\n\n const box = new Box3().setFromPoints(inverted_points);\n const size = new Vector3();\n box.getSize(size);\n\n const distance = this.get_distance_to_fit_rect(size.x / 2, size.y / 2, vertical_fov, aspect);\n\n const center = new Vector3();\n box.getCenter(center);\n\n center.applyQuaternion(camera_quaternion);\n\n return {\n center: center,\n distance_to_center: distance\n };\n }\n\n get_distance_to_fit_rect(width, height, vertical_fov, aspect)\n {\n const v_fov = (vertical_fov / 2) * Math.PI / 180;\n const h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;\n\n const distV = height / Math.tan(v_fov);\n const distH = width / Math.tan(h_fov);\n return Math.max(Math.abs(distH), Math.abs(distV));\n }\n}\n\nexport { OrthographicFrustumPointFitter };\n","import { CameraManager } from '../CameraManager';\nimport { OMath } from '../utilities/OMath';\nimport { OScreen } from '../OScreen';\n\nimport { Vector3 } from 'three';\nimport { Matrix4 } from 'three';\nimport { Plane } from 'three';\nimport { Ray } from 'three';\nimport { Sphere } from 'three';\nimport { Box3 } from 'three';\nimport { PerspectiveFrustumPointFitter } from './PerspectiveFrustumPointFitter';\nimport { OrthographicFrustumPointFitter } from './OrthographicFrustumPointFitter';\n\nclass CameraUtilities\n{\n init(input)\n {\n this.tmp_mat = new Matrix4();\n this.plane = new Plane();\n this.ray = new Ray();\n\n this.tmp_size = new Vector3();\n this.tmp_unproj = new Vector3();\n\n this.input = input;\n }\n\n get_up_dir(camera)\n {\n camera = camera || CameraManager.current;\n const tmp_vec = new Vector3();\n\n tmp_vec.set(0, 1, 0);\n tmp_vec.applyQuaternion(camera.quaternion);\n\n return tmp_vec;\n }\n\n get_forward_dir(camera)\n {\n camera = camera || CameraManager.current;\n const tmp_vec = new Vector3();\n\n tmp_vec.set(0, 0, -1);\n tmp_vec.applyQuaternion(camera.quaternion);\n\n return tmp_vec;\n }\n\n get_right_dir(camera)\n {\n camera = camera || CameraManager.current;\n const tmp_vec = new Vector3();\n\n tmp_vec.set(1, 0, 0);\n tmp_vec.applyQuaternion(camera.quaternion);\n return tmp_vec;\n }\n\n unproject_mouse_position(NDC, camera)\n {\n camera = camera || CameraManager.current;\n const tmp_vec = new Vector3();\n\n const v_fov = (camera.fov / 2) * Math.PI / 180;\n const h_fov = (2 * Math.atan(Math.tan(v_fov) * camera.aspect)) / 2;\n\n const distV = Math.tan(v_fov) * camera.far;\n const distH = Math.tan(h_fov) * camera.far;\n\n tmp_vec.set(distH * NDC.x, distV * NDC.y, -camera.far).normalize();\n\n return tmp_vec.applyQuaternion(camera.quaternion);\n }\n\n get_plane_intersection(plane_position, plane_normal, NDC, camera)\n {\n camera = camera || CameraManager.current;\n NDC = NDC || this.input.NDC;\n\n const tmp_vec = new Vector3();\n\n this.plane.setFromNormalAndCoplanarPoint(plane_normal || this.get_forward_dir(camera), plane_position);\n if (camera.isPerspectiveCamera)\n {\n this.ray.set(camera.position, this.unproject_mouse_position(NDC, camera));\n }\n else\n {\n const pos = new Vector3(NDC.x * camera.right, NDC.y * camera.top, 0);\n pos.applyQuaternion(camera.quaternion);\n pos.add(camera.position);\n const dir = new Vector3(0, 0, -1).applyQuaternion(camera.quaternion);\n this.ray.set(pos, dir);\n }\n this.ray.intersectPlane(this.plane, tmp_vec);\n\n return tmp_vec;\n }\n\n fit_points_on_camera(points, zoom_scale = 1)\n {\n const points_sphere = new Sphere().setFromPoints(points);\n const world_space_center = points_sphere.center;\n const camera_forward = this.get_forward_dir(CameraManager.current).clone();\n\n const plane = new Plane().setFromNormalAndCoplanarPoint(camera_forward, world_space_center);\n\n const points_on_plane = OMath.project_points_on_plane(points, plane);\n\n const projected_points_center = new Vector3();\n let box = new Box3().setFromPoints(points_on_plane);\n box.getCenter(projected_points_center);\n\n const up = new Vector3(0, 1, 0).applyQuaternion(CameraManager.current.quaternion);\n const right = up.clone().cross(camera_forward).normalize();\n const mat = new Matrix4().set(right.x, up.x, camera_forward.x, world_space_center.x,\n right.y, up.y, camera_forward.y, world_space_center.y,\n right.z, up.z, camera_forward.z, world_space_center.z,\n 0, 0, 0, 1);\n\n const inverse_mat = new Matrix4().getInverse(mat);\n for (let i = 0; i < points_on_plane.length; i++)\n {\n points_on_plane[i].applyMatrix4(inverse_mat);\n }\n\n const size = new Vector3();\n box = new Box3().setFromPoints(points_on_plane);\n box.getSize(size);\n size.multiplyScalar(zoom_scale);\n const projected_center = new Vector3();\n box.getCenter(projected_center);\n\n return {\n position: projected_points_center,\n zoom: this.get_zoom_to_fit_rect(size.x / 2, size.y / 2)\n };\n }\n\n get_zoom_to_fit_rect(width, height)\n {\n const v_fov = (CameraManager.current.fov / 2) * Math.PI / 180;\n const h_fov = (2 * Math.atan(Math.tan(v_fov) * CameraManager.current.aspect)) / 2;\n\n const distV = height / Math.tan(v_fov);\n const distH = width / Math.tan(h_fov);\n\n return Math.max(Math.abs(distH), Math.abs(distV));\n }\n\n get_zoom_to_fit_box(bb, camera)\n {\n if (camera.isOrthographicCamera)\n {\n bb.getSize(this.tmp_size);\n\n const obj_x = this.tmp_size.x;\n const obj_y = this.tmp_size.y;\n const object_aspect = obj_x / obj_y;\n if (OScreen.aspect_ratio / object_aspect > 1)\n {\n return OScreen.height / obj_y;\n }\n else\n {\n return OScreen.width / obj_x;\n }\n }\n else\n {\n // return this.fit_points_on_camera([bb.min, bb.max], 1).zoom;\n const size = new Vector3();\n bb.getSize(size);\n return this.get_zoom_to_fit_rect(size.x, size.y);\n }\n }\n\n get_html_screen_pos(object, camera)\n {\n camera = camera || CameraManager.current;\n const tmp_vec = new Vector3();\n\n object.getWorldPosition(tmp_vec);\n tmp_vec.project(camera);\n\n tmp_vec.x = (tmp_vec.x * 0.5 + 0.5) * (OScreen.width);\n tmp_vec.y = (1 - (tmp_vec.y * 0.5 + 0.5)) * OScreen.height;\n return tmp_vec;\n }\n\n world_pos_to_screen(pos, camera)\n {\n camera = camera || CameraManager.current;\n const tmp_vec = new Vector3();\n\n tmp_vec.copy(pos);\n tmp_vec.project(camera);\n\n tmp_vec.x = (tmp_vec.x * 0.5 + 0.5) * (OScreen.width);\n tmp_vec.y = (1 - (tmp_vec.y * 0.5 + 0.5)) * OScreen.height;\n return tmp_vec;\n }\n\n update_projection(camera)\n {\n camera.left = -OScreen.width / 2;\n camera.right = OScreen.width / 2;\n camera.top = OScreen.height / 2;\n camera.bottom = -OScreen.height / 2;\n camera.aspect = OScreen.aspect_ratio;\n camera.updateProjectionMatrix(true);\n }\n\n fit_bounding_box_points(camera, bb, scale = 1)\n {\n const dir = new Vector3();\n dir.copy(bb.max).sub(bb.min);\n\n const p1 = bb.min.clone();\n\n const p2 = p1.clone().add(new Vector3(dir.x, 0, 0));\n const p3 = p1.clone().add(new Vector3(0, dir.y, 0));\n const p4 = p1.clone().add(new Vector3(0, 0, dir.z));\n\n const p5 = p1.clone().add(new Vector3(dir.x, 0, dir.z));\n const p6 = p1.clone().add(new Vector3(0, dir.y, dir.z));\n const p7 = bb.max.clone();\n const p8 = p1.clone().add(new Vector3(dir.x, dir.y, 0));\n return this.fit_points(camera, [p1, p2, p3, p4, p5, p6, p7, p8], scale);\n }\n\n fit_points(camera, points, zoom_scale = 1)\n {\n if (camera.isPerspectiveCamera)\n {\n const camera_forward_dir = new Vector3(0, 0, -1).applyQuaternion(camera.quaternion);\n const camera_backward_dir = camera_forward_dir.clone().multiplyScalar(-1);\n\n const fitter = new PerspectiveFrustumPointFitter();\n\n const aspect_ratio = OScreen.aspect_ratio;\n\n const camera_pos = fitter.fit_points(points, camera.quaternion, camera.fov * zoom_scale, aspect_ratio);\n const box = new Box3().setFromPoints(points);\n const center = new Vector3();\n box.getCenter(center);\n\n const reference_position_plane = new Plane().setFromNormalAndCoplanarPoint(camera_backward_dir, center);\n\n const camera_ray = new Ray(camera_pos, camera_forward_dir);\n\n const reference_position = new Vector3();\n camera_ray.intersectPlane(reference_position_plane, reference_position);\n\n const zoom = camera_pos.distanceTo(reference_position);\n\n return {\n zoom: zoom,\n reference_position: reference_position,\n camera_position: camera_pos\n };\n }\n else\n {\n const fitter = new OrthographicFrustumPointFitter();\n const result = fitter.fit_points(points, this.reference_rotation, camera.fov * zoom_scale, OScreen.aspect_ratio);\n\n this.reference_position.copy(result.center);\n this.reference_zoom = result.distance_to_center;\n\n const forward = new Vector3(0, 0, 1).applyQuaternion(camera.quaternion);\n return {\n zoom: result.distance_to_center,\n reference_position: result.center,\n camera_position: forward.multiplyScalar(result.distance_to_center)\n };\n }\n }\n}\n\nconst camera_utilities = new CameraUtilities();\nexport { camera_utilities as CameraUtilities };\n","// @ts-check\nimport { Browser } from './Browser';\nimport { CameraManager } from './CameraManager';\nimport { Capabilities } from './Capabilities';\nimport { Debug } from './Debug';\nimport { Graphics } from './Graphics';\nimport { OS } from './OS';\nimport { OScreen } from './OScreen';\nimport { ReflectionPlaneContext } from './ReflectionPlaneContext';\nimport { ResourceContainer } from './ResourceContainer';\nimport { SceneManager } from './SceneManager';\nimport { GeometryBatcher } from './static_batcher/GeometryBatcher';\nimport { Time } from './Time';\nimport { UI } from './UI';\nimport { CameraUtilities } from './utilities/CameraUtilities';\nimport { RenderLoop } from './index'; // eslint-disable-line no-unused-vars\n\nclass Initializer\n{\n constructor()\n {\n }\n\n init(input)\n {\n CameraManager.init();\n CameraUtilities.init(input);\n Capabilities.init();\n GeometryBatcher.init();\n\n OS.init();\n Browser.init();\n ReflectionPlaneContext.init();\n ResourceContainer.init();\n SceneManager.init();\n OScreen.init();\n Time.init();\n UI.init(input);\n\n Debug.init();\n }\n\n /**\n * @param {RenderLoop} render_loop\n */\n dispose(render_loop)\n {\n Graphics.dispose();\n SceneManager.dispose();\n\n render_loop.dispose();\n }\n}\n\nconst initializer = new Initializer();\nexport { initializer as Initializer };\n","// @ts-check\nclass KeyboardInput\n{\n /**\n * @param {HTMLElement} container\n */\n init(container)\n {\n this.ctrlz_pressed = false;\n this.ctrlz_fired = false;\n\n /**\n * @type {{[key:string]:{key_name: string, pressed: boolean, down: boolean, fired: boolean, released: boolean}}}\n */\n this.keys = {};\n /** @type {string[]} */\n this.keys_keys = [];\n this.container = container;\n\n this.container.addEventListener('keydown', this.on_key_down.bind(this), false);\n this.container.addEventListener('keyup', this.on_key_up.bind(this), false);\n }\n\n /**\n * @param {KeyboardEvent} e\n */\n on_key_down(e)\n {\n if (e.keyCode === 90 && e.ctrlKey && !this.ctrlz_fired)\n {\n this.ctrlz_pressed = true;\n this.ctrlz_fired = true;\n }\n\n if (e.code)\n {\n this.press_key(e.code);\n }\n }\n\n /**\n * @param {KeyboardEvent} e\n */\n on_key_up(e)\n {\n this.release_key(e.code);\n }\n\n clear()\n {\n this.ctrlz_pressed = false;\n\n for (let i = 0; i < this.keys_keys.length; i++)\n {\n this.keys[this.keys_keys[i]].pressed = false;\n this.keys[this.keys_keys[i]].released = false;\n }\n }\n\n /**\n * @param {string} key_name\n */\n release_key(key_name)\n {\n const key = this.keys[key_name];\n if (key)\n {\n key.fired = false;\n key.down = false;\n key.released = true;\n }\n }\n\n release_keys()\n {\n this.ctrlz_fired = false;\n\n for (let i = 0; i < this.keys_keys.length; i++)\n {\n this.keys[this.keys_keys[i]].fired = false;\n this.keys[this.keys_keys[i]].down = false;\n }\n }\n\n /**\n * @param {string} key_name\n */\n press_key(key_name)\n {\n const key = this.keys[key_name];\n if (key)\n {\n if (key.down === false)\n {\n key.pressed = true;\n }\n key.down = true;\n key.fired = true;\n }\n }\n\n /**\n * @param {string} key_name\n * @returns {boolean}\n */\n is_key_pressed(key_name)\n {\n const key = this.keys[key_name];\n if (key)\n {\n return key.pressed;\n }\n return false;\n }\n\n /**\n * @param {string} key_name\n * @returns {boolean}\n */\n is_key_down(key_name)\n {\n const key = this.keys[key_name];\n if (key)\n {\n return key.down;\n }\n return false;\n }\n\n /**\n * @param {string} key_name\n * @returns {boolean}\n */\n is_key_released(key_name)\n {\n const key = this.keys[key_name];\n if (key)\n {\n return key.released;\n }\n\n return false;\n }\n\n /**\n * @param {string} key\n */\n register_key(key)\n {\n this.keys[key] =\n {\n key_name: key,\n pressed: false,\n down: false,\n fired: false,\n released: false\n };\n\n this.keys_keys = Object.keys(this.keys);\n }\n\n /**\n * @param {string} key_name\n */\n unregister_key(key_name)\n {\n delete this.keys[key_name];\n }\n\n dispose()\n {\n this.container.removeEventListener('keydown', this.on_key_down.bind(this), false);\n this.container.removeEventListener('keyup', this.on_key_up.bind(this), false);\n }\n}\n\nexport { KeyboardInput };\n","import frag from '../shaders/normal/normal.frag';\nimport vert from '../shaders/normal/normal.vert';\n\nimport { ShaderMaterial } from 'three';\n\nclass NormalMaterial extends ShaderMaterial\n{\n constructor()\n {\n super({\n uniforms: {\n },\n vertexShader: vert,\n fragmentShader: frag\n });\n }\n}\n\nexport { NormalMaterial };\n","import { CameraManager } from '../CameraManager';\nimport { SceneManager } from '../SceneManager';\nimport { BaseRender } from '../render_mode/BaseRender';\nimport { Graphics } from '../Graphics';\nimport { NormalMaterial } from '../materials/NormalMaterial';\n\nclass DebugNormalsRender extends BaseRender\n{\n constructor()\n {\n super();\n }\n\n render()\n {\n Graphics.clear(undefined, CameraManager.current, true, true);\n\n Graphics.render(SceneManager.current, CameraManager.current, undefined, new NormalMaterial());\n }\n}\n\nexport { DebugNormalsRender };\n","import { BlitMaterial } from '../materials/BlitMaterial';\n\nimport frag from '../shaders/depth_normals/debug_normals.frag';\nimport depth_normals_vert from '../shaders/ssao/ssao.vert';\n\nimport { Matrix4 } from 'three';\n\nclass DisplayNormalTextureMaterial extends BlitMaterial\n{\n constructor()\n {\n super(frag, depth_normals_vert);\n this.uniforms._FarPlane = { value: 1 };\n this.uniforms._InverseProjMatrix = { value: new Matrix4() };\n }\n}\n\nexport { DisplayNormalTextureMaterial };\n","import { BlitMaterial } from '../materials/BlitMaterial';\n\nimport frag from '../shaders/ssao/ssao_compose.frag';\n\nclass SSAOComposeMaterial extends BlitMaterial\n{\n constructor()\n {\n super(frag);\n this.uniforms._AO = { value: undefined };\n }\n}\n\nexport { SSAOComposeMaterial };\n","import { BlitMaterial } from '../materials/BlitMaterial';\n\nimport frag from '../shaders/ssao/ssao.frag';\nimport vert from '../shaders/ssao/ssao.vert';\n\nimport { DataTexture, Matrix4, RGBAFormat, RepeatWrapping, Vector3 } from 'three';\n\nimport { OMath } from '../utilities/OMath';\nclass SSAOMaterial extends BlitMaterial\n{\n constructor()\n {\n super(frag, vert);\n\n this.uniforms._InverseProjMatrix = { value: new Matrix4() };\n this.uniforms._ProjectionMatrix = { value: new Matrix4() };\n\n this.uniforms._Bias = { value: 0.0125 };\n this.uniforms._Radius = { value: 0.3 };\n this.uniforms._FarPlane = { value: 100 };\n\n this.uniforms._SampleKernel = { value: this.__get_sample_kernel() };\n this.uniforms._RandomRotation = { value: this.__get_rotation_kernel() };\n }\n\n __get_sample_kernel()\n {\n const sample_kernel = [];\n const kernel_size = 64;\n\n for (let i = 0; i < kernel_size; i++)\n {\n const dir = new Vector3(Math.random() * 2 - 1,\n Math.random() * 2 - 1,\n Math.random());\n dir.normalize();\n let scale = i / kernel_size;\n scale = OMath.lerp(0.1, 1.0, scale * scale);\n dir.multiplyScalar(scale);\n\n sample_kernel.push(dir);\n }\n return sample_kernel;\n }\n\n __get_rotation_kernel()\n {\n const rotation_kernel = new Uint8Array(3 * 16);\n for (let i = 0; i < 16; i++)\n {\n rotation_kernel[i * 3 + 1] = Math.floor(Math.random() * 255);\n rotation_kernel[i * 3 + 2] = Math.floor(Math.random() * 255);\n rotation_kernel[i * 3 + 3] = 0;\n }\n\n const rotation_texture = new DataTexture(rotation_kernel, 4, 4, RGBAFormat);\n rotation_texture.wrapS = RepeatWrapping;\n rotation_texture.wrapT = RepeatWrapping;\n\n rotation_texture.needsUpdate = true;\n return rotation_texture;\n }\n}\n\nexport { SSAOMaterial };\n","import { BlitMaterial } from '../materials/BlitMaterial';\n\nimport frag from '../shaders/box_blur/box_blur.frag';\n\nimport { Vector2 } from 'three';\n\nclass BoxBlurMaterial extends BlitMaterial\n{\n constructor()\n {\n super(frag);\n this.uniforms._SampleDir = { value: new Vector2() };\n }\n}\n\nexport { BoxBlurMaterial };\n","import { BoxBlurMaterial } from '../materials/BoxBlurMaterial';\nimport { Graphics } from '../Graphics';\n\nimport { WebGLRenderTarget } from 'three';\n\nclass Blurrer\n{\n constructor(renderer)\n {\n this.RT1 = new WebGLRenderTarget(1, 1);\n this.RT2 = new WebGLRenderTarget(1, 1);\n this.box_blur_mat = new BoxBlurMaterial();\n }\n\n blur(RT)\n {\n if (RT.width !== this.RT1.width || RT.height !== this.RT1.height)\n {\n this.RT1.setSize(RT.width, RT.height);\n this.RT2.setSize(RT.width, RT.height);\n }\n\n this.box_blur_mat.uniforms._SampleDir.value.set(1, 0);\n Graphics.blit(RT, this.RT1, this.box_blur_mat);\n this.box_blur_mat.uniforms._SampleDir.value.set(0, 1);\n Graphics.blit(this.RT1, RT, this.box_blur_mat);\n // return this.RT2;\n }\n}\n\nexport { Blurrer };\n","import { CameraManager } from '../CameraManager';\nimport { Graphics } from '../Graphics';\nimport { DisplayNormalTextureMaterial } from '../materials/DisplayNormalTextureMaterial';\nimport { SSAOComposeMaterial } from '../materials/SSAOComposeMaterial';\nimport { SSAOMaterial } from '../materials/SSAOMaterial';\nimport { OScreen } from '../OScreen';\nimport { BaseRender } from '../render_mode/BaseRender';\nimport { Blurrer } from '../render_utilities/Blurrer';\nimport { SceneManager } from '../SceneManager';\n\nimport { WebGLRenderTarget } from 'three';\n\nclass NormalAORender extends BaseRender\n{\n constructor(use_ssaa = false)\n {\n super();\n\n this.ssao_mat = new SSAOMaterial();\n this.ssao_compose_mat = new SSAOComposeMaterial();\n this.debug_normals = new DisplayNormalTextureMaterial();\n\n this.ssaa = use_ssaa ? 2 : 1;\n\n this.main_RT = new WebGLRenderTarget(OScreen.width * this.ssaa, OScreen.height * this.ssaa);\n\n this.SSAO_RT = new WebGLRenderTarget(OScreen.width, OScreen.height);\n\n this.blurrer = new Blurrer();\n Graphics.generateDepthNormalTexture = true;\n }\n\n render()\n {\n this.__check_RT_size();\n\n Graphics.clear(this.main_RT, CameraManager.current, true, false);\n Graphics.render(SceneManager.current, CameraManager.current, this.main_RT);\n\n this.__update_uniforms();\n\n Graphics.blit(Graphics.depth_normals_RT, this.SSAO_RT, this.ssao_mat);\n\n // // BLUR\n this.blurrer.blur(this.SSAO_RT);\n Graphics.blit(this.SSAO_RT, undefined);\n\n // // COMPOSE\n this.ssao_compose_mat.uniforms._AO.value = this.SSAO_RT.texture;\n Graphics.blit(this.main_RT, undefined, this.ssao_compose_mat);\n\n // Graphics.blit(this.SSAO_RT, undefined);\n }\n\n __update_uniforms()\n {\n this.ssao_mat.uniforms._InverseProjMatrix.value.getInverse(CameraManager.current.projectionMatrix);\n this.ssao_mat.uniforms._ProjectionMatrix.value.copy(CameraManager.current.projectionMatrix);\n this.ssao_mat.uniforms._FarPlane.value = CameraManager.current.far;\n }\n\n __check_RT_size()\n {\n if (this.main_RT.width !== OScreen.width * this.ssaa || this.main_RT.height !== OScreen.height * this.ssaa)\n {\n this.main_RT.setSize(OScreen.width * this.ssaa, OScreen.height * this.ssaa);\n this.SSAO_RT.setSize(OScreen.width, OScreen.height);\n }\n }\n}\n\nexport { NormalAORender };\n","import { CameraManager } from '../CameraManager';\nimport { SceneManager } from '../SceneManager';\nimport { BaseRender } from '../render_mode/BaseRender';\nimport { Graphics } from '../Graphics';\n\nclass NormalRender extends BaseRender\n{\n constructor()\n {\n super();\n }\n\n render()\n {\n Graphics.clear(undefined, CameraManager.current, true, true);\n\n if (SceneManager.current.on_pre_render)\n {\n SceneManager.current.on_pre_render();\n }\n\n if (SceneManager.current.render)\n {\n SceneManager.current.render();\n }\n else\n {\n Graphics.render(SceneManager.current, CameraManager.current);\n }\n\n if (SceneManager.current.on_post_render)\n {\n SceneManager.current.on_post_render();\n }\n }\n}\n\nexport { NormalRender };\n","import { BlitMaterial } from './BlitMaterial';\n\nimport frag from '../shaders/gaussian_blur/gaussian_blur.frag';\n\nimport { Vector2 } from 'three';\n\nclass GaussianBlurMaterial extends BlitMaterial\n{\n constructor(kernel_radius, use_half_float)\n {\n super(frag, undefined, {\n KERNEL_RADIUS: kernel_radius,\n SIGMA: kernel_radius\n });\n\n this.uniforms.texSize = { value: new Vector2(0.5, 0.5) };\n this.uniforms.direction = { value: new Vector2(0.5, 0.5) };\n this.uniforms.radius = { value: 1 };\n\n this.defines.USE_LINEAR_COLOR_SPACE = true;\n }\n\n set_size(w, h)\n {\n this.uniforms.texSize.value.x = w;\n this.uniforms.texSize.value.y = h;\n }\n\n set_direction(x, y)\n {\n this.uniforms.direction.value.set(x, y);\n }\n\n set_radius(value = 1)\n {\n this.uniforms.radius.value = value;\n }\n}\n\nexport { GaussianBlurMaterial };\n","import { BlitMaterial } from './BlitMaterial';\n\nimport frag from '../shaders/luminosity_high_pass/luminosity_high_pass.frag';\n\nimport { Color } from 'three';\nclass LuminosityHighPassMaterial extends BlitMaterial\n{\n constructor(use_half_float)\n {\n super(frag);\n\n this.uniforms.luminosityThreshold = { value: 0.23 };\n this.uniforms.smoothWidth = { value: 0.01 };\n this.uniforms.defaultColor = { value: new Color('#000000') };\n this.uniforms.defaultOpacity = { value: 0.0 };\n\n this.defines.USE_LINEAR_COLOR_SPACE = true;\n }\n\n set_threshold(value_01)\n {\n this.uniforms.luminosityThreshold.value = value_01;\n }\n}\n\nexport { LuminosityHighPassMaterial };\n","import { GaussianBlurMaterial } from '../materials/GaussianBlurMaterial';\nimport { LuminosityHighPassMaterial } from '../materials/LuminosityHighPassMaterial';\nimport { Graphics } from '../Graphics';\n\nimport { WebGLRenderTarget, LinearFilter, RGBAFormat, HalfFloatType, UnsignedByteType, SRGBColorSpace, LinearSRGBColorSpace } from 'three';\n\nclass GaussianBlurrer\n{\n constructor(use_half_float = false)\n {\n this.current_width = 1;\n this.current_height = 1;\n\n this.separableBlurMaterials = [];\n this.renderTargetsHorizontal = [];\n this.renderTargetsVertical = [];\n this.use_half_float = use_half_float;\n this.nMips = 5;\n this.kernelSizeArray = [3, 5, 7, 9, 11];\n this.rt_pars = {\n minFilter: LinearFilter,\n magFilter: LinearFilter,\n format: RGBAFormat,\n type: use_half_float ? HalfFloatType : UnsignedByteType,\n colorSpace: use_half_float ? LinearSRGBColorSpace : SRGBColorSpace\n };\n\n this.renderTargetBright = new WebGLRenderTarget(1, 1, this.rt_pars);\n this.renderTargetBright.texture.generateMipmaps = false;\n\n this.init_materials();\n this.init_RT();\n\n this.luminosity_high_pass_mat = new LuminosityHighPassMaterial(use_half_float);\n }\n\n blur(RT, use_luminosity_high_pass)\n {\n this.resize_RT(RT.width, RT.height);\n\n let inputRenderTarget = RT;\n\n if (use_luminosity_high_pass)\n {\n Graphics.blit(RT, this.renderTargetBright, this.luminosity_high_pass_mat);\n inputRenderTarget = this.renderTargetBright;\n }\n\n for (let i = 0; i < this.nMips; i++)\n {\n const mat = this.separableBlurMaterials[i];\n\n mat.set_direction(1, 0);\n Graphics.blit(inputRenderTarget, this.renderTargetsHorizontal[i], mat);\n\n mat.set_direction(0, 1);\n Graphics.blit(this.renderTargetsHorizontal[i], this.renderTargetsVertical[i], mat);\n\n inputRenderTarget = this.renderTargetsVertical[i];\n }\n }\n\n get_blurred_texture()\n {\n return this.renderTargetsHorizontal[0].texture;\n }\n\n get_blurred_RT()\n {\n return this.renderTargetsHorizontal[0];\n }\n\n init_RT()\n {\n this.dispose_RT();\n\n this.renderTargetBright.setSize(1, 1);\n\n for (let i = 0; i < this.nMips; i++)\n {\n const hor = new WebGLRenderTarget(1, 1, this.rt_pars);\n const ver = new WebGLRenderTarget(1, 1, this.rt_pars);\n\n hor.texture.generateMipmaps = false;\n ver.texture.generateMipmaps = false;\n\n hor.texture.colorSpace = this.rt_pars.colorSpace;\n ver.texture.colorSpace = this.rt_pars.colorSpace;\n\n this.renderTargetsHorizontal.push(hor);\n this.renderTargetsVertical.push(ver);\n }\n }\n\n resize_RT(texture_width, texture_height)\n {\n if (this.current_width === texture_width && this.current_height === texture_height)\n {\n return;\n }\n\n this.current_width = texture_width;\n this.current_height = texture_height;\n\n let width = Math.round(texture_width / 2);\n let height = Math.round(texture_height / 2);\n\n this.renderTargetBright.setSize(width, height);\n\n for (let i = 0; i < this.nMips; i++)\n {\n this.renderTargetsVertical[i].setSize(width, height);\n this.renderTargetsHorizontal[i].setSize(width, height);\n this.separableBlurMaterials[i].set_size(width, height);\n\n width = Math.round(width / 2);\n height = Math.round(height / 2);\n }\n }\n\n init_materials()\n {\n this.dispose_materials();\n\n for (let i = 0; i < this.nMips; i++)\n {\n this.separableBlurMaterials.push(new GaussianBlurMaterial(this.kernelSizeArray[i], this.use_half_float));\n }\n }\n\n set_radius(value)\n {\n for (let i = 0; i < this.separableBlurMaterials.length; i++)\n {\n this.separableBlurMaterials[i].set_radius(value);\n }\n }\n\n set_luminosity_threshold(value)\n {\n this.luminosity_high_pass_mat.set_threshold(value);\n }\n\n dispose_materials()\n {\n for (let i = 0; i < this.separableBlurMaterials.length; i++)\n {\n this.separableBlurMaterials[i].dispose();\n }\n this.separableBlurMaterials.length = 0;\n }\n\n dispose_RT()\n {\n for (let i = 0; i < this.renderTargetsVertical.length; i++)\n {\n this.renderTargetsHorizontal[i].dispose();\n this.renderTargetsVertical[i].dispose();\n }\n this.renderTargetBright.dispose();\n\n this.renderTargetsHorizontal.length = 0;\n this.renderTargetsVertical.length = 0;\n }\n}\n\nexport { GaussianBlurrer };\n","import { OScreen } from '../OScreen';\nimport { BaseRender } from '../render_mode/BaseRender';\nimport { UnrealBloomComposeMaterial } from '../materials/UnrealBloomComposeMaterial';\nimport { AddMaterial } from '../materials/AddMaterial';\n\nimport { HalfFloatType, LinearSRGBColorSpace, NearestFilter, RGBAFormat, UnsignedByteType, WebGLRenderTarget } from 'three';\n\nimport { GaussianBlurrer } from '../render_utilities/GaussianBlurrer';\nimport { Graphics } from '../Graphics';\nimport { CameraManager } from '../CameraManager';\nimport { SceneManager } from '../SceneManager';\n\nclass UnrealBloomRender extends BaseRender\n{\n constructor(use_antialiasing, use_half_float, use_hight_luminosity_pass, use_rendering_size = false)\n {\n super();\n\n this.add_mat = new AddMaterial(use_half_float);\n\n const rt_settings = {\n samples: use_antialiasing ? 8 : 1,\n type: use_half_float ? HalfFloatType : UnsignedByteType,\n format: RGBAFormat,\n colorSpace: LinearSRGBColorSpace,\n minFilter: NearestFilter,\n magFilter: NearestFilter\n };\n this.use_rendering_size = use_rendering_size;\n this.main_RT = new WebGLRenderTarget(1, 1, rt_settings);\n this.main_RT.texture.colorSpace = LinearSRGBColorSpace;\n this.main_RT.texture.minFilter = NearestFilter;\n this.main_RT.texture.magFilter = NearestFilter;\n\n this.bloom_compose_mat = new UnrealBloomComposeMaterial(5, use_half_float);\n this.blurrer = new GaussianBlurrer(use_half_float);\n this.use_hight_luminosity_pass = use_hight_luminosity_pass;\n this.luminosity_threshold = 0.5;\n }\n\n on_enter()\n {\n this.bloom_compose_mat.set_RT_0(this.blurrer.renderTargetsVertical[0].texture);\n this.bloom_compose_mat.set_RT_1(this.blurrer.renderTargetsVertical[1].texture);\n this.bloom_compose_mat.set_RT_2(this.blurrer.renderTargetsVertical[2].texture);\n this.bloom_compose_mat.set_RT_3(this.blurrer.renderTargetsVertical[3].texture);\n this.bloom_compose_mat.set_RT_4(this.blurrer.renderTargetsVertical[4].texture);\n\n this.add_mat.set_add_texture(this.blurrer.renderTargetsHorizontal[0].texture);\n }\n\n render()\n {\n this.__check_RT_size();\n\n Graphics.clear(this.main_RT, CameraManager.current, true, false);\n Graphics.render(SceneManager.current, CameraManager.current, this.main_RT);\n\n // // // BLUR\n this.blurrer.blur(this.main_RT, this.use_hight_luminosity_pass);\n\n // // Blur compose\n Graphics.material_pass(this.bloom_compose_mat, this.blurrer.renderTargetsHorizontal[0]);\n\n // // Additive blend\n // Graphics.clear(undefined, CameraManager.current, true, false);\n // Graphics.render(SceneManager.current, CameraManager.current);\n Graphics.blit(this.main_RT, undefined, this.add_mat);\n }\n\n set_bloom_strength(val)\n {\n this.bloom_compose_mat.set_bloom_strength(val);\n }\n\n set_bloom_radius(val)\n {\n // this.bloom_compose_mat.set_bloom_radius(val);\n this.blurrer.set_radius(val);\n }\n\n set_luminosity_threshold(value)\n {\n this.blurrer.set_luminosity_threshold(value);\n }\n\n set_tint_color_0(col_string)\n {\n this.bloom_compose_mat.set_tint_color_0(col_string);\n }\n\n set_tint_color_1(col_string)\n {\n this.bloom_compose_mat.set_tint_color_1(col_string);\n }\n\n set_tint_color_2(col_string)\n {\n this.bloom_compose_mat.set_tint_color_2(col_string);\n }\n\n set_tint_color_3(col_string)\n {\n this.bloom_compose_mat.set_tint_color_3(col_string);\n }\n\n set_tint_color_4(col_string)\n {\n this.bloom_compose_mat.set_tint_color_4(col_string);\n }\n\n __check_RT_size()\n {\n const width = this.use_rendering_size ? OScreen.render_width : OScreen.width;\n const height = this.use_rendering_size ? OScreen.render_height : OScreen.height;\n if (this.main_RT.width !== width || this.main_RT.height !== height)\n {\n this.main_RT.setSize(width, height);\n }\n }\n}\n\nexport { UnrealBloomRender };\n","import { CameraManager } from '../CameraManager';\nimport { SceneManager } from '../SceneManager';\nimport { BaseRender } from '../render_mode/BaseRender';\nimport { Graphics } from '../Graphics';\n\nclass VRRender extends BaseRender\n{\n constructor()\n {\n super();\n }\n\n render()\n {\n // Graphics.clear(undefined, CameraManager.current, true, true);\n\n if (SceneManager.current.on_pre_render)\n {\n SceneManager.current.on_pre_render();\n }\n\n if (SceneManager.current.render)\n {\n SceneManager.current.render();\n }\n else\n {\n Graphics.render(SceneManager.current, CameraManager.current, Graphics._renderer.getRenderTarget());\n }\n\n this.render_spectator_camera();\n\n if (SceneManager.current.on_post_render)\n {\n SceneManager.current.on_post_render();\n }\n }\n\n render_spectator_camera()\n {\n const spectator_camera = CameraManager.spectator;\n\n if (spectator_camera && Graphics._renderer.xr.isPresenting)\n {\n // Copy the XR Camera's position and rotation, but use your\n // main camera's projection matrix\n const xrCam = Graphics._renderer.xr.getCamera(CameraManager.current);\n\n spectator_camera.projectionMatrix.copy(CameraManager.current.projectionMatrix);\n\n spectator_camera.position.copy(xrCam.position);\n spectator_camera.quaternion.copy(xrCam.quaternion);\n\n // we'll restore this later\n const currentRenderTarget = Graphics._renderer.getRenderTarget();\n\n // turn off the WebXR rendering\n Graphics._renderer.xr.isPresenting = false;\n\n // render to the canvas on our main display\n Graphics._renderer.setRenderTarget(null);\n Graphics._renderer.render(SceneManager.current, spectator_camera);\n\n // reset back to enable WebXR\n Graphics._renderer.setRenderTarget(currentRenderTarget);\n Graphics._renderer.xr.isPresenting = true;\n }\n }\n}\n\nexport { VRRender };\n","// @ts-check\nimport { Vector2 } from 'three'; // eslint-disable-line\nimport { OScreen } from './OScreen';\n\nclass Screen\n{\n init()\n {\n console.warn('Screen Singleton is deprecated. Please use OScreen.');\n OScreen.init();\n }\n\n /**\n * @param {number} x\n * @param {number} y\n */\n update_position(x, y)\n {\n console.warn('Screen Singleton is deprecated. Please use OScreen.');\n OScreen.update_position(x, y);\n }\n\n update()\n {\n console.warn('Screen Singleton is deprecated. Please use OScreen.');\n OScreen.update();\n }\n\n /**\n * @param {number} width\n * @param {number} height\n */\n update_size(width, height)\n {\n console.warn('Screen Singleton is deprecated. Please use OScreen.');\n OScreen.update_size(width, height);\n }\n\n /**\n * @param {Vector2} vector2\n */\n apply_pixel_density_v2(vector2)\n {\n console.warn('Screen Singleton is deprecated. Please use OScreen.');\n return OScreen.apply_pixel_density_v2(vector2);\n }\n\n /**\n * @param {number} value\n */\n apply_pixel_density(value)\n {\n console.warn('Screen Singleton is deprecated. Please use OScreen.');\n return OScreen.apply_pixel_density(value);\n }\n\n get_pixel_size()\n {\n console.warn('Screen Singleton is deprecated. Please use OScreen.');\n return OScreen.get_pixel_size();\n }\n\n get aspect_ratio()\n {\n console.warn('Screen Singleton is deprecated. Please use OScreen.');\n return OScreen.aspect_ratio;\n }\n}\n\nconst screen = new Screen();\nexport { screen as Screen };\n","import { ViewComponentManager } from './ViewComponentManager';\n\nexport class ViewComponent\n{\n constructor({ name, container })\n {\n this.name = name;\n this.container = container;\n this.hidden = true;\n\n ViewComponentManager.register_component(this);\n }\n\n start()\n {\n }\n\n on_enter()\n {\n this.container.classList.remove('hidden');\n ViewComponentManager.enable_component(this);\n\n this.hidden = false;\n }\n\n update()\n {\n }\n\n on_exit()\n {\n this.container.classList.add('hidden');\n ViewComponentManager.disable_component(this);\n\n this.hidden = true;\n }\n\n set_opacity(current_state_data)\n {\n this.container.style.opacity = current_state_data[`${this.name}_opacity`];\n this.toggle_hidden();\n }\n\n toggle_hidden()\n {\n if (this.container.style.opacity > 0.001)\n {\n if (this.hidden)\n {\n this.on_enter();\n }\n }\n else\n {\n if (!this.hidden)\n {\n this.on_exit();\n }\n }\n }\n}\n","// @ts-check\nimport { Material, Mesh } from 'three'; // eslint-disable-line no-unused-vars\nimport { MeshBasicMaterial } from 'three';\nimport { PlaneGeometry } from 'three';\n\nclass HorizontalPlane extends Mesh\n{\n /**\n * @param {number} [width]\n * @param {number} [height]\n * @param {number | string} [color]\n * @param {Material} [material]\n */\n constructor(width, height, color, material)\n {\n width = width || 1;\n height = height || 1;\n color = color || '#FF0000';\n material = material || new MeshBasicMaterial({ color: color });\n\n const geometry = new PlaneGeometry(width, height);\n geometry.rotateX(-3.14 / 2);\n super(geometry, material);\n }\n}\n\nexport { HorizontalPlane };\n","// @ts-check\nimport { Material, Mesh } from 'three'; // eslint-disable-line no-unused-vars\nimport { PlaneGeometry } from 'three';\nimport { MeshBasicMaterial } from 'three';\n\nclass VerticalPlane extends Mesh\n{\n /**\n * @param {number} [width]\n * @param {number} [height]\n * @param {number | string} [color]\n * @param {Material} [material]\n */\n constructor(width, height, color, material)\n {\n width = width || 1;\n height = height || 1;\n color = color || '#FF0000';\n material = material || new MeshBasicMaterial({ color: color });\n\n const geometry = new PlaneGeometry(width, height);\n super(geometry, material);\n }\n}\n\nexport { VerticalPlane };\n","class ArrayUtilities\n{\n constructor()\n {}\n\n static merge_from_to(source, target)\n {\n target.push.apply(target, source);\n }\n\n static expand_vec3_array(array, size)\n {\n const items_left_count = size - array.length;\n\n for (let i = 0; i < items_left_count; i++)\n {\n array.push(array[i].clone());\n }\n }\n\n static remove_elem(array, elem)\n {\n const index = array.indexOf(elem);\n if (index > -1)\n {\n array.splice(index, 1);\n }\n }\n\n static get_closest_point(points, target)\n {\n let closest_point = points[0];\n let closest_distance = closest_point.distanceTo(target);\n for (let i = 1; i < points.length; i++)\n {\n if (points[i].distanceTo(target) < closest_distance)\n {\n closest_point = points[i];\n closest_distance = points[i].distanceTo(target);\n }\n }\n return closest_point;\n }\n\n static object_values_to_array(obj)\n {\n const ids = Object.keys(obj);\n const arr = [];\n for (let i = 0; i < ids.length; i++)\n {\n arr.push(obj[ids[i]]);\n }\n return arr;\n }\n}\n\nexport { ArrayUtilities };\n","import { Line3, Plane, Quaternion, Sphere, Vector3 } from 'three';\n\nclass FrustumPointFitter\n{\n constructor()\n {\n this.sphere = new Sphere();\n }\n\n fit_points(points, camera_quaternion, vertical_fov, aspect)\n {\n this.sphere.setFromPoints(points);\n\n const v_fov = Math.degToRad(vertical_fov / 2);\n const h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;\n\n const up_plane_normal = this.get_up_plane_normal(camera_quaternion, v_fov);\n const down_plane_normal = this.get_down_plane_normal(camera_quaternion, v_fov);\n const left_plane_normal = this.get_left_plane_normal(camera_quaternion, h_fov);\n const right_plane_normal = this.get_right_plane_normal(camera_quaternion, h_fov);\n\n const camera_forward_dir = new Vector3(0, 0, -1).applyQuaternion(camera_quaternion);\n\n const sphere_center = this.sphere.center.clone();\n\n const pull_back_distance = this.get_distance_to_fit_rect(this.sphere.radius * 2, this.sphere.radius * 2, vertical_fov, aspect);\n const far_pos = sphere_center.clone().add(camera_forward_dir.clone().multiplyScalar(pull_back_distance * -1));\n\n const up_plane = new Plane().setFromNormalAndCoplanarPoint(up_plane_normal, far_pos);\n const down_plane = new Plane().setFromNormalAndCoplanarPoint(down_plane_normal, far_pos);\n\n const left_plane = new Plane().setFromNormalAndCoplanarPoint(left_plane_normal, far_pos);\n const right_plane = new Plane().setFromNormalAndCoplanarPoint(right_plane_normal, far_pos);\n\n this.apply_center_correction_to_pos(far_pos, points, camera_quaternion, up_plane, down_plane, left_plane, right_plane);\n\n up_plane.setFromNormalAndCoplanarPoint(up_plane_normal, far_pos);\n down_plane.setFromNormalAndCoplanarPoint(down_plane_normal, far_pos);\n\n left_plane.setFromNormalAndCoplanarPoint(left_plane_normal, far_pos);\n right_plane.setFromNormalAndCoplanarPoint(right_plane_normal, far_pos);\n\n let closest_distance = Infinity;\n\n const inverse_dir = camera_forward_dir.clone().multiplyScalar(pull_back_distance * -2);\n for (let i = 0; i < points.length; i++)\n {\n const line = new Line3(points[i].clone(), points[i].clone().add(inverse_dir));\n\n const up_line_intersection = new Vector3();\n const down_line_intersection = new Vector3();\n\n const left_line_intersection = new Vector3();\n const right_line_intersection = new Vector3();\n\n up_plane.intersectLine(line, up_line_intersection);\n down_plane.intersectLine(line, down_line_intersection);\n\n left_plane.intersectLine(line, left_line_intersection);\n right_plane.intersectLine(line, right_line_intersection);\n\n if (up_line_intersection.length() < 0.0001)\n {\n console.log('up intersection not found', i);\n }\n if (down_line_intersection.length() < 0.0001)\n {\n console.log('down intersection not found', i);\n }\n if (left_line_intersection.length() < 0.0001)\n {\n console.log('left intersection not found', i);\n }\n if (right_line_intersection.length() < 0.0001)\n {\n console.log('right intersection not found', i);\n }\n\n const new_up_distance = points[i].clone().sub(up_line_intersection).length();\n const new_down_distance = points[i].clone().sub(down_line_intersection).length();\n\n const new_left_distance = points[i].clone().sub(left_line_intersection).length();\n const new_right_distance = points[i].clone().sub(right_line_intersection).length();\n\n const vertical_min = Math.min(new_up_distance, new_down_distance);\n const horizontal_min = Math.min(new_left_distance, new_right_distance);\n\n const min = Math.min(vertical_min, horizontal_min);\n\n if (min < closest_distance)\n {\n closest_distance = min;\n }\n }\n\n const forward_correction = camera_forward_dir.clone().multiplyScalar(closest_distance);\n const closest_position = far_pos.clone().add(forward_correction);\n\n return closest_position;\n }\n\n apply_center_correction_to_pos(target_pos, points, camera_quaternion, up_plane, down_plane, left_plane, right_plane)\n {\n const vertical_offset = this.get_vertical_correction(points, down_plane, up_plane, camera_quaternion);\n const horizontal_offset = this.get_hozirontal_correction(points, left_plane, right_plane, camera_quaternion);\n\n target_pos.add(vertical_offset);\n target_pos.add(horizontal_offset);\n }\n\n get_vertical_correction(points, down_plane, up_plane, camera_quaternion)\n {\n let closest_distance_to_up_plane = Infinity;\n let closest_distance_to_down_plane = Infinity;\n let closest_up_point = undefined;\n let closest_down_point = undefined;\n\n const up_dir = new Vector3(0, 1, 0).applyQuaternion(camera_quaternion);\n for (let i = 0; i < points.length; i++)\n {\n const down_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(-5000000)));\n const up_line = new Line3(points[i].clone(), points[i].clone().add(up_dir.clone().multiplyScalar(5000000)));\n\n const down_line_intersection = new Vector3();\n const up_line_intersection = new Vector3();\n\n down_plane.intersectLine(down_line, down_line_intersection);\n up_plane.intersectLine(up_line, up_line_intersection);\n\n const down_dist = down_line_intersection.distanceTo(points[i]);\n const up_dist = up_line_intersection.distanceTo(points[i]);\n\n if (up_line_intersection.length() < 0.0001)\n {\n console.log('vertical up intersection not found', i);\n }\n if (down_line_intersection.length() < 0.0001)\n {\n console.log('vertical down intersection not found', i);\n }\n\n if (down_dist < closest_distance_to_down_plane)\n {\n closest_distance_to_down_plane = down_dist;\n closest_down_point = points[i];\n }\n if (up_dist < closest_distance_to_up_plane)\n {\n closest_distance_to_up_plane = up_dist;\n closest_up_point = points[i];\n }\n }\n\n console.log(closest_up_point, closest_down_point);\n\n const correction = (closest_distance_to_up_plane - closest_distance_to_down_plane) / 2;\n\n // console.log(\"vertical_correction\", correction)\n return up_dir.clone().multiplyScalar(-correction);\n }\n\n get_hozirontal_correction(points, left_plane, right_plane, camera_quaternion)\n {\n let closest_distance_to_right_plane = Infinity;\n let closest_distance_to_left_plane = Infinity;\n let closest_right_point = undefined;\n let closest_left_point = undefined;\n\n const right_dir = new Vector3(1, 0, 0).applyQuaternion(camera_quaternion);\n\n for (let i = 0; i < points.length; i++)\n {\n const left_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(-5000000)));\n const right_line = new Line3(points[i].clone(), points[i].clone().add(right_dir.clone().multiplyScalar(5000000)));\n\n const left_line_intersection = new Vector3();\n const right_line_intersection = new Vector3();\n\n left_plane.intersectLine(left_line, left_line_intersection);\n right_plane.intersectLine(right_line, right_line_intersection);\n\n const left_dist = left_line_intersection.distanceTo(points[i]);\n const right_dist = right_line_intersection.distanceTo(points[i]);\n\n if (left_line_intersection.length() < 0.0001)\n {\n console.log('left intersection not found', i);\n }\n if (right_line_intersection.length() < 0.0001)\n {\n console.log('right intersection not found', i);\n }\n\n if (left_dist < closest_distance_to_left_plane)\n {\n closest_distance_to_left_plane = left_dist;\n closest_left_point = points[i];\n }\n if (right_dist < closest_distance_to_right_plane)\n {\n closest_distance_to_right_plane = right_dist;\n closest_right_point = points[i];\n }\n }\n\n const correction = (closest_distance_to_right_plane - closest_distance_to_left_plane) / 2;\n // console.log(\"horizontal_correction\", correction)\n\n console.log(closest_right_point, closest_left_point);\n\n return right_dir.clone().multiplyScalar(-correction);\n }\n\n get_up_plane_normal(camera_quaternion, v_fov)\n {\n const up_plane_normal = new Vector3(0, -1, 0);\n up_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), v_fov));\n up_plane_normal.applyQuaternion(camera_quaternion);\n return up_plane_normal;\n }\n\n get_down_plane_normal(camera_quaternion, v_fov)\n {\n const down_plane_normal = new Vector3(0, 1, 0);\n down_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), -v_fov));\n down_plane_normal.applyQuaternion(camera_quaternion);\n return down_plane_normal;\n }\n\n get_left_plane_normal(camera_quaternion, h_fov)\n {\n const left_plane_normal = new Vector3(1, 0, 0);\n left_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), h_fov));\n left_plane_normal.applyQuaternion(camera_quaternion);\n return left_plane_normal;\n }\n\n get_right_plane_normal(camera_quaternion, h_fov)\n {\n const right_plane_normal = new Vector3(-1, 0, 0);\n right_plane_normal.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), -h_fov));\n right_plane_normal.applyQuaternion(camera_quaternion);\n return right_plane_normal;\n }\n\n get_distance_to_fit_rect(width, height, vertical_fov, aspect)\n {\n const v_fov = (vertical_fov / 2) * Math.PI / 180;\n const h_fov = (2 * Math.atan(Math.tan(v_fov) * aspect)) / 2;\n\n const distV = height / Math.tan(v_fov);\n const distH = width / Math.tan(h_fov);\n return Math.max(Math.abs(distH), Math.abs(distV));\n }\n}\n\nexport { FrustumPointFitter };\n","import { BufferAttribute } from 'three';\nimport { BufferGeometry } from 'three';\n\nclass GeometryUtilities\n{\n static convert_to_non_indexed_geometry(geometry_buffer)\n {\n const indices = geometry_buffer.index;\n const positions = geometry_buffer.getAttribute('position');\n\n const bar_coordinates = [];\n const vertices = [];\n\n for (let i = 0; i < indices.count; i += 3)\n {\n // VERTEX 1\n vertices.push(positions.getX(indices.array[i + 0]));\n vertices.push(positions.getY(indices.array[i + 0]));\n vertices.push(positions.getZ(indices.array[i + 0]));\n\n bar_coordinates.push(1);\n bar_coordinates.push(0);\n bar_coordinates.push(0);\n\n // VERTEX 2\n\n vertices.push(positions.getX(indices.array[i + 1]));\n vertices.push(positions.getY(indices.array[i + 1]));\n vertices.push(positions.getZ(indices.array[i + 1]));\n\n bar_coordinates.push(0);\n bar_coordinates.push(1);\n bar_coordinates.push(0);\n\n // VERTEX 3\n\n vertices.push(positions.getX(indices.array[i + 2]));\n vertices.push(positions.getY(indices.array[i + 2]));\n vertices.push(positions.getZ(indices.array[i + 2]));\n\n bar_coordinates.push(0);\n bar_coordinates.push(0);\n bar_coordinates.push(1);\n }\n\n const geometry = new BufferGeometry();\n // geometry.setAttribute('barycentric', new BufferAttribute( new Float32Array(bar_coordinates), 3 ));\n geometry.setAttribute('position', new BufferAttribute(new Float32Array(vertices), 3));\n GeometryUtilities.add_barycentric_attribute(geometry);\n return geometry;\n }\n\n static add_barycentric_attribute(non_indexed_geometry_buffer)\n {\n const bar_coordinates = [];\n const positions = non_indexed_geometry_buffer.getAttribute('position');\n\n for (let i = 0; i < positions.count; i += 3)\n {\n bar_coordinates.push(1);\n bar_coordinates.push(0);\n bar_coordinates.push(0);\n\n bar_coordinates.push(0);\n bar_coordinates.push(1);\n bar_coordinates.push(0);\n\n bar_coordinates.push(0);\n bar_coordinates.push(0);\n bar_coordinates.push(1);\n }\n non_indexed_geometry_buffer.setAttribute('barycentric', new BufferAttribute(new Float32Array(bar_coordinates), 3));\n }\n}\n\nexport { GeometryUtilities };\n","class HTMLUtilities\n{\n static load_images(container)\n {\n const images = container.querySelectorAll('img');\n\n for (let i = 0; i < images.length; i++)\n {\n const image = images[i];\n\n if (image.dataset.src)\n {\n image.src = image.dataset.src;\n }\n }\n\n const image_objects = container.querySelectorAll('object');\n\n for (let i = 0; i < image_objects.length; i++)\n {\n const image_object = image_objects[i];\n\n if (image_object.dataset.src)\n {\n image_object.data = image_object.dataset.src;\n }\n }\n }\n\n static load_videos(container)\n {\n const videos = container.querySelectorAll('video');\n\n for (let i = 0; i < videos.length; i++)\n {\n const video = videos[i];\n\n if (video.dataset.src)\n {\n video.src = video.dataset.src;\n }\n }\n }\n\n static load_iframes(container)\n {\n const iframes = container.querySelectorAll('iframe');\n\n for (let i = 0; i < iframes.length; i++)\n {\n const iframe = iframes[i];\n\n if (iframe.dataset.src)\n {\n iframe.src = iframe.dataset.src;\n }\n }\n }\n\n static load_elements(container, selector)\n {\n const elements = container.querySelectorAll(selector);\n\n for (let i = 0; i < elements.length; i++)\n {\n const element = elements[i];\n\n if (element.dataset.src)\n {\n element.src = element.dataset.src;\n }\n }\n }\n}\n\nexport { HTMLUtilities };\n","import { Vector4 } from 'three';\n\nclass ImageUtilities\n{\n constructor()\n { }\n\n static get_image_data(image)\n {\n const canvas = document.createElement('canvas');\n canvas.width = image.width;\n canvas.height = image.height;\n\n const context = canvas.getContext('2d');\n context.drawImage(image, 0, 0);\n\n return context.getImageData(0, 0, image.width, image.height);\n }\n\n static get_pixel(imagedata, x, y)\n {\n const position = (x + imagedata.width * y) * 4;\n const data = imagedata.data;\n return new Vector4(data[position + 0], data[position + 1], data[position + 2], data[position + 3]);\n }\n}\n\nexport { ImageUtilities };\n","import { Vector3 } from 'three';\nimport { Vector2 } from 'three';\nclass MeshSampler\n{\n constructor()\n {\n\n }\n\n sample(buffer_geometry, sample_count)\n {\n const face_areas = [];\n\n let min_area = 99999999;\n\n const vertices = buffer_geometry.getAttribute('position');\n const normals = buffer_geometry.getAttribute('normal');\n const tangents = buffer_geometry.getAttribute('tangent');\n const uvs = buffer_geometry.getAttribute('uv');\n const indices = buffer_geometry.index;\n\n const faces = [];\n\n for (let i = 0; i < indices.count; i += 3)\n {\n const index_0 = indices.array[i + 0];\n const index_1 = indices.array[i + 1];\n const index_2 = indices.array[i + 2];\n\n const v1 = new Vector3();\n v1.x = vertices.getX(index_0);\n v1.y = vertices.getY(index_0);\n v1.z = vertices.getZ(index_0);\n\n const v2 = new Vector3();\n v2.x = vertices.getX(index_1);\n v2.y = vertices.getY(index_1);\n v2.z = vertices.getZ(index_1);\n\n const v3 = new Vector3();\n v3.x = vertices.getX(index_2);\n v3.y = vertices.getY(index_2);\n v3.z = vertices.getZ(index_2);\n\n const face = {\n a: v1,\n b: v2,\n c: v3\n };\n\n if (normals)\n {\n const n1 = new Vector3();\n n1.x = normals.getX(index_0);\n n1.y = normals.getY(index_0);\n n1.z = normals.getZ(index_0);\n\n const n2 = new Vector3();\n n2.x = normals.getX(index_1);\n n2.y = normals.getY(index_1);\n n2.z = normals.getZ(index_1);\n\n const n3 = new Vector3();\n n3.x = normals.getX(index_2);\n n3.y = normals.getY(index_2);\n n3.z = normals.getZ(index_2);\n\n const normal = n1.clone().add(n2).add(n3).normalize();\n face.normal = normal;\n }\n\n if (tangents)\n {\n const n1 = new Vector3();\n n1.x = tangents.getX(index_0);\n n1.y = tangents.getY(index_0);\n n1.z = tangents.getZ(index_0);\n\n const n2 = new Vector3();\n n2.x = tangents.getX(index_1);\n n2.y = tangents.getY(index_1);\n n2.z = tangents.getZ(index_1);\n\n const n3 = new Vector3();\n n3.x = tangents.getX(index_2);\n n3.y = tangents.getY(index_2);\n n3.z = tangents.getZ(index_2);\n\n const tangent = n1.clone().add(n2).add(n3).normalize();\n face.tangent = tangent;\n }\n if (uvs)\n {\n const uv_a = new Vector2();\n uv_a.x = uvs.getX(index_0);\n uv_a.y = uvs.getY(index_0);\n\n const uv_b = new Vector2();\n uv_b.x = uvs.getX(index_1);\n uv_b.y = uvs.getY(index_1);\n\n const uv_c = new Vector2();\n uv_c.x = uvs.getX(index_2);\n uv_c.y = uvs.getY(index_2);\n\n face.uv_a = uv_a;\n face.uv_b = uv_b;\n face.uv_c = uv_c;\n }\n\n faces.push(face);\n\n const area = this.get_face_area(face);\n min_area = Math.min(area, min_area);\n face_areas.push(area);\n }\n\n const normalized_faces_array = this.get_uniform_face_distribution(face_areas, min_area, faces);\n const selected_faces = this.select_random_faces(normalized_faces_array, sample_count);\n const sampled_data = this.sample_data_from_faces(selected_faces);\n return sampled_data;\n }\n\n sample_data_from_faces(faces)\n {\n const sampled_points = [];\n const sampled_normals = [];\n const sampled_tangents = [];\n const sampled_uvs = [];\n\n for (let i = 0; i < faces.length; i++)\n {\n const face = faces[i];\n\n const w1 = Math.random();\n const w2 = Math.random();\n\n sampled_points.push(this.sample_point_in_face(w1, w2, face.a, face.b, face.c).clone());\n if (face.normal)\n {\n sampled_normals.push(face.normal.clone());\n }\n if (face.tangent)\n {\n sampled_tangents.push(face.tangent.clone());\n }\n if (face.uv_a)\n {\n sampled_uvs.push(this.sample_point_in_face(w1, w2, face.uv_a, face.uv_b, face.uv_c).clone());\n }\n }\n return { points: sampled_points, normals: sampled_normals, tangents: sampled_tangents, uvs: sampled_uvs };\n }\n\n select_random_faces(faces, amount)\n {\n const selected_faces = [];\n for (let i = 0; i < amount; i++)\n {\n const random = Math.floor(Math.random() * faces.length);\n const selected_face = faces[random];\n\n selected_faces.push(selected_face);\n }\n\n return selected_faces;\n }\n\n get_uniform_face_distribution(face_areas, minimum_area, faces)\n {\n const extended_triangle_indices = [];\n for (let i = 0; i < face_areas.length; i++)\n {\n face_areas[i] /= minimum_area;\n const repetitions_needed = Math.floor(Math.round(face_areas[i]));\n for (let j = 0; j < repetitions_needed; j++)\n {\n extended_triangle_indices.push(faces[i]);\n }\n }\n return extended_triangle_indices;\n }\n\n get_face_area(face)\n {\n const vec1 = face.b.clone().sub(face.a);\n const vec2 = face.c.clone().sub(face.a);\n return vec1.cross(vec2).length() / 2;\n }\n\n sample_point_in_face(w1, w2, v1, v2, v3)\n {\n if (w1 + w2 > 1)\n {\n w1 = 1.0 - w1;\n w2 = 1.0 - w2;\n }\n\n const w3 = 1.0 - (w1 + w2);\n\n return v1.clone().multiplyScalar(w1).add(v2.clone().multiplyScalar(w2)).add(v3.clone().multiplyScalar(w3));\n }\n}\n\nconst mesh_sampler = new MeshSampler();\nexport { mesh_sampler as MeshSampler };\n","import { Mesh } from 'three';\nimport { BufferGeometry } from 'three';\nimport { Skeleton } from 'three';\n\nclass ModelUtilities\n{\n get_mesh(scene, result_callback)\n {\n scene.traverse((child) =>\n {\n if (child instanceof Mesh)\n {\n if (child.geometry)\n {\n child.geometry = new BufferGeometry().fromGeometry(child.geometry);\n }\n result_callback(child);\n }\n });\n }\n\n get_geometries(scene)\n {\n const geometries = [];\n\n this.get_mesh(scene, (child) =>\n {\n geometries.push(child.geometry);\n });\n return geometries;\n }\n\n assign_material(scene, material, name)\n {\n scene.traverse((child) =>\n {\n if (child instanceof Mesh)\n {\n // assign to all if no name is given\n if (name === undefined)\n {\n child.material = material;\n }\n else\n {\n // if name is given, assign only to that\n if (child.name === name)\n {\n child.material = material;\n }\n }\n }\n });\n }\n\n clone_animated_gltf(gltf)\n {\n const clone = {\n animations: gltf.animations,\n scene: gltf.scene.clone(true)\n };\n\n const skinnedMeshes = {};\n\n gltf.scene.traverse(node =>\n {\n if (node.isSkinnedMesh)\n {\n skinnedMeshes[node.name] = node;\n }\n });\n\n const cloneBones = {};\n const cloneSkinnedMeshes = {};\n\n clone.scene.traverse(node =>\n {\n if (node.isBone)\n {\n cloneBones[node.name] = node;\n }\n\n if (node.isSkinnedMesh)\n {\n cloneSkinnedMeshes[node.name] = node;\n }\n });\n\n for (const name in skinnedMeshes)\n {\n const skinnedMesh = skinnedMeshes[name];\n const skeleton = skinnedMesh.skeleton;\n const cloneSkinnedMesh = cloneSkinnedMeshes[name];\n\n const orderedCloneBones = [];\n\n for (let i = 0; i < skeleton.bones.length; ++i)\n {\n const cloneBone = cloneBones[skeleton.bones[i].name];\n orderedCloneBones.push(cloneBone);\n }\n\n cloneSkinnedMesh.bind(\n new Skeleton(orderedCloneBones, skeleton.boneInverses),\n cloneSkinnedMesh.matrixWorld);\n }\n\n return clone;\n }\n\n set_shadow_config(scene, cast, receive)\n {\n scene.traverse((child) =>\n {\n if (child instanceof Mesh)\n {\n child.castShadow = cast;\n child.receiveShadow = receive;\n }\n });\n }\n\n __find_object(scene, object_name, result_callback)\n {\n scene.traverse((obj) =>\n {\n if (obj.name === object_name)\n {\n result_callback(obj);\n }\n });\n }\n\n get_object(scene, object_name)\n {\n let object = undefined;\n scene.traverse((obj) =>\n {\n if (obj.name === object_name)\n {\n object = obj;\n }\n });\n return object;\n }\n\n get_object_by_type(scene, object_type)\n {\n let object = undefined;\n scene.traverse((obj) =>\n {\n if (obj.constructor.name === object_type)\n {\n object = obj;\n }\n });\n return object;\n }\n}\n\nconst model_utilities = new ModelUtilities();\nexport { model_utilities as ModelUtilities };\n","class ObjectUtilities\r\n{\r\n static is_object(item)\r\n {\r\n return (item && typeof item === 'object' && !Array.isArray(item));\r\n }\r\n\r\n static merge_deep(target, ...sources)\r\n {\r\n if (!sources.length) return target;\r\n const source = sources.shift();\r\n\r\n if (ObjectUtilities.is_object(target) && ObjectUtilities.is_object(source))\r\n {\r\n for (const key in source)\r\n {\r\n if (ObjectUtilities.is_object(source[key]))\r\n {\r\n if (!target[key]) Object.assign(target, { [key]: {} });\r\n ObjectUtilities.merge_deep(target[key], source[key]);\r\n }\r\n else\r\n {\r\n Object.assign(target, { [key]: source[key] });\r\n }\r\n }\r\n }\r\n\r\n return ObjectUtilities.merge_deep(target, ...sources);\r\n }\r\n\r\n static xml_to_json(xml)\r\n {\r\n // Create the return object\r\n let obj = {};\r\n\r\n if (xml.nodeType === 1)\r\n { // element\r\n // do attributes\r\n if (xml.attributes.length > 0)\r\n {\r\n obj['@attributes'] = {};\r\n for (let j = 0; j < xml.attributes.length; j++)\r\n {\r\n const attribute = xml.attributes.item(j);\r\n obj['@attributes'][attribute.nodeName] = attribute.nodeValue;\r\n }\r\n }\r\n }\r\n else if (xml.nodeType === 3)\r\n { // text\r\n obj = xml.nodeValue;\r\n }\r\n\r\n // do children\r\n if (xml.hasChildNodes())\r\n {\r\n for (let i = 0; i < xml.childNodes.length; i++)\r\n {\r\n const item = xml.childNodes.item(i);\r\n const nodeName = item.nodeName;\r\n if (typeof (obj[nodeName]) === 'undefined')\r\n {\r\n obj[nodeName] = this.xml_to_json(item);\r\n }\r\n else\r\n {\r\n if (typeof (obj[nodeName].push) === 'undefined')\r\n {\r\n const old = obj[nodeName];\r\n obj[nodeName] = [];\r\n obj[nodeName].push(old);\r\n }\r\n obj[nodeName].push(this.xml_to_json(item));\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n}\r\n\r\nexport { ObjectUtilities };\r\n","class StringUtilities\n{\n constructor()\n {}\n\n static get_random_color()\n {\n const hexValues = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F'];\n let hex = '#';\n\n for (let i = 0; i < 6; i++)\n {\n const index = Math.floor(Math.random() * hexValues.length);\n hex += hexValues[index];\n }\n\n return hex;\n }\n\n static capitalize(string)\n {\n const words = string.split(' ');\n\n for (let i = 0; i < words.length; i++)\n {\n words[i] = words[i][0].toUpperCase() + words[i].substr(1);\n }\n\n return words.join(' ');\n }\n\n static capitalize_first_letter(string)\n {\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n static snake_to_camelcase(string)\n {\n return string.toLowerCase().replace(/[-_][a-z0-9]/g, (group) => group.slice(-1).toUpperCase());\n }\n}\n\nexport { StringUtilities };\n","class TimeUtilities\n{\n constructor()\n {}\n\n // Converts a time string (00:00:00.45) into miliseconds\n time_str_to_ms(time_str)\n {\n time_str = time_str.split(':');\n\n let hours = Number(time_str[0]);\n hours = hours * 60 * 60 * 1000;\n\n let minutes = Number(time_str[1]);\n minutes = minutes * 60 * 1000;\n\n let seconds = Number(time_str[2]);\n seconds = seconds * 1000;\n\n return hours + minutes + seconds;\n }\n}\n\nexport { TimeUtilities };\n","class Validation\n{\n constructor()\n {}\n\n static is_int(n)\n {\n return Number(n) === n && n % 1 === 0;\n }\n\n static is_float(n)\n {\n return Number(n) === n && n % 1 !== 0;\n }\n\n static is_number(n)\n {\n return this.is_int(n) || this.is_float(n);\n }\n\n static is_json(str)\n {\n try\n {\n JSON.parse(str);\n }\n catch (e)\n {\n return false;\n }\n\n return true;\n }\n}\n\nexport { Validation };\n","// @ts-check\n// @ts-ignore\nimport grid_frag from '../shaders/grid/grid.frag';\n// @ts-ignore\nimport grid_vert from '../shaders/grid/grid.vert';\n\nimport { GeometryUtilities } from '../utilities/GeometryUtilities';\n\nimport { Mesh } from 'three';\nimport { ShaderMaterial } from 'three';\nimport { Color } from 'three';\nimport { PlaneGeometry } from 'three';\n\nclass Grid extends Mesh\n{\n constructor()\n {\n const material = new ShaderMaterial({\n uniforms: {\n _Color: { value: new Color('#919191') }\n },\n vertexShader: grid_vert,\n fragmentShader: grid_frag,\n // @ts-ignore\n extensions: { derivatives: true },\n transparent: true,\n depthWrite: false\n });\n\n const plane_geometry = new PlaneGeometry(100, 100, 100, 100);\n\n const non_indexed_geometry = GeometryUtilities.convert_to_non_indexed_geometry(plane_geometry);\n\n super(non_indexed_geometry, material);\n\n this.rotation.x = -3.14 / 2;\n }\n}\n\nexport { Grid };\n","// @ts-check\n// @ts-ignore\nimport line_vs from '../shaders/basic_line/basic_line.vert';\n// @ts-ignore\nimport line_fs from '../shaders/basic_line/basic_line.frag';\n\nimport { Mesh, Vector3 } from 'three'; // eslint-disable-line no-unused-vars\nimport { BufferAttribute } from 'three';\nimport { BufferGeometry } from 'three';\nimport { ShaderMaterial } from 'three';\nimport { Color } from 'three';\n\nclass Line extends Mesh\n{\n /**\n * @param {Vector3[]} [points]\n */\n constructor(points)\n {\n const geometry = new BufferGeometry();\n geometry.setAttribute('position', new BufferAttribute(new Float32Array([]), 3));\n geometry.setAttribute('next_position', new BufferAttribute(new Float32Array([]), 3));\n geometry.setAttribute('previous_position', new BufferAttribute(new Float32Array([]), 3));\n geometry.setAttribute('orientation', new BufferAttribute(new Float32Array([]), 1));\n geometry.setAttribute('coverage', new BufferAttribute(new Float32Array([]), 1));\n\n const material = new ShaderMaterial({\n uniforms: {\n _Thickness: { value: 0.2 },\n _Length: { value: 0 },\n _ElapsedTime: { value: 0 },\n _Color: { value: new Color('#FF0000') }\n },\n vertexShader: line_vs,\n fragmentShader: line_fs,\n transparent: true,\n depthWrite: false,\n // @ts-ignore\n extensions: { derivatives: true }\n\n });\n\n super(geometry, material);\n this.material = material;\n if (points)\n {\n this.setup(points);\n }\n }\n\n /**\n * @param {Vector3[]} points\n */\n setup(points)\n {\n const vertices = [];\n const next_position = [];\n const previous_position = [];\n const orientation = [];\n const coverage = [];\n let accumulated_length = 0;\n\n for (let i = 0; i < points.length; i++)\n {\n vertices.push(points[i].x);\n vertices.push(points[i].y);\n vertices.push(points[i].z);\n orientation.push(1);\n\n vertices.push(points[i].x);\n vertices.push(points[i].y);\n vertices.push(points[i].z);\n orientation.push(-1);\n\n const next_point = this.__get_next_position(points, i);\n next_position.push(next_point.x);\n next_position.push(next_point.y);\n next_position.push(next_point.z);\n\n next_position.push(next_point.x);\n next_position.push(next_point.y);\n next_position.push(next_point.z);\n\n const previous_point = this.__get_previous_position(points, i);\n previous_position.push(previous_point.x);\n previous_position.push(previous_point.y);\n previous_position.push(previous_point.z);\n\n previous_position.push(previous_point.x);\n previous_position.push(previous_point.y);\n previous_position.push(previous_point.z);\n\n coverage.push(accumulated_length);\n coverage.push(accumulated_length);\n\n if (i < points.length - 1)\n {\n accumulated_length += points[i].distanceTo(next_point);\n }\n }\n const vertexList = new Float32Array(vertices);\n const nextPositionList = new Float32Array(next_position);\n const previousPositionList = new Float32Array(previous_position);\n const orientationList = new Float32Array(orientation);\n const coverageList = new Float32Array(coverage);\n\n const indices = [];\n for (let i = 0; i < ((vertexList.length / 3) - 2) / 2; i++)\n {\n const index = (i * 2) + 1;\n indices.push(index);\n indices.push(index + 1);\n indices.push(index - 1);\n\n indices.push(index);\n indices.push(index + 2);\n indices.push(index + 1);\n }\n\n this.geometry.setIndex(indices);\n /** @type {BufferAttribute} */(this.geometry.getAttribute('position')).copy(new BufferAttribute(vertexList, 3));\n /** @type {BufferAttribute} */(this.geometry.getAttribute('next_position')).copy(new BufferAttribute(nextPositionList, 3));\n /** @type {BufferAttribute} */(this.geometry.getAttribute('previous_position')).copy(new BufferAttribute(previousPositionList, 3));\n /** @type {BufferAttribute} */(this.geometry.getAttribute('orientation')).copy(new BufferAttribute(orientationList, 1));\n /** @type {BufferAttribute} */(this.geometry.getAttribute('coverage')).copy(new BufferAttribute(coverageList, 1));\n\n this.geometry.getAttribute('position').needsUpdate = true;\n this.geometry.getAttribute('next_position').needsUpdate = true;\n this.geometry.getAttribute('previous_position').needsUpdate = true;\n this.geometry.getAttribute('orientation').needsUpdate = true;\n this.geometry.getAttribute('coverage').needsUpdate = true;\n\n this.material.uniforms._Length.value = accumulated_length;\n this._length = accumulated_length;\n this.accumulated_length = accumulated_length;\n }\n\n set thickness(value)\n {\n this.material.uniforms._Thickness.value = value;\n }\n\n get thickness()\n {\n return this.material.uniforms._Thickness.value;\n }\n\n /**\n * @param {Vector3[]} points\n * @param {number} i\n * @returns {Vector3}\n */\n __get_previous_position(points, i)\n {\n if (i === 0)\n {\n return points[1].clone().sub(points[0]).multiplyScalar(-1).add(points[0]);\n }\n else\n {\n return points[i - 1];\n }\n }\n\n /**\n * @param {Vector3[]} points\n * @param {number} i\n * @returns {Vector3}\n */\n __get_next_position(points, i)\n {\n if (i === points.length - 1)\n {\n return points[points.length - 2].clone().sub(points[points.length - 1]).multiplyScalar(-1).add(points[points.length - 1]);\n }\n else\n {\n return points[i + 1];\n }\n }\n\n update()\n {\n }\n\n distance()\n {\n return this.accumulated_length;\n }\n\n total_length()\n {\n return this.accumulated_length;\n }\n\n dispose()\n {\n this.geometry.dispose();\n this.material.dispose();\n if (this.parent)\n {\n this.parent.remove(this);\n }\n }\n\n set color(col)\n {\n this.material.uniforms._Color.value.set(col);\n }\n\n get color()\n {\n return this.material.uniforms._Color.value;\n }\n\n /**\n * @param {Color} col\n */\n copy_color(col)\n {\n this.material.uniforms._Color.value.copy(col);\n }\n}\n\nexport { Line };\n","// @ts-check\n// @ts-ignore\nimport basic_texture_vert from '../shaders/basic_texture/basic_texture.vert';\n// @ts-ignore\nimport basic_texture_frag from '../shaders/basic_texture/basic_texture.frag';\n\nimport { Mesh, Texture } from 'three'; // eslint-disable-line no-unused-vars\nimport { Vector2 } from 'three';\nimport { ShaderMaterial } from 'three';\nimport { DoubleSide } from 'three';\nimport { PlaneGeometry } from 'three';\nimport { Vector3 } from 'three';\n\nclass WorldImage extends Mesh\n{\n /**\n * @param {Texture} texture\n * @param {Vector2} [pivot]\n */\n constructor(texture, pivot)\n {\n pivot = pivot || new Vector2(0, 0);\n const material = new ShaderMaterial({\n uniforms: {\n _MainTex: { value: texture },\n _ScreenAligned: { value: 0 },\n _Scale: { value: 1 },\n _Opacity: { value: 1 }\n },\n vertexShader: basic_texture_vert,\n fragmentShader: basic_texture_frag,\n transparent: true,\n depthWrite: false,\n side: DoubleSide\n });\n const geometry = new PlaneGeometry(1, 1, 1);\n geometry.translate(-pivot.x / 2, -pivot.y / 2, 0);\n const current_scale = texture.image.width / texture.image.height;\n geometry.scale(current_scale, 1, 1);\n super(geometry, material);\n this.current_scale = current_scale;\n this.geometry.computeBoundingBox();\n\n this.tmp_bb_size = new Vector3();\n this.geometry.boundingBox.getSize(this.tmp_bb_size);\n this.material = material;\n }\n\n update_texture()\n {\n this.material.uniforms._MainTex.value.needsUpdate = true;\n const img = this.material.uniforms._MainTex.value.image;\n\n this.geometry.scale(1 / this.current_scale, 1, 1);\n this.current_scale = img.width / img.height;\n this.geometry.scale(this.current_scale, 1, 1);\n this.geometry.computeBoundingBox();\n this.geometry.boundingBox.getSize(this.tmp_bb_size);\n }\n\n get size()\n {\n return this.tmp_bb_size.clone().multiplyScalar(this.scale.x);\n }\n\n set size(value)\n {\n this.scale.copy(value);\n this.material.uniforms._Scale.value = value;\n }\n\n set screen_aligned(boolean)\n {\n this.material.uniforms._ScreenAligned.value = boolean === true ? 1 : 0;\n }\n\n get screen_aligned()\n {\n return this.material.uniforms._ScreenAligned.value === 1;\n }\n\n set opacity(opacity)\n {\n this.material.uniforms._Opacity.value = opacity;\n }\n\n get opacity()\n {\n return this.material.uniforms._Opacity.value;\n }\n\n dispose()\n {\n this.geometry.dispose();\n this.parent.remove(this);\n this.material.uniforms._MainTex.value.dispose();\n this.material.dispose();\n }\n}\n\nexport { WorldImage };\n","// @ts-check\nimport { WorldImage } from './WorldImage';\nimport { SimpleTextDrawer } from '../canvas_drawer/SimpleTextDrawer';\n\nimport { LinearMipMapLinearFilter, Vector2 } from 'three'; // eslint-disable-line no-unused-vars\nimport { LinearFilter } from 'three';\n\nclass Text2D extends WorldImage\n{\n /**\n * @param {string} text\n * @param {string} font\n * @param {string | Number} color\n * @param {Vector2} pivot\n * @param {boolean} [is_static]\n */\n constructor(text, font, color, pivot, is_static) // eslint-disable-line no-unused-vars\n {\n const simple_text_drawer = new SimpleTextDrawer();\n\n const draw_settings = {\n font: font,\n font_color: color || '#000000'\n };\n const canvas_texture = simple_text_drawer.draw_on_texture(text, draw_settings);\n\n canvas_texture.minFilter = LinearMipMapLinearFilter;\n canvas_texture.minFilter = LinearFilter;\n canvas_texture.needsUpdate = true;\n super(canvas_texture, pivot);\n\n this.simple_text_drawer = simple_text_drawer;\n this.canvas_texture = canvas_texture;\n this.draw_settings = draw_settings;\n }\n\n set text(value)\n {\n this.simple_text_drawer.draw_canvas(value, this.draw_settings);\n this.update_texture();\n }\n\n get text()\n {\n return 'not implemented';\n }\n}\n\nexport { Text2D };\n","// @ts-check\nimport { BufferGeometry, Material, Mesh } from 'three'; // eslint-disable-line no-unused-vars\n\nclass UpdatableMaterialMesh extends Mesh\n{\n /**\n * @param {BufferGeometry} geometry\n * @param {Material} material\n */\n constructor(geometry, material)\n {\n super(geometry, material);\n this.material = material;\n const self = this;\n\n this.onBeforeRender = () =>\n {\n if ('update' in self.material && typeof self.material.update === 'function')\n {\n self.material.update();\n }\n };\n }\n}\n\nexport { UpdatableMaterialMesh };\n","import { Vector2, Vector4 } from 'three';\n\nclass TextGlyph\n{\n constructor(offset, plane_bounds, atlas_bounds)\n {\n const width = plane_bounds.right - plane_bounds.left;\n const height = plane_bounds.top - plane_bounds.bottom;\n\n this.scale = new Vector2(width, height);\n this.position = new Vector2(offset + plane_bounds.left, plane_bounds.bottom);\n\n this.atlas_bounds = new Vector4(atlas_bounds.left, atlas_bounds.right, atlas_bounds.top, atlas_bounds.bottom);\n }\n}\n\nexport { TextGlyph };\n","import { Vector3, Quaternion, Matrix4, Color, Box2, Vector2 } from 'three';\nimport { TextGlyph } from './TextGlyph';\n\nclass SDFText\n{\n constructor(glyph_layout, text = '')\n {\n this.glyph_layout = glyph_layout;\n\n this.glyphs = [];\n\n this.glyph_is_dirty = true;\n this.matrix_is_dirty = true;\n this.color_is_dirty = true;\n\n this.position = new Vector3();\n this.quaternion = new Quaternion();\n this.scale = new Vector3(1, 1, 1);\n this.matrix = new Matrix4();\n\n this.color = new Color('#FFFFFF');\n\n this.pivot_point = new Vector2();\n this.__opacity = 1;\n\n this.__text = text;\n\n this.__generate_glyphs(text);\n }\n\n set text(value)\n {\n this.__text = value;\n this.__generate_glyphs(value);\n this.matrix_is_dirty = true;\n }\n\n get text()\n {\n return this.__text;\n }\n\n update_matrix()\n {\n this.matrix.compose(this.position, this.quaternion, this.scale);\n this.matrix_is_dirty = false;\n this.glyph_is_dirty = true;\n }\n\n clear_glyph_dirty()\n {\n this.glyph_is_dirty = false;\n }\n\n clear_color_dirty()\n {\n this.color_is_dirty = false;\n }\n\n set_rotation(orientation = 0, tilt = 0) // 0..360, -90..0..90\n {\n const new_orientation = new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), (orientation / 360) * Math.PI * 2);\n const new_tilt = new Quaternion().setFromAxisAngle(new Vector3(1, 0, 0), (-tilt / 360) * Math.PI * 2);\n\n this.quaternion.copy(new_orientation.multiply(new_tilt));\n this.matrix_is_dirty = true;\n }\n\n set_position(pos)\n {\n this.position.copy(pos);\n this.matrix_is_dirty = true;\n }\n\n set_size(size)\n {\n this.scale.set(size, size, size);\n this.matrix_is_dirty = true;\n }\n\n set_color(col)\n {\n this.color.set(col);\n this.color_is_dirty = true;\n }\n\n set_pivot(pivot)\n {\n this.pivot_point.copy(pivot);\n this.update_glyphs();\n }\n\n set opacity(op)\n {\n this.__opacity = op;\n this.color_is_dirty = true;\n }\n\n get opacity()\n {\n return this.__opacity;\n }\n\n update_glyphs()\n {\n this.__generate_glyphs(this.text);\n }\n\n __generate_glyphs(text)\n {\n let cursor = 0;\n\n this.glyphs.length = 0;\n\n for (let i = 0; i < text.length; i++)\n {\n const unicode = text.charCodeAt(i);\n const glyph = this.glyph_layout.find(element => element.unicode === unicode);\n if (glyph)\n {\n if (glyph.planeBounds)\n {\n const text_glyph = new TextGlyph(cursor, glyph.planeBounds, glyph.atlasBounds);\n this.glyphs.push(text_glyph);\n }\n cursor += glyph.advance;\n }\n }\n\n const box2 = new Box2();\n const first_glyph = this.glyphs[0];\n box2.setFromCenterAndSize(first_glyph.position.clone().add(new Vector2(first_glyph.scale.x / 2, first_glyph.scale.y / 2)), first_glyph.scale);\n\n for (let i = 1; i < this.glyphs.length; i++)\n {\n const g = this.glyphs[i];\n const box = new Box2().setFromCenterAndSize(g.position.clone().add(new Vector2(g.scale.x / 2, g.scale.y / 2)), g.scale);\n box2.union(box);\n }\n\n const box2_size = new Vector2();\n box2.getSize(box2_size);\n for (let i = 0; i < this.glyphs.length; i++)\n {\n this.glyphs[i].position.x -= box2_size.x / 2;\n this.glyphs[i].position.y -= box2_size.y / 2;\n\n this.glyphs[i].position.x += (box2_size.x / 2) * this.pivot_point.x;\n this.glyphs[i].position.y += (box2_size.y / 2) * this.pivot_point.y;\n }\n\n this.glyph_is_dirty = true;\n }\n}\n\nexport { SDFText };\n","import { BaseShaderMaterial } from './BaseShaderMaterial';\n\nimport frag from '../shaders/sdf_text/sdf_text.frag';\nimport vert from '../shaders/sdf_text/sdf_text.vert';\n\nimport { Vector2, DoubleSide, LinearFilter } from 'three';\nimport { OMath } from '../utilities/OMath';\n\nclass SDFTextMaterial extends BaseShaderMaterial\n{\n constructor(texture)\n {\n super(vert, frag, {\n _Texture: { value: texture },\n _Boldness: { value: 0.5 },\n _AtlasSize: { value: new Vector2(1, 1) }\n });\n\n this.transparent = true;\n this.extensions = {\n derivatives: true\n };\n this.depthWrite = false;\n this.side = DoubleSide;\n texture.minFilter = LinearFilter;\n texture.magFilter = LinearFilter;\n texture.generateMipMaps = false;\n }\n\n set_atlas_size(size)\n {\n this.uniforms._AtlasSize.value.copy(size);\n }\n\n set_boldness(value)\n {\n this.uniforms._Boldness.value = OMath.lerp(0.5, 0.2, value);\n }\n}\n\nexport { SDFTextMaterial };\n","import { SDFText } from './SDFText';\nimport { SDFTextMaterial } from '../../materials/SDFTextMaterial';\nimport { ArrayUtilities } from '../../utilities/ArrayUtilities';\n\nimport {\n PlaneGeometry,\n Mesh,\n Vector2,\n InstancedBufferGeometry,\n InstancedBufferAttribute,\n Float32BufferAttribute,\n DynamicDrawUsage\n} from 'three';\n\nclass SDFTextBatch extends Mesh\n{\n constructor(font_layout, atlas_texture)\n {\n const max_allocations = 2000;\n\n const instanced_geometry = new InstancedBufferGeometry();\n instanced_geometry.instanceCount = 0;\n\n const geometry = new PlaneGeometry(1, 1);\n geometry.translate(0.5, 0.5, 0);\n instanced_geometry.setAttribute('position', new Float32BufferAttribute(geometry.getAttribute('position').array, 3));\n instanced_geometry.setAttribute('uv', new Float32BufferAttribute(geometry.getAttribute('uv').array, 2));\n instanced_geometry.index = geometry.index;\n\n const transformsCol0 = new InstancedBufferAttribute(new Float32Array(max_allocations * 4), 4, false);\n const transformsCol1 = new InstancedBufferAttribute(new Float32Array(max_allocations * 4), 4, false);\n const transformsCol2 = new InstancedBufferAttribute(new Float32Array(max_allocations * 4), 4, false);\n const transformsCol3 = new InstancedBufferAttribute(new Float32Array(max_allocations * 4), 4, false);\n\n const glyph_bounds = new InstancedBufferAttribute(new Float32Array(max_allocations * 4), 4, false);\n const plane_bounds = new InstancedBufferAttribute(new Float32Array(max_allocations * 4), 4, false);\n\n const color = new InstancedBufferAttribute(new Float32Array(max_allocations * 4), 4, false);\n\n transformsCol0.usage = DynamicDrawUsage;\n transformsCol1.usage = DynamicDrawUsage;\n transformsCol2.usage = DynamicDrawUsage;\n transformsCol3.usage = DynamicDrawUsage;\n glyph_bounds.usage = DynamicDrawUsage;\n plane_bounds.usage = DynamicDrawUsage;\n color.usage = DynamicDrawUsage;\n\n instanced_geometry.setAttribute('transformsCol0', transformsCol0);\n instanced_geometry.setAttribute('transformsCol1', transformsCol1);\n instanced_geometry.setAttribute('transformsCol2', transformsCol2);\n instanced_geometry.setAttribute('transformsCol3', transformsCol3);\n\n instanced_geometry.setAttribute('glyph_bounds', glyph_bounds);\n instanced_geometry.setAttribute('plane_bounds', plane_bounds);\n instanced_geometry.setAttribute('color', color);\n\n super(instanced_geometry, new SDFTextMaterial(atlas_texture));\n\n this.text_elements = [];\n this.font_layout = font_layout;\n\n this.material.set_atlas_size(new Vector2(font_layout.atlas.width, font_layout.atlas.height));\n\n this.frustumCulled = false;\n }\n\n set_boldness(value)\n {\n this.material.set_boldness(value);\n }\n\n add_text(text_str)\n {\n const elem = new SDFText(this.font_layout.glyphs, text_str);\n this.text_elements.push(elem);\n return elem;\n }\n\n remove_text(text_elem)\n {\n ArrayUtilities.remove_elem(this.text_elements, text_elem);\n this.update(true);\n }\n\n update(force_update)\n {\n const glyph_bounds_atr = this.geometry.getAttribute('glyph_bounds');\n const plane_bounds_atr = this.geometry.getAttribute('plane_bounds');\n\n const transformsCol0 = this.geometry.getAttribute('transformsCol0');\n const transformsCol1 = this.geometry.getAttribute('transformsCol1');\n const transformsCol2 = this.geometry.getAttribute('transformsCol2');\n const transformsCol3 = this.geometry.getAttribute('transformsCol3');\n\n const color_atr = this.geometry.getAttribute('color');\n\n let matrix_needs_update = force_update === true;\n let glyph_needs_update = force_update === true;\n let color_needs_update = force_update === true;\n\n let glyph_count = 0;\n for (let i = 0; i < this.text_elements.length; i++)\n {\n const text = this.text_elements[i];\n\n if (text.matrix_is_dirty)\n {\n matrix_needs_update = true;\n text.update_matrix();\n }\n\n if (text.glyph_is_dirty)\n {\n glyph_needs_update = true;\n text.clear_glyph_dirty();\n }\n\n if (text.color_is_dirty)\n {\n color_needs_update = true;\n text.clear_color_dirty();\n }\n\n const matrix = text.matrix;\n const color = text.color;\n const opacity = text.opacity;\n\n for (let glyph_i = 0; glyph_i < text.glyphs.length; glyph_i++)\n {\n const glyph = text.glyphs[glyph_i];\n\n const buffer_i = glyph_count;\n\n glyph_bounds_atr.setXYZW(buffer_i, glyph.atlas_bounds.x, glyph.atlas_bounds.y, glyph.atlas_bounds.z, glyph.atlas_bounds.w);\n plane_bounds_atr.setXYZW(buffer_i, glyph.position.x, glyph.position.y, glyph.scale.x, glyph.scale.y);\n\n transformsCol0.setXYZW(buffer_i, matrix.elements[0],\n matrix.elements[1],\n matrix.elements[2],\n matrix.elements[3]);\n\n transformsCol1.setXYZW(buffer_i, matrix.elements[4],\n matrix.elements[5],\n matrix.elements[6],\n matrix.elements[7]);\n\n transformsCol2.setXYZW(buffer_i, matrix.elements[8],\n matrix.elements[9],\n matrix.elements[10],\n matrix.elements[11]);\n\n transformsCol3.setXYZW(buffer_i, matrix.elements[12],\n matrix.elements[13],\n matrix.elements[14],\n matrix.elements[15]);\n\n color_atr.setXYZW(buffer_i, color.r, color.g, color.b, opacity);\n\n glyph_count++;\n }\n }\n\n this.geometry.instanceCount = glyph_count;\n\n if (glyph_count > this.max_allocations)\n {\n console.error('SDFTextBatch exceeded maximum glyph allocations(max/current): ', this.max_allocations, glyph_count, this);\n }\n\n if (matrix_needs_update)\n {\n transformsCol0.needsUpdate = true;\n transformsCol1.needsUpdate = true;\n transformsCol2.needsUpdate = true;\n transformsCol3.needsUpdate = true;\n }\n if (glyph_needs_update)\n {\n glyph_bounds_atr.needsUpdate = true;\n plane_bounds_atr.needsUpdate = true;\n }\n if (color_needs_update)\n {\n color_atr.needsUpdate = true;\n }\n }\n\n dispose()\n {\n this.geometry.dispose();\n this.material.dispose();\n }\n}\n\nexport { SDFTextBatch };\n","// @ts-check\nimport { Vector3 } from 'three';\nimport { ActionInterpolator } from './ActionInterpolator';\n\nclass VectorInterpolator extends ActionInterpolator\n{\n /**\n * @param {string} attribute_name\n * @param {Vector3} [from]\n * @param {Vector3} [to]\n * @param {import('../utilities/EasingFunctions').EasingFunctionType | function} [easing_function]\n */\n constructor(attribute_name, from = new Vector3(), to = new Vector3(1, 1, 1), easing_function = 'linear')\n {\n super(easing_function);\n\n this.attribute_name = attribute_name;\n this.from = from;\n this.to = to;\n }\n\n /**\n * @param {any} context\n * @param {number} t\n */\n update(context, t)\n {\n const tmp = this.from.clone();\n tmp.lerp(this.to, this.easing_function(t));\n context[this.attribute_name].copy(tmp);\n }\n}\n\nexport { VectorInterpolator };\n","import { BlitMaterial } from './BlitMaterial';\n\nimport downsample_frag from '../shaders/dual_filter_blur/downsample.frag';\nimport upsample_frag from '../shaders/dual_filter_blur/upsample.frag';\n\nclass DualFilteringBlurMaterial extends BlitMaterial\n{\n constructor(upsample)\n {\n super(upsample ? upsample_frag : downsample_frag);\n }\n}\n\nexport { DualFilteringBlurMaterial };\n","import { BlitMaterial } from './BlitMaterial';\n\nimport frag from '../shaders/dual_filter_blur/alpha_filter.frag';\n\nclass AlphaFilterMaterial extends BlitMaterial\n{\n constructor(use_alpha_mask, upsample)\n {\n super(frag);\n }\n\n set offset(value)\n {\n this.uniforms._Offset.value = value;\n }\n\n get offset()\n {\n return this.uniforms._Offset.value;\n }\n}\n\nexport { AlphaFilterMaterial };\n","import { DualFilteringBlurMaterial } from '../materials/DualFilteringBlurMaterial';\nimport { AlphaFilterMaterial } from '../materials/AlphaFilterMaterial';\nimport { Graphics } from '../Graphics';\nimport { WebGLRenderTarget } from 'three';\nclass DualFilteringBlurrer\n{\n constructor(use_alpha_mask)\n {\n this.current_width = 1;\n this.current_height = 1;\n this.RT0 = new WebGLRenderTarget(1, 1);\n this.RT1 = new WebGLRenderTarget(1, 1);\n this.RT2 = new WebGLRenderTarget(1, 1);\n this.RT3 = new WebGLRenderTarget(1, 1);\n this.RT4 = new WebGLRenderTarget(1, 1);\n\n this.upscale_blur_mat = new DualFilteringBlurMaterial(true);\n this.downscale_blur_mat = new DualFilteringBlurMaterial(false);\n\n this.alpha_filter_mat = new AlphaFilterMaterial();\n }\n\n blur(RT)\n {\n this.check_RT_resize(RT.width, RT.height);\n Graphics.blit(RT, this.RT1, this.alpha_filter_mat);\n\n // Graphics.blit(this.RT0, this.RT1, this.downscale_blur_mat);\n Graphics.blit(this.RT1, this.RT2, this.downscale_blur_mat);\n Graphics.blit(this.RT2, this.RT3, this.downscale_blur_mat);\n Graphics.blit(this.RT3, this.RT4, this.downscale_blur_mat);\n\n // Graphics.blit(this.RT4, this.RT3, this.upscale_blur_mat);\n // Graphics.blit(this.RT3, this.RT4, this.upscale_blur_mat);\n Graphics.blit(this.RT4, this.RT3, this.upscale_blur_mat);\n Graphics.blit(this.RT3, this.RT2, this.upscale_blur_mat);\n Graphics.blit(this.RT2, RT, this.upscale_blur_mat);\n // Graphics.blit(this.RT1, RT, this.upscale_blur_mat);\n\n // return this.RT2;\n }\n\n check_RT_resize(width, height)\n {\n if (this.current_width !== width || this.current_height !== height)\n {\n this.current_width = width;\n this.current_height = height;\n this.RT0.setSize(this.current_width / 2, this.current_height / 2);\n this.RT1.setSize(this.current_width / 2, this.current_height / 2);\n this.RT2.setSize(this.current_width / 4, this.current_height / 4);\n this.RT3.setSize(this.current_width / 8, this.current_height / 8);\n this.RT4.setSize(this.current_width / 16, this.current_height / 16);\n }\n }\n}\n\nexport { DualFilteringBlurrer };\n","import { BlitMaterial } from '../materials/BlitMaterial';\n\nimport frag from '../shaders/median_filter/median_filter.frag';\n\nimport { Vector2 } from 'three';\n\nclass MedianFilterMaterial extends BlitMaterial\n{\n constructor()\n {\n super(frag, undefined, {\n kernel3x3: true\n });\n\n this.uniforms._SourceTex = { value: undefined };\n this.uniforms._SourceTexSize = { value: new Vector2(1, 1) };\n }\n\n set_texture(tex)\n {\n this.uniforms._SourceTex.value = tex;\n\n const size = this.get_size(tex);\n this.uniforms._SourceTexSize.value.copy(size);\n }\n\n get_size(tex)\n {\n if (tex.isVideoTexture)\n {\n return new Vector2(Math.max(1, tex.image.videoWidth), Math.max(1, tex.image.videoHeight));\n }\n if (tex.isWebGLRenderTarget)\n {\n return new Vector2(tex.width, tex.height);\n }\n if (tex.isTexture)\n {\n return new Vector2(tex.image.width, tex.image.height);\n }\n return new Vector2(1, 1);\n }\n}\n\nexport { MedianFilterMaterial };\n","import { MedianFilterMaterial } from '../materials/MedianFilterMaterial';\nimport { Graphics } from '../Graphics';\n\nimport { WebGLRenderTarget, Vector2, RGBAFormat, FloatType, NearestFilter } from 'three';\n\nclass MedianFilter\n{\n constructor(renderer)\n {\n this.RT = new WebGLRenderTarget(1, 1, {\n type: FloatType,\n format: RGBAFormat,\n minFilter: NearestFilter,\n magFilter: NearestFilter\n });\n this.RT1 = new WebGLRenderTarget(1, 1, {\n type: FloatType,\n format: RGBAFormat,\n minFilter: NearestFilter,\n magFilter: NearestFilter\n });\n\n this.median_filter_mat = new MedianFilterMaterial();\n }\n\n filter(texture)\n {\n const tex_size = this.get_size(texture);\n if (tex_size.x !== this.RT.width || tex_size.y !== this.RT.height)\n {\n this.RT.setSize(tex_size.x, tex_size.y);\n this.RT1.setSize(tex_size.x, tex_size.y);\n }\n\n this.median_filter_mat.set_texture(texture);\n Graphics.material_pass(this.median_filter_mat, this.RT);\n\n for (let i = 0; i < 0; i++)\n {\n this.median_filter_mat.set_texture(this.RT.texture);\n Graphics.material_pass(this.median_filter_mat, this.RT1);\n\n this.median_filter_mat.set_texture(this.RT1.texture);\n Graphics.material_pass(this.median_filter_mat, this.RT);\n }\n\n return this.RT;\n }\n\n get_size(tex)\n {\n if (tex.isVideoTexture)\n {\n return new Vector2(Math.max(1, tex.image.videoWidth), Math.max(1, tex.image.videoHeight));\n }\n if (tex.isWebGLRenderTarget)\n {\n return new Vector2(tex.width, tex.height);\n }\n if (tex.isTexture)\n {\n return new Vector2(tex.image.width, tex.image.height);\n }\n return new Vector2(1, 1);\n }\n}\n\nexport { MedianFilter };\n","import { Graphics } from '../Graphics';\n\nimport { FloatType, HalfFloatType, NearestFilter, NoColorSpace, RGBAFormat, WebGLRenderTarget } from 'three';\nimport { Capabilities } from '../Capabilities';\n\nclass ParticleAttribute\n{\n constructor(attr_name, update_material)\n {\n this.read = undefined;\n this.write = undefined;\n\n this.name = attr_name;\n\n this.update_material = update_material;\n }\n\n init_from_geometry(geometry)\n {\n // overrided by inheritance\n }\n\n init_from_attribute(particle_attribute)\n {\n\n }\n\n build_RT(particle_count)\n {\n const resolution = ParticleAttribute.calculate_resolution(particle_count);\n const options = {\n minFilter: NearestFilter,\n magFilter: NearestFilter,\n format: RGBAFormat,\n colorScape: NoColorSpace,\n type: Capabilities.fp_textures_available ? FloatType : HalfFloatType,\n stencilBuffer: false,\n depthBuffer: false\n };\n\n return new WebGLRenderTarget(resolution.width, resolution.height, options);\n }\n\n static calculate_resolution(particle_count)\n {\n const width = Math.min(particle_count, 512);\n const height = Math.max(1, Math.ceil(particle_count / width));\n return { width, height };\n }\n\n swap_RT()\n {\n const tmp = this.read;\n this.read = this.write;\n this.write = tmp;\n }\n\n update(attribute_writter_scene)\n {\n if (this.update_material)\n {\n this.update_material.update();\n attribute_writter_scene.children[0].material = this.update_material;\n this.update_material.uniforms._MainTex.value = this.read.texture;\n Graphics.render(attribute_writter_scene, undefined, this.write);\n attribute_writter_scene.children[0].material = undefined;\n\n this.swap_RT();\n }\n }\n\n store_geometry_attribute_in_RT(attribute, RT, storage_material, attribute_writter_scene)\n {\n attribute_writter_scene.children[0].geometry.setAttribute('data', attribute);\n attribute_writter_scene.children[0].material = storage_material;\n\n Graphics.render(attribute_writter_scene, undefined, RT);\n\n attribute_writter_scene.children[0].geometry.deleteAttribute('data');\n attribute_writter_scene.children[0].material = undefined;\n }\n\n get_texture()\n {\n return this.read.texture;\n }\n}\n\nexport { ParticleAttribute };\n","import { Object3D } from 'three';\nimport { BufferAttribute } from 'three';\nimport { PlaneGeometry } from 'three';\nimport { Mesh } from 'three';\nimport { BufferGeometry } from 'three';\nimport { Scene } from 'three';\nimport { Points } from 'three';\nimport { InstancedBufferGeometry } from 'three';\nimport { InstancedBufferAttribute } from 'three';\nimport { ParticleAttribute } from './ParticleAttribute';\n\nclass GPUParticleSystem extends Object3D\n{\n constructor(particle_count, material)\n {\n super();\n this.attributes = [];\n\n this.mesh = this.build_point_mesh(particle_count, material);\n this.add(this.mesh);\n\n this.attribute_writter_mesh = this.build_attribute_writter_mesh(particle_count);\n this.attribute_writter_scene = new Scene();\n this.attribute_writter_scene.add(this.attribute_writter_mesh);\n }\n\n add_texture_attribute(buffer_attribute)\n {\n this.attributes.push(buffer_attribute);\n }\n\n add_update_attribute_array(name, array, item_size)\n {\n this.attribute_writter_mesh.geometry.setAttribute(name, new BufferAttribute(array, item_size, false));\n }\n\n add_attribute_array(name, array, item_size)\n {\n this.mesh.geometry.setAttribute(name, new InstancedBufferAttribute(array, item_size, false));\n }\n\n update()\n {\n this.mesh.material.update();\n for (let i = 0; i < this.attributes.length; i++)\n {\n this.attributes[i].update(this.attribute_writter_scene);\n }\n }\n\n dispose()\n {\n this.mesh.geometry.dispose();\n this.mesh.material.dispose();\n }\n\n build_point_mesh(instance_count = 1, material)\n {\n const geo = new PlaneGeometry();\n\n const instanced_geo = new InstancedBufferGeometry();\n instanced_geo.setAttribute('position', geo.getAttribute('position'));\n instanced_geo.index = geo.index;\n\n instanced_geo.setAttribute('storage_uv', this.build_uv_storage_attribute(instance_count));\n instanced_geo.instanceCount = instance_count;\n const mesh = new Mesh(instanced_geo, material);\n mesh.frustumCulled = false;\n return mesh;\n }\n\n build_attribute_writter_mesh(particle_count)\n {\n const { width, height } = ParticleAttribute.calculate_resolution(particle_count);\n\n const uvs = new Float32Array(particle_count * 3);\n\n for (let i = 0; i < particle_count; i++)\n {\n const x = i % width;\n const y = Math.floor(i / width);\n uvs[i * 3 + 0] = (x + 0.5) / width;\n uvs[i * 3 + 1] = (y + 0.5) / height;\n uvs[i * 3 + 2] = i;\n }\n const geo = new BufferGeometry();\n geo.setAttribute('position', new BufferAttribute(uvs, 3, false));\n\n const points = new Points(geo);\n points.frustumCulled = false;\n return points;\n }\n\n build_uv_storage_attribute(particle_count)\n {\n const { width, height } = ParticleAttribute.calculate_resolution(particle_count);\n\n const uvs = new Float32Array(particle_count * 2);\n\n for (let i = 0; i < particle_count; i++)\n {\n const x = i % width;\n const y = Math.floor(i / width);\n uvs[i * 2 + 0] = (x + 0.5) / width;\n uvs[i * 2 + 1] = (y + 0.5) / height;\n }\n return new InstancedBufferAttribute(uvs, 2, false);\n }\n}\n\nexport { GPUParticleSystem };\n","import frag from '../../shaders/gpu_particles/generic_storage.frag';\n\nimport { ShaderMaterial } from 'three';\nimport { NoBlending } from 'three';\nimport { AlwaysDepth } from 'three';\n\nclass ParticleStorageMaterial extends ShaderMaterial\n{\n constructor()\n {\n const vert = `\n varying vec4 value;\n attribute vec4 data;\n\n void main()\n {\n gl_Position = vec4(position.xy * 2.0 - 1.0, 1.0,1.0);\n gl_PointSize = 1.0;\n\n value = data;\n }\n `;\n super({\n uniforms: {\n\n },\n vertexShader: vert,\n fragmentShader: frag,\n depthWrite: false,\n blending: NoBlending,\n depthTest: false,\n depthFunc: AlwaysDepth\n });\n }\n}\n\nexport { ParticleStorageMaterial };\n","import { BufferAttribute } from 'three';\n\nimport { ParticleAttribute } from '../gpu_particles/ParticleAttribute';\nimport { ParticleStorageMaterial } from '../materials/gpu_particles/ParticleStorageMaterial';\n\nclass ParticlePositionAttribute extends ParticleAttribute\n{\n constructor(update_material)\n {\n super('_Position', update_material);\n }\n\n store_geometry(geometry, attribute_writter_scene)\n {\n const pos_attr = geometry.getAttribute('position');\n this.read = this.build_RT(pos_attr.count);\n this.write = this.build_RT(pos_attr.count);\n\n const mat = new ParticleStorageMaterial();\n this.store_geometry_attribute_in_RT(geometry.getAttribute('position'), this.read, mat, attribute_writter_scene);\n }\n\n store_positions(positions, attribute_writter_scene)\n {\n this.read = this.build_RT(positions.length);\n this.write = this.build_RT(positions.length);\n\n const arr = new Float32Array(positions.length * 4);\n\n for (let i = 0; i < positions.length; i++)\n {\n arr[i * 4 + 0] = positions[i].x;\n arr[i * 4 + 1] = positions[i].y;\n arr[i * 4 + 2] = positions[i].z;\n arr[i * 4 + 3] = (Math.random() * 2 - 1) * 10;\n }\n const mat = new ParticleStorageMaterial();\n this.store_geometry_attribute_in_RT(new BufferAttribute(arr, 4), this.read, mat, attribute_writter_scene);\n }\n}\n\nexport { ParticlePositionAttribute };\n","import { DataTexture } from 'three';\n\nclass CustomDataTexture extends DataTexture\n{\n constructor(data, width, height, format, type)\n {\n super(data, width, height, format, type);\n this.multiplier = 1;\n }\n\n set_rgba(index, r, g, b, a)\n {\n this.data[index * 3 + 0] = r * this.multiplier;\n this.data[index * 3 + 1] = g * this.multiplier;\n this.data[index * 3 + 2] = b * this.multiplier;\n this.data[index * 3 + 3] = a * this.multiplier;\n this.needsUpdate = true;\n }\n\n set_rgb(index, r, g, b)\n {\n this.data[index * 3 + 0] = r * this.multiplier;\n this.data[index * 3 + 1] = g * this.multiplier;\n this.data[index * 3 + 2] = b * this.multiplier;\n this.needsUpdate = true;\n }\n\n set_r(index, value)\n {\n this.data[index * 3 + 0] = value * this.multiplier;\n this.needsUpdate = true;\n }\n\n set_g(index, value)\n {\n this.data[index * 3 + 1] = value * this.multiplier;\n this.needsUpdate = true;\n }\n\n set_b(index, value)\n {\n this.data[index * 3 + 2] = value * this.multiplier;\n this.needsUpdate = true;\n }\n\n set_a(index, value)\n {\n this.data[index * 3 + 2] = value * this.multiplier;\n this.needsUpdate = true;\n }\n}\n\nexport { CustomDataTexture };\n","import { RGBAFormat } from 'three';\nimport { CustomDataTexture } from './CustomDataTexture';\n\nclass RGBDataTexture extends CustomDataTexture\n{\n constructor(width, height)\n {\n const data = new Uint8Array(width * height * 3);\n super(data, width, height, RGBAFormat);\n this.multiplier = 255;\n }\n}\n\nexport { RGBDataTexture };\n","import { CustomDataTexture } from './CustomDataTexture';\nimport { RGBAFormat } from 'three';\n\nclass RGBADataTexture extends CustomDataTexture\n{\n constructor(width, height)\n {\n const data = new Uint8Array(width * height * 4);\n super(data, width, height, RGBAFormat);\n this.multiplier = 255;\n }\n}\n\nexport { RGBADataTexture };\n","import { FloatType, RGBAFormat } from 'three';\nimport { CustomDataTexture } from './CustomDataTexture';\n\nclass RGBFloatDataTexture extends CustomDataTexture\n{\n constructor(width, height)\n {\n const data = new Float32Array(width * height * 3);\n super(data, width, height, RGBAFormat, FloatType);\n }\n}\n\nexport { RGBFloatDataTexture };\n","import { CustomDataTexture } from './CustomDataTexture';\nimport { FloatType } from 'three';\nimport { RGBAFormat } from 'three';\n\nclass RGBAFloatDataTexture extends CustomDataTexture\n{\n constructor(width, height)\n {\n const data = new Float32Array(width * height * 4);\n super(data, width, height, RGBAFormat, FloatType);\n }\n}\n\nexport { RGBAFloatDataTexture };\n","import { Mesh } from 'three';\nimport { RGBDataTexture } from '../data_textures/RGBDataTexture';\nimport { RGBADataTexture } from '../data_textures/RGBADataTexture';\nimport { RGBFloatDataTexture } from '../data_textures/RGBFloatDataTexture';\nimport { RGBAFloatDataTexture } from '../data_textures/RGBAFloatDataTexture';\n\nclass BatchedMesh extends Mesh\n{\n constructor(id_table, geometry, material, max_texture_width)\n {\n super(geometry, material);\n\n this.id_table = id_table;\n this.batched_count = Object.keys(id_table).length;\n this.max_texture_width = max_texture_width;\n this.batch_width = this.batched_count % max_texture_width;\n this.batch_height = Math.ceil(this.batched_count / max_texture_width);\n }\n\n attach_rgb_texture(uniform_name)\n {\n this.material.uniforms[uniform_name].value = new RGBDataTexture(this.batch_width, this.batch_height);\n }\n\n attach_rgba_texture(uniform_name)\n {\n this.material.uniforms[uniform_name].value = new RGBADataTexture(this.batch_width, this.batch_height);\n }\n\n attach_rgb_float_texture(uniform_name)\n {\n this.material.uniforms[uniform_name].value = new RGBFloatDataTexture(this.batch_width, this.batch_height);\n }\n\n attach_rgba_float_texture(uniform_name)\n {\n this.material.uniforms[uniform_name].value = new RGBAFloatDataTexture(this.batch_width, this.batch_height);\n }\n\n get_mesh_index(name)\n {\n return this.id_table[name];\n }\n\n set_rgb_value(uniform_name, mesh_name, r, g, b)\n {\n this.material.uniforms[uniform_name].set_rgb(this.get_mesh_index(mesh_name), r, g, b);\n }\n\n set_rgba_value(uniform_name, mesh_name, r, g, b, a)\n {\n this.material.uniforms[uniform_name].set_rgba(this.get_mesh_index(mesh_name), r, g, b, a);\n }\n}\n\nexport { BatchedMesh };\n","import { BatchedMesh } from './BatchedMesh';\n\nimport * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js';\n\nimport { BufferAttribute } from 'three';\n\nclass MeshBatcher\n{\n batch(meshes, material)\n {\n const max_texture_width = 2048;\n // let texture_width = meshes.length % max_texture_width;\n // let texture_height = Math.ceil(meshes.length / max_texture_width);\n\n // console.log(\"Store count: \" + buffer_geometries.length + \", Texture size: \" +texture_width);\n\n const geometries = [];\n const id_table = {};\n\n const attr_mesh_id = [];\n\n for (let i = 0; i < meshes.length; i++)\n {\n const mesh = meshes[i];\n const vertex_count = mesh.geometry.getAttribute('position').count;\n\n for (let count = 0; count < vertex_count; count++)\n {\n attr_mesh_id.push(i);\n }\n\n geometries.push(mesh.geometry);\n\n if (id_table[mesh.name] === undefined)\n {\n id_table[mesh.name] = i;\n }\n else\n {\n console.error('Mesh name is duplicated when trying to merge meshes. Non-unique id error.', mesh.name, id_table);\n }\n }\n\n const buffer_geometry = BufferGeometryUtils.mergeGeometries(geometries);\n\n const buffer_attribute = new BufferAttribute(new Float32Array(attr_mesh_id), 1);\n buffer_geometry.setAttribute('mesh_id', buffer_attribute);\n\n return this.create_batched_mesh(id_table, buffer_geometry, material, max_texture_width);\n }\n\n create_batched_mesh(id_table, buffer_geometry, material, max_texture_width)\n {\n return new BatchedMesh(id_table, buffer_geometry, material, max_texture_width);\n }\n}\n\nexport { MeshBatcher };\n","import { AbstractLoader } from './AbstractLoader';\r\n\r\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js';\r\n\r\nclass DAELoader extends AbstractLoader\r\n{\r\n constructor(resource_id, url, size)\r\n {\r\n super(resource_id, url, size);\r\n this.loader = new ColladaLoader();\r\n }\r\n\r\n on_preloaded_finished(resource_container)\r\n {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n this.loader.load(this.url, (gltf) =>\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, gltf);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n },\r\n (xhr) =>\r\n {\r\n // if (xhr)\r\n // {\r\n // let total = xhr.total || this.total_bytes;\r\n // this.__update_downloaded_bytes(xhr.loaded, total);\r\n // }\r\n },\r\n (msg) =>\r\n {\r\n this.__set_error(msg + '\\n\\n\\t If the error says something about unexpected token < in JSON then the probably the problem is related to the file not being found. Check the name and path of the resource');\r\n this.__loading_ended();\r\n });\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n }\r\n}\r\n\r\nexport { DAELoader };\r\n","import { AbstractLoader } from './AbstractLoader';\r\n\r\nimport { FileLoader as TFileLoader } from 'three';\r\n\r\nclass FileLoader extends AbstractLoader\r\n{\r\n constructor(resource_id, url, size)\r\n {\r\n super(resource_id, url, size);\r\n this.loader = new TFileLoader();\r\n }\r\n\r\n on_preloaded_finished(resource_container)\r\n {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n this.loader.load(this.url, (file) =>\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, file);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n },\r\n (xhr) =>\r\n {\r\n // if (xhr)\r\n // {\r\n // let total = xhr.total || this.total_bytes;\r\n // this.__update_downloaded_bytes(xhr.loaded, total);\r\n // }\r\n },\r\n (msg) =>\r\n {\r\n this.__set_error(msg);\r\n this.__loading_ended();\r\n });\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n }\r\n}\r\n\r\nexport { FileLoader };\r\n","import { AbstractLoader } from './AbstractLoader';\n\nimport { FontLoader as TFontLoader } from 'three/examples/jsm/loaders/FontLoader.js';\n\nclass FontLoader extends AbstractLoader\n{\n constructor(resource_id, url, size)\n {\n super(resource_id, url, size);\n this.loader = new TFontLoader();\n }\n\n on_preloaded_finished(resource_container)\n {\n if (resource_container.resources_by_url[this.url] === undefined)\n {\n this.loader.load(this.url, (font) =>\n {\n resource_container.set_resource(this.resource_id, this.url, font);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n },\n (xhr) =>\n {\n // if (xhr)\n // {\n // let total = xhr.total || this.total_bytes;\n // this.__update_downloaded_bytes(xhr.loaded, total);\n // }\n },\n (msg) =>\n {\n this.__set_error(msg + '\\n\\n\\t If the error says something about unexpected token < in JSON then probably the problem is related to the file not being found. Check the name and path of the resource');\n this.__loading_ended();\n });\n }\n else\n {\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n }\n }\n}\n\nexport { FontLoader };\n","import { AbstractLoader } from './AbstractLoader';\n\nclass JSONLoader extends AbstractLoader\n{\n constructor(resource_id, url, size)\n {\n super(resource_id, url, size);\n }\n\n on_preloaded_finished(resource_container)\n {\n if (resource_container.resources_by_url[this.url] === undefined)\n {\n fetch(this.url).then((response) =>\n {\n response.json().then((json) =>\n {\n resource_container.set_resource(this.resource_id, this.url, json);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n });\n });\n }\n else\n {\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n }\n }\n}\n\nexport { JSONLoader };\n","import { AbstractLoader } from './AbstractLoader';\n\nimport { OBJLoader as TOBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';\n\nclass OBJLoader extends AbstractLoader\n{\n constructor(resource_id, url, size)\n {\n super(resource_id, url, size);\n this.loader = new TOBJLoader();\n }\n\n on_preloaded_finished(resource_container)\n {\n if (resource_container.resources_by_url[this.url] === undefined)\n {\n this.loader.load(this.url, (obj) =>\n {\n resource_container.set_resource(this.resource_id, this.url, obj);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n },\n (xhr) =>\n {\n // if (xhr)\n // {\n // let total = xhr.total || this.total_bytes;\n // this.__update_downloaded_bytes(xhr.loaded, total);\n // }\n },\n (msg) =>\n {\n this.__set_error(msg + '\\n\\n\\t If the error says something about unexpected token < in JSON then probably the problem is related to the file not being found. Check the name and path of the resource');\n this.__loading_ended();\n });\n }\n else\n {\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n }\n }\n}\n\nexport { OBJLoader };\n","import { AbstractLoader } from './AbstractLoader';\n\nimport { Vector3 } from 'three';\nimport { FileLoader } from 'three';\n\nclass PointArrayLoader extends AbstractLoader\n{\n constructor(resource_id, url, size)\n {\n super(resource_id, url, size);\n this.loader = new FileLoader();\n }\n\n on_preloaded_finished(resource_container)\n {\n if (resource_container.resources_by_url[this.url] === undefined)\n {\n this.loader.load(this.url, (text) =>\n {\n resource_container.set_resource(this.resource_id, this.url, this.parse_path(text));\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n },\n (xhr) =>\n {\n // if (xhr)\n // {\n // let total = xhr.total || this.total_bytes;\n // this.__update_downloaded_bytes(xhr.loaded, total);\n // }\n },\n (msg) =>\n {\n this.__set_error(msg);\n this.__loading_ended();\n });\n }\n else\n {\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n }\n }\n\n parse_path(raw_data)\n {\n const string_array = raw_data.split('\\n');\n\n if (string_array[string_array.length - 1] === '')\n {\n string_array.pop();\n }\n\n const positions = [];\n\n for (let i = 0; i < string_array.length; i += 3)\n {\n const x = parseFloat(string_array[i + 0]);\n const y = parseFloat(string_array[i + 1]);\n const z = parseFloat(string_array[i + 2]);\n positions.push(new Vector3(x, y, z));\n }\n return positions;\n // let curve = new THREE.CatmullRomCurve3(positions);\n // return curve.getPoints(100);\n }\n}\n\nexport { PointArrayLoader };\n","import { AbstractLoader } from './AbstractLoader';\r\n\r\nimport { FileLoader as TFileLoader } from 'three';\r\n\r\nclass TextLoader extends AbstractLoader\r\n{\r\n constructor(resource_id, url, size)\r\n {\r\n super(resource_id, url, size);\r\n this.loader = new TFileLoader();\r\n }\r\n\r\n on_preloaded_finished(resource_container)\r\n {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n this.loader.load(this.url, (gltf) =>\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, gltf);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n },\r\n (xhr) =>\r\n {\r\n // if (xhr)\r\n // {\r\n // let total = xhr.total || this.total_bytes;\r\n // this.__update_downloaded_bytes(xhr.loaded, total);\r\n // }\r\n },\r\n (msg) =>\r\n {\r\n this.__set_error(msg);\r\n this.__loading_ended();\r\n });\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n }\r\n}\r\n\r\nexport { TextLoader };\r\n","import { AbstractLoader } from './AbstractLoader';\r\n\r\nimport { Texture } from 'three';\r\n\r\nclass TextureLoader extends AbstractLoader\r\n{\r\n constructor(resource_id, url, size)\r\n {\r\n super(resource_id, url, size);\r\n }\r\n\r\n on_preloaded_finished(resource_container, response)\r\n {\r\n if (resource_container.resources_by_url[this.url] === undefined)\r\n {\r\n response.blob().then((blob) =>\r\n {\r\n const texture = new Texture();\r\n\r\n const url = URL.createObjectURL(blob);\r\n\r\n const image = new Image();\r\n image.src = url;\r\n\r\n image.onload = () =>\r\n {\r\n texture.image = image;\r\n texture.needsUpdate = true;\r\n\r\n resource_container.set_resource(this.resource_id, this.url, texture);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n };\r\n\r\n image.onerror = () =>\r\n {\r\n console.error('Error loading texture. Maybe the resource is not an image?', this.url);\r\n };\r\n });\r\n }\r\n else\r\n {\r\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\r\n\r\n this.__update_downloaded_bytes(1, 1);\r\n this.__loading_ended();\r\n }\r\n }\r\n}\r\n\r\nexport { TextureLoader };\r\n","import { AbstractLoader } from './AbstractLoader';\n\nclass VideoLoader extends AbstractLoader\n{\n constructor(resource_id, url, size)\n {\n super(resource_id, url, size);\n }\n\n on_preloaded_finished(resource_container, response)\n {\n if (resource_container.resources_by_url[this.url] === undefined)\n {\n response.blob().then((blob) =>\n {\n resource_container.set_resource(this.resource_id, this.url, URL.createObjectURL(blob));\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n });\n }\n else\n {\n resource_container.set_resource(this.resource_id, this.url, resource_container.resources_by_url[this.url]);\n\n this.__update_downloaded_bytes(1, 1);\n this.__loading_ended();\n }\n }\n}\n\nexport { VideoLoader };\n","import { ResourceContainer } from '../ResourceContainer';\r\n\r\nclass ResourceBatch\r\n{\r\n constructor(batch_name)\r\n {\r\n this.resource_loaders = [];\r\n this.batch_name = batch_name || 'unnamed batch';\r\n }\r\n\r\n add_loader(loader)\r\n {\r\n this.resource_loaders.push(loader);\r\n }\r\n\r\n load(resource_container)\r\n {\r\n for (let i = 0; i < this.resource_loaders.length; i++)\r\n {\r\n this.resource_loaders[i].load(resource_container || ResourceContainer);\r\n }\r\n }\r\n\r\n get loading_finished()\r\n {\r\n let finished = true;\r\n for (let i = 0; i < this.resource_loaders.length; i++)\r\n {\r\n finished = finished && this.resource_loaders[i].has_finished;\r\n }\r\n return finished;\r\n }\r\n\r\n get has_errors()\r\n {\r\n let has_error = false;\r\n for (let i = 0; i < this.resource_loaders.length; i++)\r\n {\r\n has_error = has_error || this.resource_loaders[i].has_error;\r\n }\r\n return has_error;\r\n }\r\n\r\n print_errors()\r\n {\r\n console.error('Batch <' + this.batch_name + '> could not load successfully');\r\n for (let i = 0; i < this.resource_loaders.length; i++)\r\n {\r\n if (this.resource_loaders[i].has_error)\r\n {\r\n this.resource_loaders[i].print_error();\r\n }\r\n }\r\n }\r\n\r\n get_progress()\r\n {\r\n return this.get_loaded_bytes() / this.get_total_bytes();\r\n }\r\n\r\n get_loaded_bytes()\r\n {\r\n let loaded_bytes = 1;\r\n\r\n for (let i = 0; i < this.resource_loaders.length; i++)\r\n {\r\n loaded_bytes += this.resource_loaders[i].loaded_bytes;\r\n }\r\n\r\n return loaded_bytes;\r\n }\r\n\r\n get_total_bytes()\r\n {\r\n let total_bytes = 1;\r\n\r\n for (let i = 0; i < this.resource_loaders.length; i++)\r\n {\r\n total_bytes += this.resource_loaders[i].total_bytes;\r\n }\r\n\r\n return total_bytes;\r\n }\r\n}\r\n\r\nexport { ResourceBatch };\r\n"],"names":["AxisHelper","Object3D","constructor","scale","super","blue_points","push","Vector3","blue_axis_mat","LineBasicMaterial","color","depthFunc","AlwaysDepth","blue_axis_geo","BufferGeometry","setFromPoints","blue_axis_line","Line","renderOrder","green_points","green_axis_mat","green_axis_geo","green_axis_line","red_points","red_axis_mat","red_axis_geo","red_axis_line","this","add","set","update","dispose","scene_manager","init","_current","Scene","name","add_scene","current","scene","traverse","child","geometry","mat","material","children","length","remove","Cube","Mesh","size","segments","BoxGeometry","x","y","z","MeshBasicMaterial","Sphere","radius","SphereGeometry","center","position","Arrow","dir","cylinder_height","cylinder_geo","CylinderGeometry","translate","cone_geometry","ConeGeometry","cone_height","buffer_geometry","BufferGeometryUtils","mergeGeometries","rotateX","quaternion","setFromUnitVectors","_dir","value","oscreen","width","height","Vector2","render_width","render_height","width_height","dpr","pixel_size","update_position","size_changed","update_size","apply_pixel_density_v2","vector2","multiplyScalar","apply_pixel_density","get_pixel_size","aspect_ratio","portrait","PerspectiveCamera","TPerspectiveCamera","fov","aspect","near","far","clear_color","Color","clear_alpha","copy","camera","camera_manager","undefined","_spectator","spectator","capabilities","max_anisotropy","vertex_texture_sampler_available","fp_textures_available","OrthographicCamera","TOrthographicCamera","left","right","top","bottom","BaseRender","render","on_enter","context","renderer","on_exit","resize","BlitMaterial","ShaderMaterial","frag_shader","vert_shader","defines","uniforms","_MainTex","_Resolution","_TargetResolution","vertexShader","fragmentShader","depthWrite","blending","NoBlending","depthTest","Blitter","_blit_scene","_blit_material","_blit_quad","PlaneGeometry","_blit_camera","blit","src","dst","src_texture","isWebGLRenderTarget","texture","src_width","image","src_height","getSize","__render","material_pass","blit_with_material","blit_clear_with_material","dst_RT","RT","current_rt","getRenderTarget","setRenderTarget","ClearDepthNormalMaterial","clear_depth","clear_normal","_DepthNormal","Vector4","DepthNormalMaterial","_FarPlane","far_plane","DepthAndNormalsRenderer","WebGLRenderTarget","OScreen","clear_depth_normal_mat","depth_normal_material","graphics","__resize_RT_if_necessary","clear","CameraManager","setSize","render_target","canvas","core_attributes","context_attributes","threejs_attributes","_renderer","blitter","no_render","current_render_mode","generateDepthNormalTexture","depth_and_normals_renderer","is_webgl2","canvas_context","force_webgl2","xr_enabled","alpha","antialias","depth","desynchronized","failIfMajorPerformanceCaveat","powerPreference","premultipliedAlpha","preserveDrawingBuffer","stencil","logarithmicDepthBuffer","Object","assign","getContext","WebGLRenderer","xr","enabled","autoClear","setPixelRatio","extensions","get","domElement","Capabilities","getMaxAnisotropy","maxVertexTextures","is_floating_point_texture_available","dom_element","depth_normals_RT","set_state","new_state","__update_current_camera","updateProjectionMatrix","updateMatrix","updateMatrixWorld","override_mat","__apply_override_material","SceneManager","compile","compile_async","target_scene","promise","compileAsync","render_scene","on_pre_render","on_post_render","overrideMaterial","readback_RT","buffer","readRenderTargetPixels","clear_stencil","setClearColor","on_resize","entries","entry","contentRect","setViewport","src_RT","take_screenshot","blob_callback","old_width","old_height","new_width","new_height","tile_width","tile_height","divisions_x","Math","ceil","divisions_y","old_dpr","getPixelRatio","ctx_2D","document","createElement","setViewOffset","drawImage","toBlob","clearViewOffset","download_screenshot","blob","link","download","href","URL","createObjectURL","click","onclick","requestAnimationFrame","revokeObjectURL","removeAttribute","minFilter","NearestFilter","magFilter","format","RGBAFormat","colorSpace","LinearSRGBColorSpace","type","FloatType","stencilBuffer","depthBuffer","output","Float32Array","abs","BaseShaderMaterial","vert","frag","basic_vert","basic_frag","_Color","ScreenSpaceTextureMaterial","w","h","_ScreenSpacePosition","_ScreenSize","_TextureSize","set_position","set_texture","tex","set_screen_size","debug","Vector3_one","Vector3_zero","canvas_renderer","display_texture_meshes","ctx","draw_arrow","origin","arrow","clone","normalize","draw_axis","axis","set_debug_RT","rt_debug","draw_rectangle","position_2d","fillStyle","fillRect","clearRect","draw_line_2D","from","to","strokeStyle","beginPath","moveTo","lineTo","closePath","stroke","draw_line","points","line","frustumCulled","draw_cube","pos","cube","draw_oriented_cube","distanceTo","sub","forward_dir","draw_plane","basic_color_vert","basic_color_frag","transparent","plane","draw_empty_cube","box","Box3","setFromCenterAndSize","helper","Box3Helper","draw_sphere","sphere","draw_point_array","input_points","open","catmull","CatmullRomCurve3","updateArcLengths","getSpacedPoints","draw_sphere_helper","sphere_mesh","draw_math_sphere","sphere1","draw_bounding_box","bb","draw_curve","curve","options","offset","i","draw_texture","mesh","time","__delta_buffer","__previous_elapsed_time","__delta_time","__smooth_delta_time","__elapsed_time","__frame_interpolation_t","fixed_delta_time","elapsed_time","delta_time","smooth_delta_time","frame_interpolation","fdt","dt","sdt","__set_frame_interpolation","__update","shift","__calculate_smooth_delta_time","OMath","linear_map","from_range_start_value","from_range_end_value","to_range_start_value","to_range_end_value","between","min","max","mod","number","divisor","rgb_to_hex","rgb","r","round","toString","g","b","project_points_on_plane","projected_point","points_on_plane","projectPoint","matrix4_lerp","target","t","elements","lerp","equals","x1","x2","clamp","euclideanModulo","n","m","pingpong","degToRad","degrees","PI","radToDeg","radians","deg_to_rad","rad_to_deg","perspective_divide","v","points_average","get_random_color","arr","col","floor","random","saturate","generate_uuid","_lut","d0","d1","d2","d3","toLowerCase","ActionEvent","method","args","trigger","ViewApi","application","split","EasingFunctions","linear","triangular","ease_in_sine","cos","ease_out_sine","sin","ease_in_out_sine","ease_in_cubic","ease_out_cubic","pow","ease_in_out_cubic","ease_in_quad","ease_out_quad","ease_in_out_quad","ease_in_quart","ease_out_quart","ease_in_out_quart","ease_in_quint","ease_out_quint","ease_in_out_quint","ease_in_expo","ease_out_expo","ease_in_out_expo","ease_in_circ","sqrt","ease_out_circ","ease_in_out_circ","ease_in_back","ease_out_back","ease_in_out_back","ease_in_elastic","c4","ease_out_elastic","ease_in_out_elastic","ease_in_bounce","ease_out_bounce","n1","ease_in_out_bounce","heartbeat","sign","ActionInterpolator","easing_function","attribute_name","ActionSequencer","previous_elapsed_time","playback_speed","__get_playback_speed","playing","action_events","initial_context","JSON","parse","stringify","tmp_t","channels","channel_names","keys","duration","play","stop","reset","skip","get_duration","__play_clips","set_progress","set_normalized_progress","get_progress","is_finished","add_action_event","trigger_time","action","add_action_interpolator","interpolator","use_dynamic_from_value","keyframes","console","error","keyframe","get_current_target_value","__get_current_keyframe","evaluate","get_current_starting_value","get_current_progress","__linear_map_01","__play_events","evaluate_keyframe","get_keyframes","channel_name","is_channel_redefined","initial","Infinity","distance","transitions_velocity","URLSearchParams","window","location","search","Number","set_initial_value_on_channel","set_final_value_on_channel","NumberInterpolator","DrawIOAnimationSheet","xml_document","animation_nodes","DOMParser","parseFromString","querySelectorAll","animation_tracks","triggers","node","parent_node","parentElement","data","getAttribute","get_node_x_position","parseFloat","includes","split_data","trigger_name","trigger_method","at_time","value_data","to_value","from_time","to_time","sort","a","x_pos","ActionSequencerBuilder","default_state_data","from_animation_sheet","animation_data","current_context","tracks","initial_tracks","state_to_tracks","get_longest_time","find","element","sequencer","action_event","state","longest_time","from_draw_io","xml","transition_data","track_time","TransitionTable","transitions","from_state_name","to_state_name","add_transitions","set_transitions","set_default_state_data","ViewState","start","before_enter","before_exit","before_update","fixed_update","update_enter_transition","global_view_data","transition_progress","action_sequencer","update_exit_transition","ViewStateTransitionHandler","transition_table","last_state","current_state","current_state_data","transitioning","go_to_state","__exit_last_state","__update_transitions","Time","transition_manager","transition_handler","get_current_state","set_transitions_velocity","view_component_manager","components","enabled_components","Set","__set_components_opacities","component","TransitionManager","register_component","enable_component","disable_component","delete","get_component_by_name","component_name","warn","set_opacity","view_manager","views","browser_title_suffix","__set_views_opacities","go_to_view","view_name","change_url","__change_browser_url","url","__change_browser_title","go_to_scene","scene_name","next_view","transition_view","set_next_view","register_view","view","has_view","set_view","set_browser_title_suffix","title_suffix","get_current_view","get_view_by_name","get_by_url","history","pushState","title","__capitalize","string","aux_string","toUpperCase","replace","__snake_to_whitespace","group","RenderLoop","target_application","input","BaseApplication","is_running","frames_passed","time_accumulator","on_post_start","ViewManager","ViewComponentManager","Debug","on_frame_end","setAnimationLoop","bind","loop","AddMaterial","use_half_float","USE_LINEAR_COLOR_SPACE","_SecondTex","set_add_texture","UnrealBloomComposeMaterial","nMips","use_linear_color_space","NUM_MIPS","_BlurredTex","_BloomStrength","blurTexture1","blurTexture2","blurTexture3","blurTexture4","blurTexture5","bloomStrength","bloomFactors","bloomRadius","bloomTintColors","set_RT_0","rt","set_RT_1","set_RT_2","set_RT_3","set_RT_4","set_bloom_strength","set_bloom_radius","set_tint_color_0","col_string","set_tint_color_1","set_tint_color_2","set_tint_color_3","set_tint_color_4","AbstractLoader","resource_id","loaded_bytes","total_bytes","has_finished","has_error","error_message","__update_downloaded_bytes","loaded","total","is_number","__loading_ended","__set_error","message","print_error","load","resource_container","resources_by_url","cache","fetch","mode","credentials","redirect","then","on_progress","catch","__on_error","set_resource","response","response_clone","reader","body","getReader","contentLength","headers","receivedLength","done","read","ok","on_preloaded_finished","status","statusText","is_int","is_float","AudioClip","volume","positional","audio","audio_listener","TPositionalAudio","TAudio","setBuffer","setLoop","gain","setVolume","pause","is_playing","isPlaying","AudioLoader","instantiate_audio","AudioContext","createBuffer","arrayBuffer","array_buffer","decodeAudioData","audio_buffer","resources","resource","get_resource","AsyncAbstractLoader","assets","worker","ResourceContainer","bound_on_message","on_message","__setup_worker","assets_loaders","__setup_loaders","postMessage","loader_name","is_loaded","asset_loader","original_url","__get_loaded_bytes","__get_total_bytes","get_assets_names","names","asset","create_worker","Worker","addEventListener","e","__on_assets_loaded","removeEventListener","AsyncAudiosLoader","loaders","asset_data","GLTFDRACOLoader","loader","GLTFLoader","setDRACOLoader","gltf","xhr","msg","TGLTFLoader","AsyncObjectsLoader","draco","draco_loader","browser","browser_name","agent","navigator","userAgent","has_web_xr_support","is_vr","isSessionSupported","indexOf","opr","chrome","version","get_version","is_safari","is_chrome","is_firefox","is_edge","is_edge_chromium","has_webm","has_hvec","preferred_video_extension","ua","tem","M","match","test","exec","slice","join","appName","appVersion","splice","AsyncTextureLoader","flipY","premultiplyAlpha","colorSpaceConversion","Browser","load_with_old_method","load_with_new_method","Texture","Image","onload","SRGBColorSpace","NoColorSpace","needsUpdate","onerror","fetchOptions","res","createImageBitmap","imageOrientation","imageBitmap","BasisLoader","basis","CubemapLoader","extension","CubeTextureLoader","setPath","urls","HDRCubeTextureLoader","THDRCubeTextureLoader","hdr","RGBETextureLoader","RGBELoader","AsyncTexturesLoader","kind","CompilatorManager","compilators","first_update","index","finished","LoadingState","SceneCompilator","TexturesCompilator","AudiosCompilator","callback_called","set_assets","scene_objects","scene_textures","scene_sounds","custom_loaders","custom_compilators","custom_data","loading_progress","progress","setup_loader","assets_worker","object_loader","textures_loader","audios_loader","compilator_manager","is_compiled","HighQualityLoadingState","on_high_quality_assets_ready","RegularLoadingState","on_assets_ready_called","on_assets_ready","on_assets_compiled","AbstractScene","initialized","is_high_loaded","loading_states","regular","high","current_loading_state","set_loading_state","get_objects","objects","dispose_cpu","attributes","array","normal","uv","map","mipmaps","Uint8Array","set_high_assets","update_loading_state","ApplicationView","container","current_opacity","classList","opacity","style","CanvasDrawer","uses_dynamic_font","__textHeight","getFontHeight","fontStyle","getElementsByTagName","dummy","dummyText","createTextNode","appendChild","setAttribute","offsetHeight","removeChild","get_text_size","text","font","measureText","draw_canvas","ctxOptions","font_color","__draw","draw_on_texture","canvas_texture","CanvasTexture","UVMapping","ClampToEdgeWrapping","generateMipmaps","roundRect","fill","tl","tr","br","bl","defaultRadius","side","_side","quadraticCurveTo","SimpleTextDrawer","text_margin","text_size","globalAlpha","textBaseline","textAlign","fillText","Idle","is_animating","Animating","easing_function_t","animator","set_property_value","set_current_state","finished_callback","CSSAnimator","css_property","value_prefix","value_suffix","animate","os","operating_systems","ANDROID","IOS","LINUX","MAC","WINDOWS","is_mobile","is_ipad","maxTouchPoints","is_ios","is_android","get_os","is_linux","is_mac","is_windows","platform","reflection_plane_context","target_geometry","target_position","set_target_geometry","GeometryBatch","batch_width","data_textures","object_names","zero_offset","write_offset","uniform_dirty_count","tmp_uploaded_data_count","add_global_uniform","set_global_uniform","add_object_uniform_v3","uniform_name","default_value_v3","src_tex","__create_rgb_texture","dst_tex","one_pixel_tex","new_data_tex","__add_data_texture","__flood_data_texture_rgb","add_object_uniform_v4","default_value_v4","__create_rgba_texture","__flood_data_texture_rgba","add_object_uniform_v4_float","__create_rgba_float_texture","set_object_uniform_v3","object_name","vector3","use_r","use_g","use_b","obj_index","__get_object_index","data_texture","__get_data_texture","__set_pixel_rgb","one_pixel","last_accessed_index","dirty_count","set_object_uniform_v4","vector4","use_a","__set_pixel_rgba","upload_texture_data","upload_budget","__partial_texture_data_upload","__full_texture_data_upload","get_uniform_dirty_count","texture_data","copyTextureToTexture","get_mesh","v3","v4","DataTexture","dst_texture","one_pixel_text","geometry_batcher","batches","batch","buffer_geometries","attr_accessor_uvs","texture_width","ceilPowerOfTwo","__init_uv_array","uv_index","vertex_count","count","buffer_attribute","BufferAttribute","uvs","UIElementMaterial","intensity","_PixelOffset","_NDC","_PivotPoint","_DepthOffset","ScreenSpacePosition","tmp_vec","get_pos_NDC","WorldSpacePosition","tmp_vec3","tmp_vec2","project","UIElementState","ui_element","normalized_mouse_position","OnIdle","is_mouse_over","_on_enter_state","OnMouseEnter","on_mouse_enter","_on_hover_state","_on_exit_state","OnMouseExit","on_mouse_exit","_on_idle_state","OnMouseHover","__trigger_on_hover","on_mouse_hover","UIElement","is_clickable","position_strategy","_position","on_hover","mouse_pos_tmp","cached_NDC_position","screen_pos_tmp","texture_size","matrixAutoUpdate","pixel_offset","set_render_order","pivot_point","set_pixel_offset","use_depth","boolean","depth_offset","clear_state","visible","set_world_space_coordinate_system","set_screen_space_coordinate_system","get_size","update_state","normalized_mouse_pos","to_screen_position","rect","Box2","containsPoint","projected_pos","get_screen_space_position","set_screen_space_position","screen_pos","ui","ui_elements","_tmp_normalized_pos","ss_scene","matrixWorldAutoUpdate","ws_scene","ss_camera","delete_element","elem","add_screen_space_element","add_world_space_element","NDC","Graphics","current_clicked_element","PerspectiveFrustumPointFitter","fit_points","camera_quaternion","vertical_fov","v_fov","h_fov","atan","tan","up_plane_normal","get_up_plane_normal","down_plane_normal","get_down_plane_normal","left_plane_normal","get_left_plane_normal","right_plane_normal","get_right_plane_normal","camera_forward_dir","applyQuaternion","sphere_center","pull_back_distance","get_distance_to_fit_rect","far_pos","up_plane","Plane","setFromNormalAndCoplanarPoint","down_plane","left_plane","right_plane","apply_center_correction_to_pos","closest_distance","inverse_dir","Line3","up_line_intersection","down_line_intersection","left_line_intersection","right_line_intersection","intersectLine","log","new_up_distance","new_down_distance","new_left_distance","new_right_distance","vertical_min","horizontal_min","forward_correction","target_pos","vertical_offset","get_vertical_correction","horizontal_offset","get_horizontal_correction","closest_distance_to_up_plane","closest_distance_to_down_plane","up_dir","down_line","up_line","down_dist","up_dist","correction","closest_distance_to_right_plane","closest_distance_to_left_plane","right_dir","left_line","right_line","left_dist","right_dist","Quaternion","setFromAxisAngle","distV","distH","OrthographicFrustumPointFitter","inverse_camera_quat","inverse","inverted_points","getCenter","distance_to_center","camera_utilities","tmp_mat","Matrix4","ray","Ray","tmp_size","tmp_unproj","get_up_dir","get_forward_dir","get_right_dir","unproject_mouse_position","get_plane_intersection","plane_position","plane_normal","isPerspectiveCamera","intersectPlane","fit_points_on_camera","zoom_scale","world_space_center","camera_forward","projected_points_center","up","cross","inverse_mat","getInverse","applyMatrix4","projected_center","zoom","get_zoom_to_fit_rect","get_zoom_to_fit_box","isOrthographicCamera","obj_x","obj_y","object_aspect","get_html_screen_pos","object","getWorldPosition","world_pos_to_screen","update_projection","fit_bounding_box_points","p1","p2","p3","p4","p5","p6","p7","p8","camera_backward_dir","fitter","camera_pos","reference_position_plane","camera_ray","reference_position","camera_position","result","reference_rotation","reference_zoom","forward","initializer","CameraUtilities","GeometryBatcher","OS","ReflectionPlaneContext","UI","render_loop","KeyboardInput","ctrlz_pressed","ctrlz_fired","keys_keys","on_key_down","on_key_up","keyCode","ctrlKey","code","press_key","release_key","pressed","released","key_name","key","fired","down","release_keys","is_key_pressed","is_key_down","is_key_released","register_key","unregister_key","NormalMaterial","DebugNormalsRender","DisplayNormalTextureMaterial","depth_normals_vert","_InverseProjMatrix","SSAOComposeMaterial","_AO","SSAOMaterial","_ProjectionMatrix","_Bias","_Radius","_SampleKernel","__get_sample_kernel","_RandomRotation","__get_rotation_kernel","sample_kernel","rotation_kernel","rotation_texture","wrapS","RepeatWrapping","wrapT","BoxBlurMaterial","_SampleDir","Blurrer","RT1","RT2","box_blur_mat","blur","NormalAORender","use_ssaa","ssao_mat","ssao_compose_mat","debug_normals","ssaa","main_RT","SSAO_RT","blurrer","__check_RT_size","__update_uniforms","projectionMatrix","NormalRender","GaussianBlurMaterial","kernel_radius","KERNEL_RADIUS","SIGMA","texSize","direction","set_size","set_direction","set_radius","LuminosityHighPassMaterial","luminosityThreshold","smoothWidth","defaultColor","defaultOpacity","set_threshold","value_01","GaussianBlurrer","current_width","current_height","separableBlurMaterials","renderTargetsHorizontal","renderTargetsVertical","kernelSizeArray","rt_pars","LinearFilter","HalfFloatType","UnsignedByteType","renderTargetBright","init_materials","init_RT","luminosity_high_pass_mat","use_luminosity_high_pass","resize_RT","inputRenderTarget","get_blurred_texture","get_blurred_RT","dispose_RT","hor","ver","texture_height","dispose_materials","set_luminosity_threshold","UnrealBloomRender","use_antialiasing","use_hight_luminosity_pass","use_rendering_size","add_mat","rt_settings","samples","bloom_compose_mat","luminosity_threshold","val","VRRender","render_spectator_camera","spectator_camera","isPresenting","xrCam","getCamera","currentRenderTarget","screen","ViewComponent","hidden","toggle_hidden","HorizontalPlane","VerticalPlane","ArrayUtilities","merge_from_to","source","apply","expand_vec3_array","items_left_count","remove_elem","get_closest_point","closest_point","object_values_to_array","obj","ids","FrustumPointFitter","get_hozirontal_correction","closest_up_point","closest_down_point","closest_right_point","closest_left_point","GeometryUtilities","convert_to_non_indexed_geometry","geometry_buffer","indices","positions","vertices","getX","getY","getZ","add_barycentric_attribute","non_indexed_geometry_buffer","bar_coordinates","HTMLUtilities","load_images","images","dataset","image_objects","image_object","load_videos","videos","video","load_iframes","iframes","iframe","load_elements","selector","ImageUtilities","get_image_data","getImageData","get_pixel","imagedata","mesh_sampler","sample","sample_count","face_areas","min_area","normals","tangents","faces","index_0","index_1","index_2","v1","v2","face","c","n2","n3","tangent","uv_a","uv_b","uv_c","area","get_face_area","normalized_faces_array","get_uniform_face_distribution","selected_faces","select_random_faces","sample_data_from_faces","sampled_points","sampled_normals","sampled_tangents","sampled_uvs","w1","w2","sample_point_in_face","amount","selected_face","minimum_area","extended_triangle_indices","repetitions_needed","j","vec1","vec2","w3","model_utilities","result_callback","fromGeometry","get_geometries","geometries","assign_material","clone_animated_gltf","animations","skinnedMeshes","isSkinnedMesh","cloneBones","cloneSkinnedMeshes","isBone","skeleton","cloneSkinnedMesh","orderedCloneBones","bones","cloneBone","Skeleton","boneInverses","matrixWorld","set_shadow_config","cast","receive","castShadow","receiveShadow","__find_object","get_object","get_object_by_type","object_type","ObjectUtilities","is_object","item","Array","isArray","merge_deep","sources","xml_to_json","nodeType","attribute","nodeName","nodeValue","hasChildNodes","childNodes","old","StringUtilities","hexValues","hex","capitalize","words","substr","capitalize_first_letter","charAt","snake_to_camelcase","TimeUtilities","time_str_to_ms","time_str","hours","minutes","seconds","Validation","is_json","str","Grid","derivatives","plane_geometry","rotation","_Thickness","_Length","_ElapsedTime","setup","next_position","previous_position","orientation","coverage","accumulated_length","next_point","__get_next_position","previous_point","__get_previous_position","vertexList","nextPositionList","previousPositionList","orientationList","coverageList","setIndex","_length","thickness","total_length","parent","copy_color","WorldImage","pivot","_ScreenAligned","_Scale","_Opacity","DoubleSide","current_scale","computeBoundingBox","tmp_bb_size","boundingBox","update_texture","img","screen_aligned","Text2D","is_static","simple_text_drawer","draw_settings","LinearMipMapLinearFilter","UpdatableMaterialMesh","self","onBeforeRender","TextGlyph","plane_bounds","atlas_bounds","SDFText","glyph_layout","glyphs","glyph_is_dirty","matrix_is_dirty","color_is_dirty","matrix","__opacity","__text","__generate_glyphs","update_matrix","compose","clear_glyph_dirty","clear_color_dirty","set_rotation","tilt","new_orientation","new_tilt","multiply","set_color","set_pivot","update_glyphs","op","cursor","unicode","charCodeAt","glyph","planeBounds","text_glyph","atlasBounds","advance","box2","first_glyph","union","box2_size","SDFTextMaterial","_Texture","_Boldness","_AtlasSize","generateMipMaps","set_atlas_size","set_boldness","SDFTextBatch","font_layout","atlas_texture","instanced_geometry","InstancedBufferGeometry","instanceCount","Float32BufferAttribute","transformsCol0","InstancedBufferAttribute","max_allocations","transformsCol1","transformsCol2","transformsCol3","glyph_bounds","usage","DynamicDrawUsage","text_elements","atlas","add_text","text_str","remove_text","text_elem","force_update","glyph_bounds_atr","plane_bounds_atr","color_atr","matrix_needs_update","glyph_needs_update","color_needs_update","glyph_count","glyph_i","buffer_i","setXYZW","VectorInterpolator","tmp","DualFilteringBlurMaterial","upsample","AlphaFilterMaterial","use_alpha_mask","_Offset","DualFilteringBlurrer","RT0","RT3","RT4","upscale_blur_mat","downscale_blur_mat","alpha_filter_mat","check_RT_resize","MedianFilterMaterial","kernel3x3","_SourceTex","_SourceTexSize","isVideoTexture","videoWidth","videoHeight","isTexture","MedianFilter","median_filter_mat","filter","tex_size","ParticleAttribute","attr_name","update_material","write","init_from_geometry","init_from_attribute","particle_attribute","build_RT","particle_count","resolution","calculate_resolution","colorScape","swap_RT","attribute_writter_scene","store_geometry_attribute_in_RT","storage_material","deleteAttribute","get_texture","GPUParticleSystem","build_point_mesh","attribute_writter_mesh","build_attribute_writter_mesh","add_texture_attribute","add_update_attribute_array","item_size","add_attribute_array","instance_count","geo","instanced_geo","build_uv_storage_attribute","Points","ParticleStorageMaterial","ParticlePositionAttribute","store_geometry","pos_attr","store_positions","CustomDataTexture","multiplier","set_rgba","set_rgb","set_r","set_g","set_b","set_a","RGBDataTexture","RGBADataTexture","RGBFloatDataTexture","RGBAFloatDataTexture","BatchedMesh","id_table","max_texture_width","batched_count","batch_height","attach_rgb_texture","attach_rgba_texture","attach_rgb_float_texture","attach_rgba_float_texture","get_mesh_index","set_rgb_value","mesh_name","set_rgba_value","MeshBatcher","meshes","attr_mesh_id","create_batched_mesh","DAELoader","ColladaLoader","FileLoader","TFileLoader","file","FontLoader","TFontLoader","JSONLoader","json","OBJLoader","TOBJLoader","PointArrayLoader","parse_path","raw_data","string_array","pop","TextLoader","TextureLoader","VideoLoader","ResourceBatch","batch_name","resource_loaders","add_loader","loading_finished","has_errors","print_errors","get_loaded_bytes","get_total_bytes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/BaseApplication.ts","../../node_modules/tslib/tslib.es6.js","../src/materials/BlitMaterial.ts","../src/materials/AddMaterial.ts","../src/materials/BaseShaderMaterial.ts","../src/materials/UnrealBloomComposeMaterial.ts","../src/render_mode/BaseRender.ts","../src/resource_loader/AbstractLoader.ts","../src/CameraManager.ts","../src/OScreen.ts","../src/SceneManager.ts","../src/render_utilities/Blitter.ts","../src/materials/ClearDepthNormalMaterial.ts","../src/materials/DepthNormalMaterial.ts","../src/render_utilities/DepthAndNormalsRenderer.ts","../src/Graphics.ts","../src/components/AudioClip.ts","../src/resource_loader/AudioLoader.ts","../src/ResourceContainer.ts","../src/loaders/AsyncAbstractLoader.ts","../src/loaders/AsyncAudiosLoader.ts","../src/resource_loader/GLTFDRACOLoader.ts","../src/resource_loader/GLTFLoader.ts","../src/loaders/AsyncObjectsLoader.ts","../src/Browser.ts","../src/resource_loader/AsyncTextureLoader.ts","../src/resource_loader/BasisLoader.ts","../src/resource_loader/CubemapLoader.ts","../src/resource_loader/HDRCubeTextureLoader.ts","../src/resource_loader/HDRTextureLoader.ts","../src/loaders/AsyncTexturesLoader.ts","../src/scenes/CompilatorManager.ts","../src/scenes/loading_states/LoadingState.ts","../src/scenes/loading_states/HighQualityLoadingState.ts","../src/scenes/loading_states/RegularLoadingState.ts","../src/scenes/AbstractScene.ts","../src/action_sequencer/ActionEvent.ts","../src/utilities/OMath.ts","../src/action_sequencer/ActionSequencer.ts","../src/utilities/EasingFunctions.ts","../src/action_sequencer/ActionInterpolator.ts","../src/action_sequencer/NumberInterpolator.ts","../src/view_components/transition/DrawIOAnimationSheet.ts","../src/view_components/transition/ActionSequencerBuilder.ts","../src/view_components/transition/TransitionTable.ts","../src/Time.ts","../src/view_components/ViewState.ts","../src/view_components/transition/ViewStateTransitionHandler.ts","../src/view_components/TransitionManager.ts","../src/view_components/ViewManager.ts","../src/view_components/ApplicationView.ts","../src/canvas_drawer/CanvasDrawer.ts","../src/canvas_drawer/SimpleTextDrawer.ts","../src/Capabilities.ts","../src/components/AxisHelper.ts","../src/materials/ScreenSpaceTextureMaterial.ts","../src/PerspectiveCamera.ts","../src/primitives/Arrow.ts","../src/primitives/Cube.ts","../src/primitives/Sphere.ts","../src/Debug.ts","../src/html_utilities/css_animator_states/Idle.ts","../src/html_utilities/css_animator_states/Animating.ts","../src/html_utilities/CSSAnimator.ts","../src/OS.ts","../src/ReflectionPlaneContext.ts","../src/utilities/OrthographicFrustumPointFitter.ts","../src/utilities/PerspectiveFrustumPointFitter.ts","../src/utilities/CameraUtilities.ts","../src/Initializer.ts","../src/KeyboardInput.ts","../src/OrthographicCamera.ts","../src/materials/NormalMaterial.ts","../src/render_mode/DebugNormalsRender.ts","../src/materials/DisplayNormalTextureMaterial.ts","../src/materials/SSAOComposeMaterial.ts","../src/materials/SSAOMaterial.ts","../src/materials/BoxBlurMaterial.ts","../src/render_utilities/Blurrer.ts","../src/render_mode/NormalAORender.ts","../src/render_mode/NormalRender.ts","../src/materials/GaussianBlurMaterial.ts","../src/materials/LuminosityHighPassMaterial.ts","../src/render_utilities/GaussianBlurrer.ts","../src/render_mode/UnrealBloomRender.ts","../src/render_mode/VRRender.ts","../src/view_components/ViewComponentManager.ts","../src/RenderLoop.ts","../src/Screen.ts","../src/view_components/ViewComponent.ts","../src/primitives/HorizontalPlane.ts","../src/primitives/VerticalPlane.ts","../src/utilities/ArrayUtilities.ts","../src/utilities/FrustumPointFitter.ts","../src/utilities/GeometryUtilities.ts","../src/utilities/HTMLUtilities.ts","../src/utilities/ImageUtilities.ts","../src/utilities/MeshSampler.ts","../src/utilities/ModelUtilities.ts","../src/utilities/ObjectUtilities.ts","../src/utilities/StringUtilities.ts","../src/utilities/TimeUtilities.ts","../src/utilities/Validation.ts","../src/components/Grid.ts","../src/shaders/grid/grid.tsl.ts","../src/components/Line.ts","../src/components/WorldImage.ts","../src/components/Text2D.ts","../src/components/UpdatableMaterialMesh.ts","../src/materials/SDFTextMaterial.ts","../src/components/sdf_text/TextGlyph.ts","../src/components/sdf_text/SDFText.ts","../src/components/sdf_text/SDFTextBatch.ts","../src/action_sequencer/VectorInterpolator.ts","../src/materials/AlphaFilterMaterial.ts","../src/materials/DualFilteringBlurMaterial.ts","../src/render_utilities/DualFilteringBlurrer.ts","../src/materials/MedianFilterMaterial.ts","../src/render_utilities/MedianFilter.ts","../src/gpu_particles/ParticleAttribute.ts","../src/gpu_particles/GPUParticleSystem.ts","../src/materials/gpu_particles/ParticleStorageMaterial.ts","../src/gpu_particles/ParticlePositionAttribute.ts","../src/resource_loader/DAELoader.ts","../src/resource_loader/FileLoader.ts","../src/resource_loader/FontLoader.ts","../src/resource_loader/JSONLoader.ts","../src/resource_loader/OBJLoader.ts","../src/resource_loader/PointArrayLoader.ts","../src/resource_loader/TextLoader.ts","../src/resource_loader/TextureLoader.ts","../src/resource_loader/VideoLoader.ts","../src/loaders/assets_loader/ResourceContainer.ts","../src/resource_loader/ResourceBatch.ts","../src/scenes/Compilator.ts"],"sourcesContent":[null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["BaseApplication","prototype","on_post_start","on_enter","loop","on_exit","before_update","update","fixed_update","on_post_render","on_pre_render","on_frame_end","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","_","label","sent","trys","ops","g","Iterator","verb","Symbol","iterator","n","v","op","pop","length","push","SuppressedError","BlitMaterial","_super","frag_shader","vert_shader","defines","_this","uniforms","_MainTex","_Resolution","Vector2","_TargetResolution","vertexShader","fragmentShader","depthWrite","blending","NoBlending","depthTest","depthFunc","AlwaysDepth","Texture","ShaderMaterial","AddMaterial","use_half_float","USE_LINEAR_COLOR_SPACE","_SecondTex","undefined","set_add_texture","tex","BaseShaderMaterial","vert","frag","basic_vert","basic_frag","_Color","Color","UnrealBloomComposeMaterial","nMips","use_linear_color_space","NUM_MIPS","_BlurredTex","_BloomStrength","blurTexture1","blurTexture2","blurTexture3","blurTexture4","blurTexture5","bloomStrength","bloomFactors","bloomRadius","bloomTintColors","set_blur_texture_0","texture","set_blur_texture_1","set_blur_texture_2","set_blur_texture_3","set_blur_texture_4","set_bloom_strength","set_bloom_radius","set_tint_color_0","col_string","set","set_tint_color_1","set_tint_color_2","set_tint_color_3","set_tint_color_4","BaseRender","render","renderer","context","resize","dispose","AbstractLoader","resource_id","url","size","loaded_bytes","total_bytes","has_finished","has_error","error_message","__update_downloaded_bytes","loaded","total","is_number","console","warn","__loading_ended","__set_error","message","print_error","error","load","resource_container","resources_by_url","fetch","method","mode","cache","credentials","redirect","on_progress","bind","catch","__on_error","set_resource","response","response_clone","clone","reader","getReader","contentLength","headers","get","receivedLength","read","_a","_b","ok","on_preloaded_finished","concat","status","statusText","data","is_int","Number","is_float","camera_manager","CameraManager","init","_current","_spectator","defineProperty","camera","oscreen","OScreen","width","height","position","render_width","render_height","width_height","dpr","pixel_size","update_position","x","size_changed","update_size","apply_pixel_density_v2","vector2","multiplyScalar","apply_pixel_density","get_pixel_size","scene_manager","SceneManager","AbstractScene","name","compilators","add_scene","scene","current","traverse","child","geometry","mat","material","isArray","forEach","m","children","remove","Blitter","_blit_scene","Scene","_blit_material","_blit_quad","Mesh","PlaneGeometry","add","_blit_camera","OrthographicCamera","blit","src","dst","src_texture","isRenderTarget","src_width","image","src_height","getSize","__render","material_pass","blit_with_material","blit_clear_with_material","dst_RT","RT","current_rt","getRenderTarget","setRenderTarget","ClearDepthNormalMaterial","clear_depth","clear_normal","_DepthNormal","Vector4","z","DepthNormalMaterial","_FarPlane","DepthAndNormalsRenderer","RenderTarget","clear_depth_normal_mat","Vector3","depth_normal_material","graphics","__resize_RT_if_necessary","clear","far_plane","far","setSize","Graphics","core_attributes","renderer_attributes","_renderer","blitter","canvas","no_render","current_render_mode","generate_depth_normal_texture","depth_and_normals_renderer","xr_enabled","assign","WebGPURenderer","xr","enabled","autoClear","setPixelRatio","domElement","render_target","set_state","new_state","__update_current_camera","aspect","aspect_ratio","updateProjectionMatrix","updateMatrix","updateMatrixWorld","override_mat","__apply_override_material","compile","compile_async","target_scene","promise","compileAsync","render_scene","overrideMaterial","readback_RT","readRenderTargetPixelsAsync","clear_stencil","setClearColor","clear_color","clear_alpha","on_resize","entries","_i","entries_1","entry","contentRect","setViewport","window","innerWidth","innerHeight","src_RT","take_screenshot","blob_callback","old_width","old_height","new_width","new_height","tile_width","tile_height","divisions_x","Math","ceil","divisions_y","old_dpr","getPixelRatio","ctx_2D","document","createElement","getContext","setViewOffset","drawImage","toBlob","clearViewOffset","download_screenshot","blob","link","download","href","URL","createObjectURL","click","onclick","requestAnimationFrame","revokeObjectURL","removeAttribute","AudioClip","buffer","volume","positional","audio","audio_listener","TPositionalAudio","TAudio","setBuffer","setLoop","gain","setVolume","play","pause","stop","isPlaying","AudioLoader","instantiate_audio","AudioContext","createBuffer","r","arrayBuffer","array_buffer","decodeAudioData","audio_buffer","ResourceContainer","resources","resource","keys","includes","get_resource","AsyncAbstractLoader","assets","worker","bound_on_message","on_message","__setup_worker","assets_loaders","__setup_loaders","postMessage","type","loader_name","is_loaded","i","asset_loader","original_url","get_progress","__get_loaded_bytes","__get_total_bytes","get_assets_names","names","asset","create_worker","Worker","addEventListener","__on_assets_loaded","removeEventListener","AsyncAudiosLoader","scene_name","loaders","asset_data","GLTFDRACOLoader","loader","GLTFLoader","setDRACOLoader","gltf","msg","TGLTFLoader","AsyncObjectsLoader","draco","draco_loader","browser","Browser","browser_name","agent","navigator","userAgent","toLowerCase","has_web_xr_support","isSessionSupported","_c","is_vr","indexOf","opr","chrome","version","get_version","is_chrome","is_firefox","is_edge_chromium","is_safari","has_webm","has_hvec","ua","tem","M","match","test","exec","slice","join","replace","appName","appVersion","splice","split","AsyncTextureLoader","flipY","premultiplyAlpha","colorSpaceConversion","load_with_old_method","load_with_new_method","texture_1","image_1","Image","onload","colorSpace","SRGBColorSpace","NoColorSpace","needsUpdate","onerror","fetchOptions","res","createImageBitmap","imageOrientation","imageBitmap","BasisLoader","basis","xhr","CubemapLoader","extension","CubeTextureLoader","setPath","urls","HDRCubeTextureLoader","THDRCubeTextureLoader","hdr","HDRTextureLoader","HDRLoader","AsyncTexturesLoader","kind","CompilatorManager","first_update","index","is_finished","finished","start","LoadingState","SceneCompilator","TexturesCompilator","AudiosCompilator","callback_called","set_assets","scene_objects","scene_textures","scene_sounds","custom_loaders","custom_compilators","custom_data","progress","setup_loader","assets_worker","object_loader","textures_loader","audios_loader","compilator_manager","is_compiled","HighQualityLoadingState","on_high_quality_assets_ready","RegularLoadingState","on_assets_ready_called","on_assets_ready","on_assets_compiled","initialized","is_high_loaded","loading_states","regular","high","current_loading_state","loading_progress","set_loading_state","get_objects","objects","dispose_cpu","attributes","array","Float32Array","normal","uv","map","mipmaps","Uint8Array","set_high_assets","state","update_loading_state","ActionEvent","args","trigger","ViewApi","application","OMath","linear_map","from_range_start_value","from_range_end_value","to_range_start_value","to_range_end_value","between","min","max","mod","number","divisor","rgb_to_hex","rgb","round","parseFloat","toString","project_points_on_plane","points","plane","projected_point","points_on_plane","projectPoint","matrix4_lerp","from","to","target","elements","lerp","equals","x1","x2","abs","clamp","euclideanModulo","pingpong","degToRad","degrees","PI","radToDeg","radians","deg_to_rad","rad_to_deg","perspective_divide","w","points_average","center","get_random_color","arr","col","floor","random","saturate","generate_uuid","_lut","d0","d1","d2","d3","ActionSequencer","previous_elapsed_time","elapsed_time","playback_speed","__get_playback_speed","playing","action_events","initial_context","JSON","parse","stringify","tmp_t","channels","channel_names","duration","reset","skip","get_duration","__play_clips","delta_time","set_progress","time","set_normalized_progress","add_action_event","trigger_time","action","add_action_interpolator","interpolator","use_dynamic_from_value","keyframes","attribute_name","keyframe","get_current_target_value","__get_current_keyframe","evaluate","get_current_starting_value","get_current_progress","__linear_map_01","easing_function","__play_events","name_1","evaluate_keyframe","get_keyframes","channel_name","is_channel_redefined","initial","Infinity","distance","transitions_velocity","URLSearchParams","location","search","set_initial_value_on_channel","set_final_value_on_channel","EasingFunctions","linear","triangular","ease_in_sine","cos","ease_out_sine","sin","ease_in_out_sine","ease_in_cubic","ease_out_cubic","pow","ease_in_out_cubic","ease_in_quad","ease_out_quad","ease_in_out_quad","ease_in_quart","ease_out_quart","ease_in_out_quart","ease_in_quint","ease_out_quint","ease_in_out_quint","ease_in_expo","ease_out_expo","ease_in_out_expo","ease_in_circ","sqrt","ease_out_circ","ease_in_out_circ","ease_in_back","ease_out_back","ease_in_out_back","ease_in_elastic","c4","ease_out_elastic","ease_in_out_elastic","ease_in_bounce","ease_out_bounce","n1","ease_in_out_bounce","heartbeat","sign","ActionInterpolator","NumberInterpolator","DrawIOAnimationSheet","xml_document","animation_nodes","DOMParser","parseFromString","querySelectorAll","animation_tracks","triggers","node","parent_node","parentElement","getAttribute","get_node_x_position","trigger_name","split_data","trigger_method","at_time","value_data","to_value","from_time","to_time","sort","a","x_pos","ActionSequencerBuilder","default_state_data","from_animation_sheet","animation_data","current_context","tracks","initial_tracks","state_to_tracks","get_longest_time","find","element","sequencer","action_event","longest_time","from_draw_io","xml","transition_data","track_time","TransitionTable","transitions","from_state_name","to_state_name","add_transitions","set_transitions","set_default_state_data","Time","__delta_buffer","__previous_elapsed_time","__delta_time","__smooth_delta_time","__elapsed_time","__frame_interpolation_t","fixed_delta_time","smooth_delta_time","__set_frame_interpolation","__update","shift","__calculate_smooth_delta_time","ViewState","before_enter","before_exit","update_enter_transition","global_view_data","transition_progress","action_sequencer","update_exit_transition","ViewStateTransitionHandler","transition_table","last_state","current_state","current_state_data","transitioning","go_to_state","__exit_last_state","__update_transitions","transition_manager","TransitionManager","transition_handler","get_current_state","view_manager","ViewManager","views","browser_title_suffix","__set_views_opacities","go_to_view","view_name","change_url","__change_browser_url","__change_browser_title","go_to_scene","next_view","transition_view","set_next_view","register_view","view","has_view","set_view","set_browser_title_suffix","title_suffix","get_current_view","get_view_by_name","get_by_url","history","pushState","title","__capitalize","set_opacity","string","aux_string","toUpperCase","__snake_to_whitespace","group","ApplicationView","container","current_opacity","classList","opacity","style","CanvasDrawer","uses_dynamic_font","__textHeight","ctx","getFontHeight","fontStyle","getElementsByTagName","dummy","dummyText","createTextNode","appendChild","setAttribute","offsetHeight","removeChild","get_text_size","text","font","measureText","draw_canvas","ctxOptions","font_color","__draw","draw_on_texture","canvas_texture","CanvasTexture","UVMapping","ClampToEdgeWrapping","NearestFilter","generateMipmaps","roundRect","radius","fill","stroke","tl","tr","br","bl","defaultRadius","side","_side","beginPath","moveTo","lineTo","quadraticCurveTo","closePath","SimpleTextDrawer","text_margin","text_size","clearRect","globalAlpha","fillStyle","fillRect","textBaseline","textAlign","fillText","capabilities","Capabilities","max_anisotropy","vertex_texture_sampler_available","fp_textures_available","AxisHelper","scale","blue_points","blue_axis_mat","LineBasicMaterial","color","blue_axis_geo","BufferGeometry","setFromPoints","blue_axis_line","Line","renderOrder","green_points","green_axis_mat","green_axis_geo","green_axis_line","red_points","red_axis_mat","red_axis_geo","red_axis_line","Object3D","ScreenSpaceTextureMaterial","_ScreenSpacePosition","_ScreenSize","_TextureSize","set_position","set_texture","h","set_screen_size","PerspectiveCamera","fov","near","copy","TPerspectiveCamera","Arrow","dir","cylinder_height","cylinder_geo","CylinderGeometry","translate","cone_geometry","ConeGeometry","cone_height","buffer_geometry","BufferGeometryUtils","mergeGeometries","rotateX","MeshBasicMaterial","quaternion","setFromUnitVectors","_dir","Cube","segments","BoxGeometry","Sphere","SphereGeometry","Debug","Vector3_one","Vector3_zero","canvas_renderer","display_texture_meshes","draw_arrow","origin","arrow","normalize","draw_axis","axis","set_debug_RT","rt_debug","draw_rectangle","position_2d","draw_line_2D","strokeStyle","draw_line","line","frustumCulled","draw_cube","pos","cube","draw_oriented_cube","depth","distanceTo","sub","forward_dir","draw_plane","basic_color_vert","basic_color_frag","transparent","draw_empty_cube","box","Box3","setFromCenterAndSize","helper","Box3Helper","draw_sphere","sphere","draw_point_array","input_points","open","catmull","CatmullRomCurve3","updateArcLengths","getSpacedPoints","draw_sphere_helper","sphere_mesh","draw_math_sphere","sphere1","draw_bounding_box","bb","draw_curve","curve","options","offset","draw_texture","mesh","debug","Idle","Animating","easing_function_t","animator","set_property_value","set_current_state","finished_callback","CSSAnimator","css_property","_d","_e","value_prefix","_f","value_suffix","_g","_h","animate","is_animating","OS","operating_systems","ANDROID","IOS","LINUX","MAC","WINDOWS","is_mobile","is_ipad","maxTouchPoints","is_ios","is_android","get_os","is_linux","is_mac","is_windows","platform","os","reflection_plane_context","ReflectionPlaneContext","target_geometry","target_position","set_target_geometry","OrthographicFrustumPointFitter","fit_points","camera_quaternion","vertical_fov","inverse_camera_quat","inverse","inverted_points","applyQuaternion","get_distance_to_fit_rect","getCenter","distance_to_center","v_fov","h_fov","atan","tan","distV","distH","PerspectiveFrustumPointFitter","up_plane_normal","get_up_plane_normal","down_plane_normal","get_down_plane_normal","left_plane_normal","get_left_plane_normal","right_plane_normal","get_right_plane_normal","camera_forward_dir","sphere_center","pull_back_distance","far_pos","up_plane","Plane","setFromNormalAndCoplanarPoint","down_plane","left_plane","right_plane","apply_center_correction_to_pos","closest_distance","inverse_dir","Line3","up_line_intersection","down_line_intersection","left_line_intersection","right_line_intersection","intersectLine","log","new_up_distance","new_down_distance","new_left_distance","new_right_distance","vertical_min","horizontal_min","forward_correction","target_pos","vertical_offset","get_vertical_correction","horizontal_offset","get_horizontal_correction","closest_distance_to_up_plane","closest_distance_to_down_plane","up_dir","down_line","up_line","down_dist","up_dist","correction","closest_distance_to_right_plane","closest_distance_to_left_plane","right_dir","left_line","right_line","left_dist","right_dist","Quaternion","setFromAxisAngle","camera_utilities","CameraUtilities","input","tmp_mat","Matrix4","ray","Ray","tmp_size","tmp_unproj","get_up_dir","tmp_vec","get_forward_dir","get_right_dir","unproject_mouse_position","NDC","get_plane_intersection","plane_position","plane_normal","isPerspectiveCamera","right","top","intersectPlane","fit_points_on_camera","zoom_scale","world_space_center","camera_forward","projected_points_center","up","cross","inverse_mat","invert","applyMatrix4","projected_center","zoom","get_zoom_to_fit_rect","get_zoom_to_fit_box","isOrthographicCamera","obj_x","obj_y","object_aspect","get_html_screen_pos","object","getWorldPosition","project","world_pos_to_screen","update_projection","left","bottom","fit_bounding_box_points","p1","p2","p3","p4","p5","p6","p7","p8","camera_backward_dir","fitter","camera_pos","reference_position_plane","camera_ray","reference_position","camera_position","reference_rotation","reference_zoom","forward","initializer","Initializer","render_loop","KeyboardInput","ctrlz_pressed","ctrlz_fired","keys_keys","on_key_down","on_key_up","keyCode","ctrlKey","code","press_key","release_key","pressed","released","key_name","key","fired","down","release_keys","is_key_pressed","is_key_down","is_key_released","register_key","unregister_key","TOrthographicCamera","NormalMaterial","DebugNormalsRender","DisplayNormalTextureMaterial","depth_normals_vert","_InverseProjMatrix","SSAOComposeMaterial","_AO","SSAOMaterial","_ProjectionMatrix","_Bias","_Radius","_SampleKernel","__get_sample_kernel","_RandomRotation","__get_rotation_kernel","sample_kernel","rotation_kernel","rotation_texture","DataTexture","RGBAFormat","wrapS","RepeatWrapping","wrapT","BoxBlurMaterial","_SampleDir","Blurrer","RT1","RT2","box_blur_mat","blur","NormalAORender","use_ssaa","ssao_mat","ssao_compose_mat","debug_normals","ssaa","main_RT","SSAO_RT","blurrer","__check_RT_size","__update_uniforms","depth_normals_RT","projectionMatrix","NormalRender","GaussianBlurMaterial","kernel_radius","KERNEL_RADIUS","SIGMA","texSize","direction","set_size","set_direction","set_radius","LuminosityHighPassMaterial","luminosityThreshold","smoothWidth","defaultColor","defaultOpacity","set_threshold","value_01","GaussianBlurrer","current_width","current_height","separableBlurMaterials","renderTargetsHorizontal","renderTargetsVertical","kernelSizeArray","rt_pars","minFilter","LinearFilter","magFilter","format","HalfFloatType","UnsignedByteType","LinearSRGBColorSpace","renderTargetBright","init_materials","init_RT","luminosity_high_pass_mat","use_luminosity_high_pass","resize_RT","inputRenderTarget","get_blurred_texture","get_blurred_RT","dispose_RT","hor","ver","texture_width","texture_height","dispose_materials","set_luminosity_threshold","UnrealBloomRender","use_antialiasing","use_hight_luminosity_pass","use_rendering_size","add_mat","rt_settings","samples","bloom_compose_mat","luminosity_threshold","val","VRRender","render_spectator_camera","spectator_camera","spectator","isPresenting","xrCam","getCamera","currentRenderTarget","view_component_manager","ViewComponentManager","components","enabled_components","Set","__set_components_opacities","register_component","component","enable_component","disable_component","delete","get_component_by_name","component_name","RenderLoop","target_application","is_running","frames_passed","time_accumulator","setAnimationLoop","screen","Screen","ViewComponent","hidden","toggle_hidden","HorizontalPlane","VerticalPlane","ArrayUtilities","merge_from_to","source","expand_vec3_array","items_left_count","remove_elem","elem","get_closest_point","closest_point","object_values_to_array","obj","ids","FrustumPointFitter","get_hozirontal_correction","closest_up_point","closest_down_point","closest_right_point","closest_left_point","GeometryUtilities","convert_to_non_indexed_geometry","geometry_buffer","indices","positions","vertices","count","getX","getY","getZ","BufferAttribute","add_barycentric_attribute","non_indexed_geometry_buffer","bar_coordinates","HTMLUtilities","load_images","images","dataset","image_objects","image_object","load_videos","videos","video","load_iframes","iframes","iframe","load_elements","selector","ImageUtilities","get_image_data","getImageData","get_pixel","imagedata","mesh_sampler","MeshSampler","sample","sample_count","face_areas","min_area","normals","tangents","uvs","faces","index_0","index_1","index_2","v1","v2","v3","face","c","tangent","uv_a","uv_b","uv_c","n2","n3","area","get_face_area","normalized_faces_array","get_uniform_face_distribution","selected_faces","select_random_faces","sample_data_from_faces","sampled_points","sampled_normals","sampled_tangents","sampled_uvs","w1","w2","sample_point_in_face","amount","selected_face","minimum_area","extended_triangle_indices","repetitions_needed","j","vec1","vec2","w3","model_utilities","ModelUtilities","get_mesh","result_callback","get_geometries","geometries","assign_material","clone_animated_gltf","animations","skinnedMeshes","isSkinnedMesh","cloneBones","cloneSkinnedMeshes","isBone","skeleton","cloneSkinnedMesh","orderedCloneBones","bones","cloneBone","Skeleton","boneInverses","matrixWorld","set_shadow_config","cast","receive","castShadow","receiveShadow","__find_object","object_name","get_object","get_object_by_type","object_type","ObjectUtilities","is_object","item","merge_deep","sources","arguments","pack","ar","l","__spreadArray","xml_to_json","nodeType","attribute","nodeName","nodeValue","hasChildNodes","childNodes","old","StringUtilities","hexValues","hex","capitalize","words","substr","capitalize_first_letter","charAt","snake_to_camelcase","TimeUtilities","time_str_to_ms","time_str","time_str_splitted","hours","minutes","seconds","Validation","is_json","str","Grid","baryc","a3","gridColor","uniform","vBarycentric","vec3","alpha","fwidth","smoothstep","mul","colorNode","mix","opacityNode","oneMinus","createGridShader","MeshBasicNodeMaterial","plane_geometry","non_indexed_geometry","rotation","_Thickness","_Length","_ElapsedTime","setup","next_position","previous_position","orientation","coverage","accumulated_length","next_point","__get_next_position","previous_point","__get_previous_position","vertexList","nextPositionList","previousPositionList","orientationList","coverageList","setIndex","_length","total_length","parent","copy_color","WorldImage","pivot","_ScreenAligned","_Scale","_Opacity","DoubleSide","current_scale","computeBoundingBox","tmp_bb_size","boundingBox","update_texture","img","boolean","Text2D","simple_text_drawer","draw_settings","LinearMipMapLinearFilter","UpdatableMaterialMesh","self","onBeforeRender","SDFTextMaterial","_Texture","_Boldness","_AtlasSize","set_atlas_size","set_boldness","TextGlyph","plane_bounds","atlas_bounds","SDFText","glyph_layout","glyphs","glyph_is_dirty","matrix_is_dirty","color_is_dirty","matrix","pivot_point","__opacity","__text","__generate_glyphs","update_matrix","compose","clear_glyph_dirty","clear_color_dirty","set_rotation","tilt","new_orientation","new_tilt","multiply","set_color","set_pivot","update_glyphs","cursor","unicode","charCodeAt","glyph","this_1","planeBounds","text_glyph","atlasBounds","advance","box2","Box2","first_glyph","union","box2_size","SDFTextBatch","font_layout","atlas_texture","instanced_geometry","InstancedBufferGeometry","instanceCount","Float32BufferAttribute","transformsCol0","InstancedBufferAttribute","max_allocations","transformsCol1","transformsCol2","transformsCol3","glyph_bounds","usage","DynamicDrawUsage","text_elements","atlas","add_text","text_str","remove_text","text_elem","force_update","glyph_bounds_atr","plane_bounds_atr","color_atr","matrix_needs_update","glyph_needs_update","color_needs_update","glyph_count","glyph_i","buffer_i","setXYZW","VectorInterpolator","tmp","AlphaFilterMaterial","_Offset","DualFilteringBlurMaterial","upsample","DualFilteringBlurrer","RT0","RT3","RT4","upscale_blur_mat","downscale_blur_mat","alpha_filter_mat","check_RT_resize","MedianFilterMaterial","kernel3x3","_SourceTex","_SourceTexSize","get_size","isVideoTexture","videoWidth","videoHeight","isWebGLRenderTarget","isTexture","MedianFilter","FloatType","median_filter_mat","filter","tex_size","ParticleAttribute","attr_name","update_material","write","init_from_geometry","init_from_attribute","particle_attribute","build_RT","particle_count","resolution","calculate_resolution","colorScape","stencilBuffer","depthBuffer","swap_RT","attribute_writter_scene","store_geometry_attribute_in_RT","storage_material","deleteAttribute","get_texture","GPUParticleSystem","build_point_mesh","attribute_writter_mesh","build_attribute_writter_mesh","add_texture_attribute","buffer_attribute","add_update_attribute_array","item_size","add_attribute_array","instance_count","geo","instanced_geo","build_uv_storage_attribute","Points","ParticleStorageMaterial","ParticlePositionAttribute","store_geometry","pos_attr","store_positions","DAELoader","ColladaLoader","FileLoader","TFileLoader","file","FontLoader","TFontLoader","JSONLoader","json","OBJLoader","TOBJLoader","PointArrayLoader","parse_path","raw_data","string_array","TextLoader","TextureLoader","VideoLoader","ResourceBatch","batch_name","resource_loaders","add_loader","print_errors","get_loaded_bytes","get_total_bytes","Compilator"],"mappings":"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"}
|