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,162 +1,162 @@
1
- import { Mesh } from 'three';
2
- import { BufferGeometry } from 'three';
3
- import { Skeleton } from 'three';
4
-
5
- class ModelUtilities
6
- {
7
- get_mesh(scene, result_callback)
8
- {
9
- scene.traverse((child) =>
10
- {
11
- if (child instanceof Mesh)
12
- {
13
- if (child.geometry)
14
- {
15
- child.geometry = new BufferGeometry().fromGeometry(child.geometry);
16
- }
17
- result_callback(child);
18
- }
19
- });
20
- }
21
-
22
- get_geometries(scene)
23
- {
24
- const geometries = [];
25
-
26
- this.get_mesh(scene, (child) =>
27
- {
28
- geometries.push(child.geometry);
29
- });
30
- return geometries;
31
- }
32
-
33
- assign_material(scene, material, name)
34
- {
35
- scene.traverse((child) =>
36
- {
37
- if (child instanceof Mesh)
38
- {
39
- // assign to all if no name is given
40
- if (name === undefined)
41
- {
42
- child.material = material;
43
- }
44
- else
45
- {
46
- // if name is given, assign only to that
47
- if (child.name === name)
48
- {
49
- child.material = material;
50
- }
51
- }
52
- }
53
- });
54
- }
55
-
56
- clone_animated_gltf(gltf)
57
- {
58
- const clone = {
59
- animations: gltf.animations,
60
- scene: gltf.scene.clone(true)
61
- };
62
-
63
- const skinnedMeshes = {};
64
-
65
- gltf.scene.traverse(node =>
66
- {
67
- if (node.isSkinnedMesh)
68
- {
69
- skinnedMeshes[node.name] = node;
70
- }
71
- });
72
-
73
- const cloneBones = {};
74
- const cloneSkinnedMeshes = {};
75
-
76
- clone.scene.traverse(node =>
77
- {
78
- if (node.isBone)
79
- {
80
- cloneBones[node.name] = node;
81
- }
82
-
83
- if (node.isSkinnedMesh)
84
- {
85
- cloneSkinnedMeshes[node.name] = node;
86
- }
87
- });
88
-
89
- for (const name in skinnedMeshes)
90
- {
91
- const skinnedMesh = skinnedMeshes[name];
92
- const skeleton = skinnedMesh.skeleton;
93
- const cloneSkinnedMesh = cloneSkinnedMeshes[name];
94
-
95
- const orderedCloneBones = [];
96
-
97
- for (let i = 0; i < skeleton.bones.length; ++i)
98
- {
99
- const cloneBone = cloneBones[skeleton.bones[i].name];
100
- orderedCloneBones.push(cloneBone);
101
- }
102
-
103
- cloneSkinnedMesh.bind(
104
- new Skeleton(orderedCloneBones, skeleton.boneInverses),
105
- cloneSkinnedMesh.matrixWorld);
106
- }
107
-
108
- return clone;
109
- }
110
-
111
- set_shadow_config(scene, cast, receive)
112
- {
113
- scene.traverse((child) =>
114
- {
115
- if (child instanceof Mesh)
116
- {
117
- child.castShadow = cast;
118
- child.receiveShadow = receive;
119
- }
120
- });
121
- }
122
-
123
- __find_object(scene, object_name, result_callback)
124
- {
125
- scene.traverse((obj) =>
126
- {
127
- if (obj.name === object_name)
128
- {
129
- result_callback(obj);
130
- }
131
- });
132
- }
133
-
134
- get_object(scene, object_name)
135
- {
136
- let object = undefined;
137
- scene.traverse((obj) =>
138
- {
139
- if (obj.name === object_name)
140
- {
141
- object = obj;
142
- }
143
- });
144
- return object;
145
- }
146
-
147
- get_object_by_type(scene, object_type)
148
- {
149
- let object = undefined;
150
- scene.traverse((obj) =>
151
- {
152
- if (obj.constructor.name === object_type)
153
- {
154
- object = obj;
155
- }
156
- });
157
- return object;
158
- }
159
- }
160
-
161
- const model_utilities = new ModelUtilities();
162
- export { model_utilities as ModelUtilities };
1
+ import { Mesh } from 'three';
2
+ import { BufferGeometry } from 'three';
3
+ import { Skeleton } from 'three';
4
+
5
+ class ModelUtilities
6
+ {
7
+ get_mesh(scene, result_callback)
8
+ {
9
+ scene.traverse((child) =>
10
+ {
11
+ if (child instanceof Mesh)
12
+ {
13
+ if (child.geometry)
14
+ {
15
+ child.geometry = new BufferGeometry().fromGeometry(child.geometry);
16
+ }
17
+ result_callback(child);
18
+ }
19
+ });
20
+ }
21
+
22
+ get_geometries(scene)
23
+ {
24
+ const geometries = [];
25
+
26
+ this.get_mesh(scene, (child) =>
27
+ {
28
+ geometries.push(child.geometry);
29
+ });
30
+ return geometries;
31
+ }
32
+
33
+ assign_material(scene, material, name)
34
+ {
35
+ scene.traverse((child) =>
36
+ {
37
+ if (child instanceof Mesh)
38
+ {
39
+ // assign to all if no name is given
40
+ if (name === undefined)
41
+ {
42
+ child.material = material;
43
+ }
44
+ else
45
+ {
46
+ // if name is given, assign only to that
47
+ if (child.name === name)
48
+ {
49
+ child.material = material;
50
+ }
51
+ }
52
+ }
53
+ });
54
+ }
55
+
56
+ clone_animated_gltf(gltf)
57
+ {
58
+ const clone = {
59
+ animations: gltf.animations,
60
+ scene: gltf.scene.clone(true)
61
+ };
62
+
63
+ const skinnedMeshes = {};
64
+
65
+ gltf.scene.traverse(node =>
66
+ {
67
+ if (node.isSkinnedMesh)
68
+ {
69
+ skinnedMeshes[node.name] = node;
70
+ }
71
+ });
72
+
73
+ const cloneBones = {};
74
+ const cloneSkinnedMeshes = {};
75
+
76
+ clone.scene.traverse(node =>
77
+ {
78
+ if (node.isBone)
79
+ {
80
+ cloneBones[node.name] = node;
81
+ }
82
+
83
+ if (node.isSkinnedMesh)
84
+ {
85
+ cloneSkinnedMeshes[node.name] = node;
86
+ }
87
+ });
88
+
89
+ for (const name in skinnedMeshes)
90
+ {
91
+ const skinnedMesh = skinnedMeshes[name];
92
+ const skeleton = skinnedMesh.skeleton;
93
+ const cloneSkinnedMesh = cloneSkinnedMeshes[name];
94
+
95
+ const orderedCloneBones = [];
96
+
97
+ for (let i = 0; i < skeleton.bones.length; ++i)
98
+ {
99
+ const cloneBone = cloneBones[skeleton.bones[i].name];
100
+ orderedCloneBones.push(cloneBone);
101
+ }
102
+
103
+ cloneSkinnedMesh.bind(
104
+ new Skeleton(orderedCloneBones, skeleton.boneInverses),
105
+ cloneSkinnedMesh.matrixWorld);
106
+ }
107
+
108
+ return clone;
109
+ }
110
+
111
+ set_shadow_config(scene, cast, receive)
112
+ {
113
+ scene.traverse((child) =>
114
+ {
115
+ if (child instanceof Mesh)
116
+ {
117
+ child.castShadow = cast;
118
+ child.receiveShadow = receive;
119
+ }
120
+ });
121
+ }
122
+
123
+ __find_object(scene, object_name, result_callback)
124
+ {
125
+ scene.traverse((obj) =>
126
+ {
127
+ if (obj.name === object_name)
128
+ {
129
+ result_callback(obj);
130
+ }
131
+ });
132
+ }
133
+
134
+ get_object(scene, object_name)
135
+ {
136
+ let object = undefined;
137
+ scene.traverse((obj) =>
138
+ {
139
+ if (obj.name === object_name)
140
+ {
141
+ object = obj;
142
+ }
143
+ });
144
+ return object;
145
+ }
146
+
147
+ get_object_by_type(scene, object_type)
148
+ {
149
+ let object = undefined;
150
+ scene.traverse((obj) =>
151
+ {
152
+ if (obj.constructor.name === object_type)
153
+ {
154
+ object = obj;
155
+ }
156
+ });
157
+ return object;
158
+ }
159
+ }
160
+
161
+ const model_utilities = new ModelUtilities();
162
+ export { model_utilities as ModelUtilities };
@@ -1,158 +1,158 @@
1
-
2
- class OMath
3
- {
4
- constructor()
5
- {}
6
-
7
- static linear_map(value,
8
- from_range_start_value,
9
- from_range_end_value,
10
- to_range_start_value,
11
- to_range_end_value)
12
- {
13
- 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;
14
- }
15
-
16
- static between(value, min, max)
17
- {
18
- return (value >= min && value <= max);
19
- }
20
-
21
- static mod(number, divisor)
22
- {
23
- return ((number % divisor) + divisor) % divisor;
24
- }
25
-
26
- static rgb_to_hex(rgb)
27
- {
28
- rgb.r = Math.round(rgb.r * 255).toString(16);
29
- rgb.g = Math.round(rgb.g * 255).toString(16);
30
- rgb.b = Math.round(rgb.b * 255).toString(16);
31
-
32
- if (rgb.r.length === 1)
33
- {
34
- rgb.r = '0' + rgb.r;
35
- }
36
- if (rgb.g.length === 1)
37
- {
38
- rgb.g = '0' + rgb.g;
39
- }
40
- if (rgb.b.length === 1)
41
- {
42
- rgb.b = '0' + rgb.b;
43
- }
44
-
45
- return '#' + rgb.r + rgb.g + rgb.b;
46
- }
47
-
48
- static project_points_on_plane(points, plane)
49
- {
50
- const projected_point = points[0].clone();
51
- projected_point.set(0, 0, 0);
52
-
53
- const points_on_plane = [];
54
-
55
- for (let i = 0; i < points.length; i++)
56
- {
57
- plane.projectPoint(points[i], projected_point);
58
- points_on_plane.push(projected_point.clone());
59
- }
60
-
61
- return points_on_plane;
62
- }
63
-
64
- static matrix4_lerp(from, to, target, t)
65
- {
66
- for (let i = 0; i < 16; i++)
67
- {
68
- target.elements[i] = this.lerp(from.elements[i], to.elements[i], t);
69
- }
70
- }
71
-
72
- static equals(x1, x2)
73
- {
74
- return Math.abs(x1 - x2) < 0.000001;
75
- }
76
-
77
- static lerp(x, y, t)
78
- {
79
- return (1 - t) * x + t * y;
80
- }
81
-
82
- static clamp(value, min, max)
83
- {
84
- return Math.max(min, Math.min(max, value));
85
- }
86
-
87
- static euclideanModulo(n, m)
88
- {
89
- return ((n % m) + m) % m;
90
- }
91
-
92
- static pingpong(x, length = 1)
93
- {
94
- return length - Math.abs(OMath.euclideanModulo(x, length * 2) - length);
95
- }
96
-
97
- static degToRad(degrees)
98
- {
99
- return degrees * (Math.PI / 180);
100
- }
101
-
102
- static radToDeg(radians)
103
- {
104
- return radians * (180 / Math.PI);
105
- }
106
-
107
- static deg_to_rad(degrees)
108
- {
109
- return degrees * (Math.PI / 180);
110
- }
111
-
112
- static rad_to_deg(radians)
113
- {
114
- return radians * (180 / Math.PI);
115
- }
116
-
117
- static perspective_divide(v)
118
- {
119
- v.x /= v.w;
120
- v.y /= v.w;
121
- v.z /= v.w;
122
- return v;
123
- }
124
-
125
- static points_average(points)
126
- {
127
- const center = points[0].clone();
128
- for (let i = 1; i < points.length; i++)
129
- {
130
- center.add(points[i]);
131
- }
132
- center.multiplyScalar(1 / points.length);
133
- return center;
134
- }
135
-
136
- static get_random_color()
137
- {
138
- const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f'];
139
-
140
- let col = '#';
141
- col += arr[Math.floor(Math.random() * 16)];
142
- col += arr[Math.floor(Math.random() * 16)];
143
-
144
- col += arr[Math.floor(Math.random() * 16)];
145
- col += arr[Math.floor(Math.random() * 16)];
146
-
147
- col += arr[Math.floor(Math.random() * 16)];
148
- col += arr[Math.floor(Math.random() * 16)];
149
- return col;
150
- }
151
-
152
- static saturate(x)
153
- {
154
- return OMath.clamp(x, 0, 1);
155
- }
156
- }
157
-
158
- export { OMath };
1
+
2
+ class OMath
3
+ {
4
+ constructor()
5
+ {}
6
+
7
+ static linear_map(value,
8
+ from_range_start_value,
9
+ from_range_end_value,
10
+ to_range_start_value,
11
+ to_range_end_value)
12
+ {
13
+ 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;
14
+ }
15
+
16
+ static between(value, min, max)
17
+ {
18
+ return (value >= min && value <= max);
19
+ }
20
+
21
+ static mod(number, divisor)
22
+ {
23
+ return ((number % divisor) + divisor) % divisor;
24
+ }
25
+
26
+ static rgb_to_hex(rgb)
27
+ {
28
+ rgb.r = Math.round(rgb.r * 255).toString(16);
29
+ rgb.g = Math.round(rgb.g * 255).toString(16);
30
+ rgb.b = Math.round(rgb.b * 255).toString(16);
31
+
32
+ if (rgb.r.length === 1)
33
+ {
34
+ rgb.r = '0' + rgb.r;
35
+ }
36
+ if (rgb.g.length === 1)
37
+ {
38
+ rgb.g = '0' + rgb.g;
39
+ }
40
+ if (rgb.b.length === 1)
41
+ {
42
+ rgb.b = '0' + rgb.b;
43
+ }
44
+
45
+ return '#' + rgb.r + rgb.g + rgb.b;
46
+ }
47
+
48
+ static project_points_on_plane(points, plane)
49
+ {
50
+ const projected_point = points[0].clone();
51
+ projected_point.set(0, 0, 0);
52
+
53
+ const points_on_plane = [];
54
+
55
+ for (let i = 0; i < points.length; i++)
56
+ {
57
+ plane.projectPoint(points[i], projected_point);
58
+ points_on_plane.push(projected_point.clone());
59
+ }
60
+
61
+ return points_on_plane;
62
+ }
63
+
64
+ static matrix4_lerp(from, to, target, t)
65
+ {
66
+ for (let i = 0; i < 16; i++)
67
+ {
68
+ target.elements[i] = this.lerp(from.elements[i], to.elements[i], t);
69
+ }
70
+ }
71
+
72
+ static equals(x1, x2)
73
+ {
74
+ return Math.abs(x1 - x2) < 0.000001;
75
+ }
76
+
77
+ static lerp(x, y, t)
78
+ {
79
+ return (1 - t) * x + t * y;
80
+ }
81
+
82
+ static clamp(value, min, max)
83
+ {
84
+ return Math.max(min, Math.min(max, value));
85
+ }
86
+
87
+ static euclideanModulo(n, m)
88
+ {
89
+ return ((n % m) + m) % m;
90
+ }
91
+
92
+ static pingpong(x, length = 1)
93
+ {
94
+ return length - Math.abs(OMath.euclideanModulo(x, length * 2) - length);
95
+ }
96
+
97
+ static degToRad(degrees)
98
+ {
99
+ return degrees * (Math.PI / 180);
100
+ }
101
+
102
+ static radToDeg(radians)
103
+ {
104
+ return radians * (180 / Math.PI);
105
+ }
106
+
107
+ static deg_to_rad(degrees)
108
+ {
109
+ return degrees * (Math.PI / 180);
110
+ }
111
+
112
+ static rad_to_deg(radians)
113
+ {
114
+ return radians * (180 / Math.PI);
115
+ }
116
+
117
+ static perspective_divide(v)
118
+ {
119
+ v.x /= v.w;
120
+ v.y /= v.w;
121
+ v.z /= v.w;
122
+ return v;
123
+ }
124
+
125
+ static points_average(points)
126
+ {
127
+ const center = points[0].clone();
128
+ for (let i = 1; i < points.length; i++)
129
+ {
130
+ center.add(points[i]);
131
+ }
132
+ center.multiplyScalar(1 / points.length);
133
+ return center;
134
+ }
135
+
136
+ static get_random_color()
137
+ {
138
+ const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f'];
139
+
140
+ let col = '#';
141
+ col += arr[Math.floor(Math.random() * 16)];
142
+ col += arr[Math.floor(Math.random() * 16)];
143
+
144
+ col += arr[Math.floor(Math.random() * 16)];
145
+ col += arr[Math.floor(Math.random() * 16)];
146
+
147
+ col += arr[Math.floor(Math.random() * 16)];
148
+ col += arr[Math.floor(Math.random() * 16)];
149
+ return col;
150
+ }
151
+
152
+ static saturate(x)
153
+ {
154
+ return OMath.clamp(x, 0, 1);
155
+ }
156
+ }
157
+
158
+ export { OMath };