ohzi-core 12.5.2 → 12.7.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.
Files changed (265) hide show
  1. package/README.md +9 -9
  2. package/build/index.mjs +1 -1
  3. package/build/index.mjs.map +1 -1
  4. package/build/index.module.js +2 -0
  5. package/build/index.module.js.map +1 -0
  6. package/package.json +64 -63
  7. package/src/.vscode/settings.json +2 -2
  8. package/src/BaseApplication.js +40 -40
  9. package/src/Browser.js +119 -119
  10. package/src/CameraManager.js +37 -37
  11. package/src/Capabilities.js +13 -13
  12. package/src/CustomBezierCurve.js +58 -58
  13. package/src/Debug.js +359 -359
  14. package/src/Graphics.js +507 -507
  15. package/src/Initializer.js +56 -56
  16. package/src/KeyboardInput.js +177 -177
  17. package/src/OS.js +59 -59
  18. package/src/OScreen.js +90 -90
  19. package/src/OrthographicCamera.js +36 -36
  20. package/src/PerspectiveCamera.js +34 -34
  21. package/src/ReflectionPlaneContext.js +22 -22
  22. package/src/RenderLayers.js +30 -30
  23. package/src/RenderLoop.js +125 -122
  24. package/src/RenderOrder.js +40 -40
  25. package/src/ResourceContainer.js +57 -57
  26. package/src/SceneManager.js +55 -55
  27. package/src/Screen.js +71 -71
  28. package/src/Time.js +99 -98
  29. package/src/UI.js +106 -106
  30. package/src/action_sequencer/ActionEvent.js +22 -22
  31. package/src/action_sequencer/ActionInterpolator.js +39 -39
  32. package/src/action_sequencer/ActionSequencer.js +338 -338
  33. package/src/action_sequencer/NumberInterpolator.js +42 -42
  34. package/src/action_sequencer/VectorInterpolator.js +34 -34
  35. package/src/blitter_index.js +14 -14
  36. package/src/canvas_drawer/CanvasDrawer.js +146 -146
  37. package/src/canvas_drawer/MultiLineTextDrawer.js +58 -58
  38. package/src/canvas_drawer/SimpleTextDrawer.js +55 -55
  39. package/src/components/AudioClip.js +67 -67
  40. package/src/components/AxisHelper.js +60 -60
  41. package/src/components/BaseObject.js +50 -50
  42. package/src/components/EdgeMesh.js +172 -172
  43. package/src/components/GeometryEdgeVisualizer.js +57 -57
  44. package/src/components/Grid.js +40 -40
  45. package/src/components/Line.js +225 -225
  46. package/src/components/MultiLinePath.js +25 -25
  47. package/src/components/MultiLineText2D.js +75 -75
  48. package/src/components/ObjectAxis.js +27 -27
  49. package/src/components/ObjectOrientedBoundingBox.js +228 -228
  50. package/src/components/PlaneHelper.js +38 -38
  51. package/src/components/Shape2D.js +52 -52
  52. package/src/components/Shape3D.js +46 -46
  53. package/src/components/Text2D.js +49 -49
  54. package/src/components/UIElement.js +246 -246
  55. package/src/components/UpdatableMaterialMesh.js +26 -26
  56. package/src/components/WorldImage.js +101 -101
  57. package/src/components/mouse_interactors/ObjectRotator.js +64 -64
  58. package/src/components/sdf_text/SDFText.js +156 -156
  59. package/src/components/sdf_text/SDFTextBatch.js +195 -195
  60. package/src/components/sdf_text/TextGlyph.js +17 -17
  61. package/src/data_textures/CustomDataTexture.js +53 -53
  62. package/src/data_textures/RGBADataTexture.js +14 -14
  63. package/src/data_textures/RGBAFloatDataTexture.js +14 -14
  64. package/src/data_textures/RGBDataTexture.js +14 -14
  65. package/src/data_textures/RGBFloatDataTexture.js +13 -13
  66. package/src/editor/ManipulatorHandle.js +73 -73
  67. package/src/editor/ObjectEditor.js +68 -68
  68. package/src/editor/ObjectManipulator.js +112 -112
  69. package/src/editor/ObjectPicker.js +77 -77
  70. package/src/editor/shaders/object_picker.frag +5 -5
  71. package/src/editor/shaders/object_picker.vert +7 -7
  72. package/src/gpu_particles/GPUParticleSystem.js +111 -111
  73. package/src/gpu_particles/ParticleAttribute.js +89 -89
  74. package/src/gpu_particles/ParticlePositionAttribute.js +42 -42
  75. package/src/html_utilities/CSSAnimator.js +66 -66
  76. package/src/html_utilities/css_animator_states/Animating.js +46 -46
  77. package/src/html_utilities/css_animator_states/Idle.js +27 -27
  78. package/src/index.js +134 -134
  79. package/src/loaders/AsyncAbstractLoader.js +160 -160
  80. package/src/loaders/AsyncAudiosLoader.js +34 -34
  81. package/src/loaders/AsyncObjectsLoader.js +44 -44
  82. package/src/loaders/AsyncTexturesLoader.js +81 -70
  83. package/src/loaders/assets_loader/AsyncAssetsLoaderWorker.js +69 -69
  84. package/src/loaders/assets_loader/ResourceContainer.js +37 -37
  85. package/src/loaders/assets_loader/ResourceLoaderChecker.js +39 -39
  86. package/src/materials/AddMaterial.js +20 -20
  87. package/src/materials/AlphaFilterMaterial.js +23 -23
  88. package/src/materials/BaseShaderMaterial.js +21 -21
  89. package/src/materials/BlitMaterial.js +30 -30
  90. package/src/materials/BloomComposeMaterial.js +24 -24
  91. package/src/materials/BoxBlurMaterial.js +16 -16
  92. package/src/materials/ClearAlphaMaterial.js +15 -15
  93. package/src/materials/ClearColorMaterial.js +33 -33
  94. package/src/materials/ClearDepthNormalMaterial.js +16 -16
  95. package/src/materials/DeferredRendererComposeMaterial.js +35 -35
  96. package/src/materials/DepthNormalMaterial.js +30 -30
  97. package/src/materials/DisplayNormalTextureMaterial.js +18 -18
  98. package/src/materials/DualFilteringBlurMaterial.js +14 -14
  99. package/src/materials/FXAAMaterial.js +12 -12
  100. package/src/materials/GaussianBlurMaterial.js +40 -40
  101. package/src/materials/LuminosityHighPassMaterial.js +26 -26
  102. package/src/materials/MedianFilterMaterial.js +45 -45
  103. package/src/materials/NormalMaterial.js +19 -19
  104. package/src/materials/SDFScreenTextMaterial.js +34 -34
  105. package/src/materials/SDFTextMaterial.js +41 -41
  106. package/src/materials/SSAOComposeMaterial.js +14 -14
  107. package/src/materials/SSAOMaterial.js +65 -65
  108. package/src/materials/ScreenSpaceTextureMaterial.js +67 -67
  109. package/src/materials/UIElementMaterial.js +30 -30
  110. package/src/materials/UnrealBloomComposeMaterial.js +100 -100
  111. package/src/materials/UnrealBlurMaterial.js +20 -20
  112. package/src/materials/UnrealComposeMaterial.js +27 -27
  113. package/src/materials/ViewPositionMaterial.js +19 -19
  114. package/src/materials/deferred/DeferredPointLightMaterial.js +42 -42
  115. package/src/materials/gpu_particles/AttributeUpdateMaterial.js +37 -37
  116. package/src/materials/gpu_particles/BasicParticleMaterial.js +25 -25
  117. package/src/materials/gpu_particles/ParticleStorageMaterial.js +37 -37
  118. package/src/materials/gpu_particles/PositionStorageMaterial.js +26 -26
  119. package/src/object_pool/Pool.js +75 -75
  120. package/src/primitives/Arrow.js +62 -62
  121. package/src/primitives/Cube.js +24 -24
  122. package/src/primitives/HorizontalPlane.js +27 -27
  123. package/src/primitives/Sphere.js +22 -22
  124. package/src/primitives/VerticalPlane.js +26 -26
  125. package/src/raycast/GroupRaycaster.js +43 -43
  126. package/src/raycast/PlaneDragResolver.js +92 -92
  127. package/src/raycast/PlaneRaycastResolver.js +24 -24
  128. package/src/raycast/PlaneRaycaster.js +25 -25
  129. package/src/raycast/RaycastResolver.js +24 -24
  130. package/src/raycast/SurfaceDragResolver.js +80 -80
  131. package/src/raycast/states/BaseState.js +18 -18
  132. package/src/raycast/states/IdleState.js +19 -19
  133. package/src/raycast/states/OnRaycastEnter.js +17 -17
  134. package/src/raycast/states/OnRaycastExit.js +18 -18
  135. package/src/raycast/states/OnRaycastHover.js +27 -27
  136. package/src/render_mode/BaseRender.js +34 -34
  137. package/src/render_mode/BloomRender.js +63 -63
  138. package/src/render_mode/DebugNormalsRender.js +22 -22
  139. package/src/render_mode/DeferredRender.js +110 -110
  140. package/src/render_mode/NormalAORender.js +72 -72
  141. package/src/render_mode/NormalRender.js +38 -38
  142. package/src/render_mode/OutlineRender.js +157 -157
  143. package/src/render_mode/PlanarReflectionsRender.js +121 -121
  144. package/src/render_mode/UnrealBloomRender.js +123 -123
  145. package/src/render_mode/VRRender.js +71 -71
  146. package/src/render_utilities/Blitter.js +101 -101
  147. package/src/render_utilities/Blurrer.js +31 -31
  148. package/src/render_utilities/DepthAndNormalsRenderer.js +47 -47
  149. package/src/render_utilities/DualFilteringBlurrer.js +58 -58
  150. package/src/render_utilities/GaussianBlurrer.js +167 -167
  151. package/src/render_utilities/MedianFilter.js +68 -68
  152. package/src/render_utilities/ViewPositionRenderer.js +50 -50
  153. package/src/resource_loader/BasisLoader.js +51 -51
  154. package/src/resource_loader/FontLoader.js +48 -48
  155. package/src/resource_loader/JSONLoader.js +35 -35
  156. package/src/resource_loader/OBJLoader.js +48 -48
  157. package/src/resource_loader/PointArrayLoader.js +72 -72
  158. package/src/resource_loader/RGBETextureLoader.js +48 -48
  159. package/src/resource_loader/VideoLoader.js +32 -32
  160. package/src/scenes/AbstractScene.js +175 -175
  161. package/src/scenes/loading_states/CompilatorManager.js +41 -41
  162. package/src/scenes/loading_states/HighQualityLoadingState.js +28 -28
  163. package/src/scenes/loading_states/LoadingState.js +117 -117
  164. package/src/scenes/loading_states/RegularLoadingState.js +41 -41
  165. package/src/shaders/add/add.frag +27 -27
  166. package/src/shaders/anti_aliasing/fxaa.frag +72 -72
  167. package/src/shaders/basic_color/basic_color.frag +5 -5
  168. package/src/shaders/basic_color/basic_color.vert +9 -9
  169. package/src/shaders/basic_line/basic_line.frag +36 -36
  170. package/src/shaders/basic_line/basic_line.vert +37 -37
  171. package/src/shaders/basic_texture/basic_texture.frag +9 -9
  172. package/src/shaders/basic_texture/basic_texture.vert +16 -16
  173. package/src/shaders/bloom/bloom_compose_frag.glsl +22 -22
  174. package/src/shaders/bloom/cheap_bloom_compose_frag.glsl +13 -13
  175. package/src/shaders/box_blur/box_blur.frag +24 -24
  176. package/src/shaders/box_blur/compose.frag +31 -31
  177. package/src/shaders/clear/clear_depth_normal.frag +24 -24
  178. package/src/shaders/copy/copy.frag +6 -6
  179. package/src/shaders/copy/copy.vert +5 -5
  180. package/src/shaders/deferred/blit_copy.vert +11 -11
  181. package/src/shaders/deferred/deferred_compose.frag +59 -59
  182. package/src/shaders/deferred/point_light.frag +66 -66
  183. package/src/shaders/deferred/point_light.vert +13 -13
  184. package/src/shaders/depth_normals/debug_normals.frag +47 -47
  185. package/src/shaders/depth_normals/depth_normals.frag +30 -30
  186. package/src/shaders/depth_normals/depth_normals.vert +12 -12
  187. package/src/shaders/dual_filter_blur/alpha_filter.frag +14 -14
  188. package/src/shaders/dual_filter_blur/downsample.frag +21 -21
  189. package/src/shaders/dual_filter_blur/upsample.frag +24 -24
  190. package/src/shaders/edge_visualizer/edge_visualizer.frag +17 -17
  191. package/src/shaders/edge_visualizer/edge_visualizer.vert +15 -15
  192. package/src/shaders/edges/corners.frag +10 -10
  193. package/src/shaders/edges/corners.vert +30 -30
  194. package/src/shaders/edges/edges.frag +6 -6
  195. package/src/shaders/edges/edges.vert +27 -27
  196. package/src/shaders/gaussian_blur/gaussian_blur.frag +43 -43
  197. package/src/shaders/gaussian_blur/unreal_bloom_compose.frag +36 -36
  198. package/src/shaders/gpu_particles/common_utils.glsl +12 -12
  199. package/src/shaders/gpu_particles/generic_storage.frag +6 -6
  200. package/src/shaders/gpu_particles/store/store_position.vert +14 -14
  201. package/src/shaders/gpu_particles/update/basic_update.frag +20 -20
  202. package/src/shaders/gpu_particles/visualize/visualize.frag +10 -10
  203. package/src/shaders/gpu_particles/visualize/visualize.vert +12 -12
  204. package/src/shaders/grid/grid.frag +16 -16
  205. package/src/shaders/grid/grid.vert +9 -9
  206. package/src/shaders/luminosity_high_pass/luminosity_high_pass.frag +37 -37
  207. package/src/shaders/median_filter/median_filter.frag +134 -134
  208. package/src/shaders/normal/normal.frag +6 -6
  209. package/src/shaders/normal/normal.vert +6 -6
  210. package/src/shaders/sdf_text/sdf_screen_text.frag +51 -51
  211. package/src/shaders/sdf_text/sdf_screen_text.vert +41 -41
  212. package/src/shaders/sdf_text/sdf_text.frag +53 -53
  213. package/src/shaders/sdf_text/sdf_text.vert +41 -41
  214. package/src/shaders/ssao/hbao.frag +264 -264
  215. package/src/shaders/ssao/ssao.frag +95 -95
  216. package/src/shaders/ssao/ssao.vert +10 -10
  217. package/src/shaders/ssao/ssao_compose.frag +14 -14
  218. package/src/shaders/transparent_mix/copy.frag +6 -6
  219. package/src/shaders/transparent_mix/transparent_mix.frag +18 -18
  220. package/src/shaders/transparent_mix/transparent_mix.vert +7 -7
  221. package/src/shaders/ui/ss_texture.frag +10 -10
  222. package/src/shaders/ui/ss_texture.vert +31 -31
  223. package/src/shaders/ui/ws_texture.vert +38 -38
  224. package/src/shaders/ui_element/ui_element.frag +11 -11
  225. package/src/shaders/ui_element/ui_element.vert +32 -32
  226. package/src/shaders/unreal_blur/unreal_blur.frag +24 -24
  227. package/src/shaders/unreal_blur/unreal_compose.frag +23 -23
  228. package/src/shaders/write_view_position/write_view_position.frag +6 -6
  229. package/src/shaders/write_view_position/write_view_position.vert +8 -8
  230. package/src/static_batcher/BatchedMesh.js +56 -56
  231. package/src/static_batcher/GeometryBatch.js +308 -308
  232. package/src/static_batcher/GeometryBatcher.js +64 -64
  233. package/src/static_batcher/MeshBatcher.js +58 -58
  234. package/src/ui/ui_element_position/ScreenSpacePosition.js +16 -16
  235. package/src/ui/ui_element_position/WorldSpacePosition.js +23 -23
  236. package/src/ui/ui_element_state/OnIdle.js +24 -24
  237. package/src/ui/ui_element_state/OnMouseEnter.js +39 -39
  238. package/src/ui/ui_element_state/OnMouseExit.js +22 -22
  239. package/src/ui/ui_element_state/OnMouseHover.js +46 -46
  240. package/src/ui/ui_element_state/UIElementState.js +34 -34
  241. package/src/utilities/ArrayUtilities.js +57 -57
  242. package/src/utilities/CameraUtilities.js +283 -283
  243. package/src/utilities/EasingFunctions.js +231 -231
  244. package/src/utilities/FrustumPointFitter.js +257 -257
  245. package/src/utilities/GeometryUtilities.js +76 -76
  246. package/src/utilities/HTMLUtilities.js +76 -76
  247. package/src/utilities/ImageUtilities.js +28 -28
  248. package/src/utilities/MeshSampler.js +206 -206
  249. package/src/utilities/ModelUtilities.js +162 -162
  250. package/src/utilities/OMath.js +158 -158
  251. package/src/utilities/OrthographicFrustumPointFitter.js +49 -49
  252. package/src/utilities/PerspectiveFrustumPointFitter.js +254 -254
  253. package/src/utilities/StringUtilities.js +43 -43
  254. package/src/utilities/TimeUtilities.js +24 -24
  255. package/src/utilities/Validation.js +36 -36
  256. package/src/view_components/ApplicationView.js +73 -73
  257. package/src/view_components/TransitionManager.js +75 -75
  258. package/src/view_components/ViewComponent.js +61 -61
  259. package/src/view_components/ViewComponentManager.js +69 -69
  260. package/src/view_components/ViewManager.js +145 -145
  261. package/src/view_components/ViewState.js +49 -49
  262. package/src/view_components/transition/ActionSequencerBuilder.js +124 -124
  263. package/src/view_components/transition/DrawIOAnimationSheet.js +92 -92
  264. package/src/view_components/transition/TransitionTable.js +54 -54
  265. package/src/view_components/transition/ViewStateTransitionHandler.js +106 -106
@@ -1,64 +1,64 @@
1
- import { GeometryBatch } from './GeometryBatch';
2
-
3
- import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js';
4
-
5
- import { BufferAttribute } from 'three';
6
- import { OMath } from '../utilities/OMath';
7
-
8
- class GeometryBatcher
9
- {
10
- init()
11
- {
12
- this.batches = [];
13
- }
14
-
15
- batch(buffer_geometries)
16
- {
17
- const attr_accessor_uvs = [];
18
- const texture_width = OMath.ceilPowerOfTwo(Math.sqrt(buffer_geometries.length));
19
- // console.log("Store count: " + buffer_geometries.length + ", Texture size: " +texture_width);
20
-
21
- this.__init_uv_array(attr_accessor_uvs, texture_width);
22
-
23
- let uv_index = 0;
24
-
25
- for (let i = 0; i < buffer_geometries.length; i++)
26
- {
27
- const vertex_count = buffer_geometries[i].getAttribute('position').count;
28
- const y = Math.floor(i / texture_width);
29
- const x = i - texture_width * y;
30
- for (let count = 0; count < vertex_count; count++)
31
- {
32
- attr_accessor_uvs[uv_index] = (x / texture_width) + 0.5 / texture_width;
33
- attr_accessor_uvs[uv_index + 1] = (y / texture_width) + 0.5 / texture_width;
34
- uv_index += 2;
35
- }
36
- }
37
-
38
- const buffer_attribute = new BufferAttribute(new Float32Array(attr_accessor_uvs), 2);
39
- const buffer_geometry = BufferGeometryUtils.mergeGeometries(buffer_geometries);
40
- buffer_geometry.setAttribute('attr_accessor_uv', buffer_attribute);
41
-
42
- this.batches.push(new GeometryBatch(buffer_geometry, texture_width));
43
- return this.batches[this.batches.length - 1];
44
- }
45
-
46
- upload_texture_data(renderer)
47
- {
48
- for (let i = 0; i < this.batches.length; i++)
49
- {
50
- this.batches[i].upload_texture_data(renderer, 1);
51
- }
52
- }
53
-
54
- __init_uv_array(uvs, texture_width)
55
- {
56
- for (let i = 0; i < texture_width * texture_width * 2; i++)
57
- {
58
- uvs.push(0);
59
- }
60
- }
61
- }
62
-
63
- const geometry_batcher = new GeometryBatcher();
64
- export { geometry_batcher as GeometryBatcher };
1
+ import { GeometryBatch } from './GeometryBatch';
2
+
3
+ import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js';
4
+
5
+ import { BufferAttribute } from 'three';
6
+ import { OMath } from '../utilities/OMath';
7
+
8
+ class GeometryBatcher
9
+ {
10
+ init()
11
+ {
12
+ this.batches = [];
13
+ }
14
+
15
+ batch(buffer_geometries)
16
+ {
17
+ const attr_accessor_uvs = [];
18
+ const texture_width = OMath.ceilPowerOfTwo(Math.sqrt(buffer_geometries.length));
19
+ // console.log("Store count: " + buffer_geometries.length + ", Texture size: " +texture_width);
20
+
21
+ this.__init_uv_array(attr_accessor_uvs, texture_width);
22
+
23
+ let uv_index = 0;
24
+
25
+ for (let i = 0; i < buffer_geometries.length; i++)
26
+ {
27
+ const vertex_count = buffer_geometries[i].getAttribute('position').count;
28
+ const y = Math.floor(i / texture_width);
29
+ const x = i - texture_width * y;
30
+ for (let count = 0; count < vertex_count; count++)
31
+ {
32
+ attr_accessor_uvs[uv_index] = (x / texture_width) + 0.5 / texture_width;
33
+ attr_accessor_uvs[uv_index + 1] = (y / texture_width) + 0.5 / texture_width;
34
+ uv_index += 2;
35
+ }
36
+ }
37
+
38
+ const buffer_attribute = new BufferAttribute(new Float32Array(attr_accessor_uvs), 2);
39
+ const buffer_geometry = BufferGeometryUtils.mergeGeometries(buffer_geometries);
40
+ buffer_geometry.setAttribute('attr_accessor_uv', buffer_attribute);
41
+
42
+ this.batches.push(new GeometryBatch(buffer_geometry, texture_width));
43
+ return this.batches[this.batches.length - 1];
44
+ }
45
+
46
+ upload_texture_data(renderer)
47
+ {
48
+ for (let i = 0; i < this.batches.length; i++)
49
+ {
50
+ this.batches[i].upload_texture_data(renderer, 1);
51
+ }
52
+ }
53
+
54
+ __init_uv_array(uvs, texture_width)
55
+ {
56
+ for (let i = 0; i < texture_width * texture_width * 2; i++)
57
+ {
58
+ uvs.push(0);
59
+ }
60
+ }
61
+ }
62
+
63
+ const geometry_batcher = new GeometryBatcher();
64
+ export { geometry_batcher as GeometryBatcher };
@@ -1,58 +1,58 @@
1
- import { BatchedMesh } from './BatchedMesh';
2
-
3
- import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js';
4
-
5
- import { BufferAttribute } from 'three';
6
-
7
- class MeshBatcher
8
- {
9
- batch(meshes, material)
10
- {
11
- const max_texture_width = 2048;
12
- // let texture_width = meshes.length % max_texture_width;
13
- // let texture_height = Math.ceil(meshes.length / max_texture_width);
14
-
15
- // console.log("Store count: " + buffer_geometries.length + ", Texture size: " +texture_width);
16
-
17
- const geometries = [];
18
- const id_table = {};
19
-
20
- const attr_mesh_id = [];
21
-
22
- for (let i = 0; i < meshes.length; i++)
23
- {
24
- const mesh = meshes[i];
25
- const vertex_count = mesh.geometry.getAttribute('position').count;
26
-
27
- for (let count = 0; count < vertex_count; count++)
28
- {
29
- attr_mesh_id.push(i);
30
- }
31
-
32
- geometries.push(mesh.geometry);
33
-
34
- if (id_table[mesh.name] === undefined)
35
- {
36
- id_table[mesh.name] = i;
37
- }
38
- else
39
- {
40
- console.error('Mesh name is duplicated when trying to merge meshes. Non-unique id error.', mesh.name, id_table);
41
- }
42
- }
43
-
44
- const buffer_geometry = BufferGeometryUtils.mergeGeometries(geometries);
45
-
46
- const buffer_attribute = new BufferAttribute(new Float32Array(attr_mesh_id), 1);
47
- buffer_geometry.setAttribute('mesh_id', buffer_attribute);
48
-
49
- return this.create_batched_mesh(id_table, buffer_geometry, material, max_texture_width);
50
- }
51
-
52
- create_batched_mesh(id_table, buffer_geometry, material, max_texture_width)
53
- {
54
- return new BatchedMesh(id_table, buffer_geometry, material, max_texture_width);
55
- }
56
- }
57
-
58
- export { MeshBatcher };
1
+ import { BatchedMesh } from './BatchedMesh';
2
+
3
+ import * as BufferGeometryUtils from 'three/examples/jsm/utils/BufferGeometryUtils.js';
4
+
5
+ import { BufferAttribute } from 'three';
6
+
7
+ class MeshBatcher
8
+ {
9
+ batch(meshes, material)
10
+ {
11
+ const max_texture_width = 2048;
12
+ // let texture_width = meshes.length % max_texture_width;
13
+ // let texture_height = Math.ceil(meshes.length / max_texture_width);
14
+
15
+ // console.log("Store count: " + buffer_geometries.length + ", Texture size: " +texture_width);
16
+
17
+ const geometries = [];
18
+ const id_table = {};
19
+
20
+ const attr_mesh_id = [];
21
+
22
+ for (let i = 0; i < meshes.length; i++)
23
+ {
24
+ const mesh = meshes[i];
25
+ const vertex_count = mesh.geometry.getAttribute('position').count;
26
+
27
+ for (let count = 0; count < vertex_count; count++)
28
+ {
29
+ attr_mesh_id.push(i);
30
+ }
31
+
32
+ geometries.push(mesh.geometry);
33
+
34
+ if (id_table[mesh.name] === undefined)
35
+ {
36
+ id_table[mesh.name] = i;
37
+ }
38
+ else
39
+ {
40
+ console.error('Mesh name is duplicated when trying to merge meshes. Non-unique id error.', mesh.name, id_table);
41
+ }
42
+ }
43
+
44
+ const buffer_geometry = BufferGeometryUtils.mergeGeometries(geometries);
45
+
46
+ const buffer_attribute = new BufferAttribute(new Float32Array(attr_mesh_id), 1);
47
+ buffer_geometry.setAttribute('mesh_id', buffer_attribute);
48
+
49
+ return this.create_batched_mesh(id_table, buffer_geometry, material, max_texture_width);
50
+ }
51
+
52
+ create_batched_mesh(id_table, buffer_geometry, material, max_texture_width)
53
+ {
54
+ return new BatchedMesh(id_table, buffer_geometry, material, max_texture_width);
55
+ }
56
+ }
57
+
58
+ export { MeshBatcher };
@@ -1,16 +1,16 @@
1
- import { Vector2 } from 'three';
2
-
3
- class ScreenSpacePosition
4
- {
5
- constructor()
6
- {
7
- this.tmp_vec = new Vector2();
8
- }
9
-
10
- get_pos_NDC(position)
11
- {
12
- return this.tmp_vec.set(position.x, position.y);
13
- }
14
- }
15
-
16
- export { ScreenSpacePosition };
1
+ import { Vector2 } from 'three';
2
+
3
+ class ScreenSpacePosition
4
+ {
5
+ constructor()
6
+ {
7
+ this.tmp_vec = new Vector2();
8
+ }
9
+
10
+ get_pos_NDC(position)
11
+ {
12
+ return this.tmp_vec.set(position.x, position.y);
13
+ }
14
+ }
15
+
16
+ export { ScreenSpacePosition };
@@ -1,23 +1,23 @@
1
- import { CameraManager } from '../../CameraManager';
2
-
3
- import { Vector2 } from 'three';
4
- import { Vector3 } from 'three';
5
-
6
- class WorldSpacePosition
7
- {
8
- constructor()
9
- {
10
- this.tmp_vec3 = new Vector3();
11
- this.tmp_vec2 = new Vector2();
12
- }
13
-
14
- get_pos_NDC(position)
15
- {
16
- this.tmp_vec3.copy(position);
17
- this.tmp_vec3.project(CameraManager.current);
18
-
19
- return this.tmp_vec2.set(this.tmp_vec3.x, this.tmp_vec3.y);
20
- }
21
- }
22
-
23
- export { WorldSpacePosition };
1
+ import { CameraManager } from '../../CameraManager';
2
+
3
+ import { Vector2 } from 'three';
4
+ import { Vector3 } from 'three';
5
+
6
+ class WorldSpacePosition
7
+ {
8
+ constructor()
9
+ {
10
+ this.tmp_vec3 = new Vector3();
11
+ this.tmp_vec2 = new Vector2();
12
+ }
13
+
14
+ get_pos_NDC(position)
15
+ {
16
+ this.tmp_vec3.copy(position);
17
+ this.tmp_vec3.project(CameraManager.current);
18
+
19
+ return this.tmp_vec2.set(this.tmp_vec3.x, this.tmp_vec3.y);
20
+ }
21
+ }
22
+
23
+ export { WorldSpacePosition };
@@ -1,24 +1,24 @@
1
- import { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars
2
- import { UIElementState } from './UIElementState';
3
-
4
- class OnIdle extends UIElementState
5
- {
6
- constructor()
7
- {
8
- super();
9
- }
10
-
11
- /**
12
- * @param {UIElement} ui_element
13
- * @param {Vector2} normalized_mouse_position
14
- */
15
- update(ui_element, normalized_mouse_position)
16
- {
17
- if (ui_element.is_mouse_over(normalized_mouse_position))
18
- {
19
- ui_element.set_state(ui_element._on_enter_state);
20
- }
21
- }
22
- }
23
-
24
- export { OnIdle };
1
+ import { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars
2
+ import { UIElementState } from './UIElementState';
3
+
4
+ class OnIdle extends UIElementState
5
+ {
6
+ constructor()
7
+ {
8
+ super();
9
+ }
10
+
11
+ /**
12
+ * @param {UIElement} ui_element
13
+ * @param {Vector2} normalized_mouse_position
14
+ */
15
+ update(ui_element, normalized_mouse_position)
16
+ {
17
+ if (ui_element.is_mouse_over(normalized_mouse_position))
18
+ {
19
+ ui_element.set_state(ui_element._on_enter_state);
20
+ }
21
+ }
22
+ }
23
+
24
+ export { OnIdle };
@@ -1,39 +1,39 @@
1
- // @ts-check
2
- import { Vector2 } from 'three'; // eslint-disable-line no-unused-vars
3
- import { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars
4
- import { UIElementState } from './UIElementState';
5
-
6
- class OnMouseEnter extends UIElementState
7
- {
8
- constructor()
9
- {
10
- super();
11
- }
12
-
13
- /**
14
- *
15
- * @param {UIElement} ui_element
16
- */
17
- on_enter(ui_element)
18
- {
19
- ui_element.on_mouse_enter();
20
- }
21
-
22
- /**
23
- * @param {UIElement} ui_element
24
- * @param {Vector2} normalized_mouse_position
25
- */
26
- update(ui_element, normalized_mouse_position)
27
- {
28
- if (ui_element.is_mouse_over(normalized_mouse_position))
29
- {
30
- ui_element.set_state(ui_element._on_hover_state);
31
- }
32
- else
33
- {
34
- ui_element.set_state(ui_element._on_exit_state);
35
- }
36
- }
37
- }
38
-
39
- export { OnMouseEnter };
1
+ // @ts-check
2
+ import { Vector2 } from 'three'; // eslint-disable-line no-unused-vars
3
+ import { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars
4
+ import { UIElementState } from './UIElementState';
5
+
6
+ class OnMouseEnter extends UIElementState
7
+ {
8
+ constructor()
9
+ {
10
+ super();
11
+ }
12
+
13
+ /**
14
+ *
15
+ * @param {UIElement} ui_element
16
+ */
17
+ on_enter(ui_element)
18
+ {
19
+ ui_element.on_mouse_enter();
20
+ }
21
+
22
+ /**
23
+ * @param {UIElement} ui_element
24
+ * @param {Vector2} normalized_mouse_position
25
+ */
26
+ update(ui_element, normalized_mouse_position)
27
+ {
28
+ if (ui_element.is_mouse_over(normalized_mouse_position))
29
+ {
30
+ ui_element.set_state(ui_element._on_hover_state);
31
+ }
32
+ else
33
+ {
34
+ ui_element.set_state(ui_element._on_exit_state);
35
+ }
36
+ }
37
+ }
38
+
39
+ export { OnMouseEnter };
@@ -1,22 +1,22 @@
1
- // @ts-check
2
- import { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars
3
- import { UIElementState } from './UIElementState';
4
-
5
- class OnMouseExit extends UIElementState
6
- {
7
- constructor()
8
- {
9
- super();
10
- }
11
-
12
- /**
13
- * @param {UIElement} ui_element
14
- */
15
- on_enter(ui_element)
16
- {
17
- ui_element.on_mouse_exit();
18
- ui_element.set_state(ui_element._on_idle_state);
19
- }
20
- }
21
-
22
- export { OnMouseExit };
1
+ // @ts-check
2
+ import { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars
3
+ import { UIElementState } from './UIElementState';
4
+
5
+ class OnMouseExit extends UIElementState
6
+ {
7
+ constructor()
8
+ {
9
+ super();
10
+ }
11
+
12
+ /**
13
+ * @param {UIElement} ui_element
14
+ */
15
+ on_enter(ui_element)
16
+ {
17
+ ui_element.on_mouse_exit();
18
+ ui_element.set_state(ui_element._on_idle_state);
19
+ }
20
+ }
21
+
22
+ export { OnMouseExit };
@@ -1,46 +1,46 @@
1
- // @ts-check
2
- import { Vector2 } from 'three'; // eslint-disable-line no-unused-vars
3
- import { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars
4
- import { UIElementState } from './UIElementState';
5
-
6
- class OnMouseHover extends UIElementState
7
- {
8
- constructor()
9
- {
10
- super();
11
- }
12
-
13
- /**
14
- * @param {UIElement} ui_element
15
- */
16
- on_enter(ui_element)
17
- {
18
- this.__trigger_on_hover(ui_element);
19
- }
20
-
21
- /**
22
- * @param {UIElement} ui_element
23
- * @param {Vector2} normalized_mouse_position
24
- */
25
- update(ui_element, normalized_mouse_position)
26
- {
27
- if (ui_element.is_mouse_over(normalized_mouse_position))
28
- {
29
- this.__trigger_on_hover(ui_element);
30
- }
31
- else
32
- {
33
- ui_element.set_state(ui_element._on_exit_state);
34
- }
35
- }
36
-
37
- /**
38
- * @param {UIElement} ui_element
39
- */
40
- __trigger_on_hover(ui_element)
41
- {
42
- ui_element.on_mouse_hover();
43
- }
44
- }
45
-
46
- export { OnMouseHover };
1
+ // @ts-check
2
+ import { Vector2 } from 'three'; // eslint-disable-line no-unused-vars
3
+ import { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars
4
+ import { UIElementState } from './UIElementState';
5
+
6
+ class OnMouseHover extends UIElementState
7
+ {
8
+ constructor()
9
+ {
10
+ super();
11
+ }
12
+
13
+ /**
14
+ * @param {UIElement} ui_element
15
+ */
16
+ on_enter(ui_element)
17
+ {
18
+ this.__trigger_on_hover(ui_element);
19
+ }
20
+
21
+ /**
22
+ * @param {UIElement} ui_element
23
+ * @param {Vector2} normalized_mouse_position
24
+ */
25
+ update(ui_element, normalized_mouse_position)
26
+ {
27
+ if (ui_element.is_mouse_over(normalized_mouse_position))
28
+ {
29
+ this.__trigger_on_hover(ui_element);
30
+ }
31
+ else
32
+ {
33
+ ui_element.set_state(ui_element._on_exit_state);
34
+ }
35
+ }
36
+
37
+ /**
38
+ * @param {UIElement} ui_element
39
+ */
40
+ __trigger_on_hover(ui_element)
41
+ {
42
+ ui_element.on_mouse_hover();
43
+ }
44
+ }
45
+
46
+ export { OnMouseHover };
@@ -1,34 +1,34 @@
1
- // @ts-check
2
- import { Vector2 } from 'three'; // eslint-disable-line no-unused-vars
3
- import { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars
4
-
5
- class UIElementState
6
- {
7
- constructor()
8
- {
9
-
10
- }
11
-
12
- /**
13
- * @param {UIElement} ui_element
14
- * @param {Vector2} normalized_mouse_position
15
- */
16
- update(ui_element, normalized_mouse_position) // eslint-disable-line no-unused-vars
17
- {
18
-
19
- }
20
-
21
- /**
22
- * @param {UIElement} ui_element
23
- */
24
- on_enter(ui_element) // eslint-disable-line no-unused-vars
25
- {}
26
-
27
- /**
28
- * @param {UIElement} ui_element
29
- */
30
- on_exit(ui_element) // eslint-disable-line no-unused-vars
31
- {}
32
- }
33
-
34
- export { UIElementState };
1
+ // @ts-check
2
+ import { Vector2 } from 'three'; // eslint-disable-line no-unused-vars
3
+ import { UIElement } from '../../components/UIElement'; // eslint-disable-line no-unused-vars
4
+
5
+ class UIElementState
6
+ {
7
+ constructor()
8
+ {
9
+
10
+ }
11
+
12
+ /**
13
+ * @param {UIElement} ui_element
14
+ * @param {Vector2} normalized_mouse_position
15
+ */
16
+ update(ui_element, normalized_mouse_position) // eslint-disable-line no-unused-vars
17
+ {
18
+
19
+ }
20
+
21
+ /**
22
+ * @param {UIElement} ui_element
23
+ */
24
+ on_enter(ui_element) // eslint-disable-line no-unused-vars
25
+ {}
26
+
27
+ /**
28
+ * @param {UIElement} ui_element
29
+ */
30
+ on_exit(ui_element) // eslint-disable-line no-unused-vars
31
+ {}
32
+ }
33
+
34
+ export { UIElementState };