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
package/src/Debug.js CHANGED
@@ -1,359 +1,359 @@
1
- // @ts-check
2
- import { AxisHelper } from './components/AxisHelper';
3
-
4
- import { SceneManager } from './SceneManager';
5
- import { Cube } from './primitives/Cube';
6
- import { Sphere } from './primitives/Sphere';
7
- import { Arrow } from './primitives/Arrow';
8
- import { OScreen } from './OScreen';
9
- import { Graphics } from './Graphics'; // eslint-disable-line no-unused-vars
10
- import { ScreenSpaceTextureMaterial } from './materials/ScreenSpaceTextureMaterial';
11
- import { PerspectiveCamera } from './PerspectiveCamera';
12
-
13
- import { RenderTarget, Texture, Vector2, Vector3, WebGLRenderer } from 'three'; // eslint-disable-line no-unused-vars
14
- import { LineBasicMaterial } from 'three';
15
- import { BufferGeometry } from 'three';
16
- import { Line } from 'three';
17
- import { PlaneGeometry } from 'three';
18
- import { ShaderMaterial } from 'three';
19
- import { Vector4 } from 'three';
20
- import { Mesh } from 'three';
21
- import { Box3 } from 'three';
22
- import { Box3Helper } from 'three';
23
- import { Scene } from 'three';
24
- import { CatmullRomCurve3 } from 'three';
25
- import { SphereGeometry } from 'three';
26
- import { MeshBasicMaterial } from 'three';
27
- // @ts-ignore
28
- import basic_color_vert from './shaders/basic_color/basic_color.vert';
29
- // @ts-ignore
30
- import basic_color_frag from './shaders/basic_color/basic_color.frag';
31
- import { CameraManager } from './CameraManager';
32
-
33
- class Debug
34
- {
35
- init()
36
- {
37
- this.Vector3_one = new Vector3(1, 1, 1);
38
- this.Vector3_zero = new Vector3(0, 0, 0);
39
- this.canvas_renderer = undefined;
40
-
41
- /** @type { Mesh<PlaneGeometry, ScreenSpaceTextureMaterial>[] } */
42
- this.display_texture_meshes = [];
43
-
44
- this.ctx = undefined;
45
- this.scene = new Scene();
46
- this.camera = new PerspectiveCamera(60, OScreen.aspect_ratio, 0.1, 1000);
47
- this.camera.clear_alpha = 0;
48
- }
49
-
50
- /**
51
- * @param {Vector3} origin
52
- * @param {Vector3} dir
53
- * @param {number | string} color
54
- * @returns {Arrow}
55
- */
56
- draw_arrow(origin, dir, color = 0xff0000)
57
- {
58
- const arrow = new Arrow(color, dir.length(), dir.clone().normalize());
59
- arrow.position.copy(origin);
60
- this.scene.add(arrow);
61
- return arrow;
62
- }
63
-
64
- draw_axis()
65
- {
66
- const axis = new AxisHelper();
67
- this.scene.add(axis);
68
- return axis;
69
- }
70
-
71
- /**
72
- * @param {RenderTarget} RT
73
- */
74
- set_debug_RT(RT)
75
- {
76
- this.rt_debug = RT;
77
- }
78
-
79
- /**
80
- * @param {Vector2 | Vector3} position_2d
81
- * @param {number} width
82
- * @param {number} height
83
- * @param {number | string} color
84
- */
85
- draw_rectangle(position_2d, width, height, color)
86
- {
87
- width = width || 100;
88
- height = height || 100;
89
- this.ctx.fillStyle = color || 'rgba(255, 0, 0, 1)';
90
- this.ctx.fillRect(position_2d.x - width / 2,
91
- (this.ctx.canvas.height - position_2d.y) - height / 2, width, height);
92
- }
93
-
94
- clear()
95
- {
96
- if (this.ctx)
97
- {
98
- this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
99
- }
100
- }
101
-
102
- /**
103
- * @param {Vector3 | Vector2} from
104
- * @param {Vector3 | Vector2} to
105
- * @param {number | string} color
106
- */
107
- draw_line_2D(from, to, color)
108
- {
109
- this.ctx.strokeStyle = color || 'rgba(255, 0, 0, 1)';
110
- this.ctx.beginPath();
111
- this.ctx.moveTo(from.x, from.y);
112
- this.ctx.lineTo(to.x, to.y);
113
- this.ctx.closePath();
114
- this.ctx.stroke();
115
- }
116
-
117
- /**
118
- * @param {Vector3[]} points
119
- * @param {number | string} color
120
- * @returns {Line}
121
- */
122
- draw_line(points, color = 0xff0000)
123
- {
124
- const material = new LineBasicMaterial({
125
- color: color
126
- });
127
-
128
- const geometry = new BufferGeometry().setFromPoints(points);
129
-
130
- const line = new Line(geometry, material);
131
- line.frustumCulled = false;
132
- this.scene.add(line);
133
- return line;
134
- }
135
-
136
- /**
137
- * @param {Vector3} pos
138
- * @param {number} size
139
- * @param {number | string} color
140
- * @returns {Cube}
141
- */
142
- draw_cube(pos, size, color)
143
- {
144
- size = size || 1;
145
- color = color || 0xff0000;
146
- pos = pos || new Vector3();
147
-
148
- const cube = new Cube(new Vector3(size, size, size), undefined, color);
149
- cube.position.copy(pos);
150
- this.scene.add(cube);
151
- return cube;
152
- }
153
-
154
- /**
155
- * @param {Vector3} from
156
- * @param {Vector3} to
157
- * @param {number} height
158
- * @param {number | string} color
159
- * @param {number} depth
160
- * @returns {Cube}
161
- */
162
- draw_oriented_cube(from, to, height = 1, color = '#FF0000', depth = 0.1)
163
- {
164
- const size = from.distanceTo(to);
165
- const cube = new Cube(new Vector3(depth, height, size), undefined, color);
166
-
167
- const center = to.clone().sub(from).multiplyScalar(0.5);
168
- const forward_dir = center.clone().normalize();
169
- center.add(from);
170
-
171
- cube.position.copy(center);
172
-
173
- // let up = new Vector3(0, 1, 0);
174
- // let forward = forward_dir.clone();
175
- // let right = forward.clone().cross(up);
176
-
177
- // cube.quaternion.setFromRotationMatrix(new Matrix4().makeBasis(right,up,forward));
178
- cube.quaternion.setFromUnitVectors(new Vector3(0, 0, -1), forward_dir);
179
-
180
- this.scene.add(cube);
181
- return cube;
182
- }
183
-
184
- /**
185
- *
186
- * @param {number} [width]
187
- * @param {number} [height]
188
- * @param {number | string} [color]
189
- * @returns
190
- */
191
- draw_plane(width, height, color) // eslint-disable-line no-unused-vars
192
- {
193
- const geometry = new PlaneGeometry(width, height);
194
- const material = new ShaderMaterial({
195
- uniforms: {
196
- _Color: { value: new Vector4(0, 1, 0, 0.2) }
197
- },
198
- vertexShader: basic_color_vert,
199
- fragmentShader: basic_color_frag,
200
- transparent: true,
201
- depthWrite: false
202
- });
203
-
204
- const plane = new Mesh(geometry, material);
205
- plane.renderOrder = -10000;
206
- this.scene.add(plane);
207
- return plane;
208
- }
209
-
210
- /**
211
- * @param {Vector3} pos
212
- * @param {number} size
213
- * @param {number | string} color
214
- * @returns {Box3Helper}
215
- */
216
- draw_empty_cube(pos, size, color)
217
- {
218
- size = size || 1;
219
- color = color || 0xff0000;
220
-
221
- const box = new Box3().setFromCenterAndSize(new Vector3(), new Vector3(size, size, size));
222
- const helper = new Box3Helper(box, color);
223
- helper.position.copy(pos || new Vector3());
224
- return helper;
225
- }
226
-
227
- /**
228
- * @param {Vector3} pos
229
- * @param {number} size
230
- * @param {number | string} color
231
- * @returns {Sphere}
232
- */
233
- draw_sphere(pos, size, color)
234
- {
235
- size = size || 1;
236
- color = color || 0xff0000;
237
- pos = pos || new Vector3();
238
-
239
- const sphere = new Sphere(size, color);
240
- sphere.position.copy(pos);
241
- this.scene.add(sphere);
242
- return sphere;
243
- }
244
-
245
- /**
246
- *
247
- * @param {Vector3[]} input_points
248
- * @param {boolean} open
249
- * @param {number | string} color
250
- * @returns {Line}
251
- */
252
- draw_point_array(input_points, open = false, color = 0xff0000) // eslint-disable-line no-unused-vars
253
- {
254
- const catmull = new CatmullRomCurve3(input_points, open);
255
- catmull.updateArcLengths();
256
- const points = catmull.getSpacedPoints(200);
257
- const line_helper = this.draw_line(points, 0x00ff00);
258
- // line_helper.position.y = 1.5;
259
- return line_helper;
260
- }
261
-
262
- /**
263
- * @param {Sphere} sphere
264
- * @param {number | string} color
265
- * @returns {Mesh}
266
- */
267
- draw_sphere_helper(sphere, color)
268
- {
269
- color = color || 0xff0000;
270
- const geometry = new SphereGeometry(sphere.radius, 32, 32);
271
- const material = new MeshBasicMaterial({ color: color });
272
- const sphere_mesh = new Mesh(geometry, material);
273
- sphere_mesh.position.copy(sphere.center);
274
- SceneManager.current.add(sphere_mesh);
275
- return sphere_mesh;
276
- }
277
-
278
- /**
279
- * @param {Sphere} sphere
280
- */
281
- draw_math_sphere(sphere)
282
- {
283
- const geometry = new SphereGeometry(sphere.radius, 32, 32);
284
- const material = new ShaderMaterial({
285
- uniforms: {
286
- _Color: { value: new Vector4(1, 0, 0, 0.2) }
287
- },
288
- vertexShader: basic_color_vert,
289
- fragmentShader: basic_color_frag,
290
- transparent: true
291
- });
292
- // var material = new MeshBasicMaterial( {color: 0xff0000, transparent = true} );
293
- const sphere1 = new Mesh(geometry, material);
294
- sphere1.position.copy(sphere.center);
295
- SceneManager.current.add(sphere1);
296
- }
297
-
298
- /**
299
- * @param {Box3} bb
300
- */
301
- draw_bounding_box(bb)
302
- {
303
- const helper = new Box3Helper(bb, 0xffff00);
304
- SceneManager.current.add(helper);
305
- }
306
-
307
- /**
308
- * @param {Vector3[]} curve
309
- * @param {object} options
310
- * @param {number} options.offset
311
- */
312
- draw_curve(curve, options)
313
- {
314
- const offset = new Vector3(0, 0, 0);
315
- if (options)
316
- {
317
- offset.y = options.offset || 0;
318
- }
319
-
320
- for (let i = 0; i < curve.length - 1; i++)
321
- {
322
- this.draw_line([curve[i].clone().add(offset), curve[i + 1].clone().add(offset)]);
323
- }
324
- }
325
-
326
- /**
327
- * @param {Texture} tex
328
- * @param {number} w
329
- * @param {number} h
330
- * @returns {Mesh}
331
- */
332
- draw_texture(tex, w, h)
333
- {
334
- const mesh = new Mesh(new PlaneGeometry(1, 1), new ScreenSpaceTextureMaterial());
335
- this.display_texture_meshes.push(mesh);
336
- this.scene.add(mesh);
337
-
338
- mesh.material.set_texture(tex, w, h);
339
- return mesh;
340
- }
341
-
342
- /**
343
- * @param {Graphics} graphics
344
- */
345
- render(graphics)
346
- {
347
- for (let i = 0; i < this.display_texture_meshes.length; i++)
348
- {
349
- this.display_texture_meshes[i].material.set_screen_size(OScreen.width, OScreen.height);
350
- }
351
- if (this.scene.children.length > 0)
352
- {
353
- graphics.render(this.scene, CameraManager.current);
354
- }
355
- }
356
- }
357
-
358
- const debug = new Debug();
359
- export { debug as Debug };
1
+ // @ts-check
2
+ import { AxisHelper } from './components/AxisHelper';
3
+
4
+ import { SceneManager } from './SceneManager';
5
+ import { Cube } from './primitives/Cube';
6
+ import { Sphere } from './primitives/Sphere';
7
+ import { Arrow } from './primitives/Arrow';
8
+ import { OScreen } from './OScreen';
9
+ import { Graphics } from './Graphics'; // eslint-disable-line no-unused-vars
10
+ import { ScreenSpaceTextureMaterial } from './materials/ScreenSpaceTextureMaterial';
11
+ import { PerspectiveCamera } from './PerspectiveCamera';
12
+
13
+ import { RenderTarget, Texture, Vector2, Vector3, WebGLRenderer } from 'three'; // eslint-disable-line no-unused-vars
14
+ import { LineBasicMaterial } from 'three';
15
+ import { BufferGeometry } from 'three';
16
+ import { Line } from 'three';
17
+ import { PlaneGeometry } from 'three';
18
+ import { ShaderMaterial } from 'three';
19
+ import { Vector4 } from 'three';
20
+ import { Mesh } from 'three';
21
+ import { Box3 } from 'three';
22
+ import { Box3Helper } from 'three';
23
+ import { Scene } from 'three';
24
+ import { CatmullRomCurve3 } from 'three';
25
+ import { SphereGeometry } from 'three';
26
+ import { MeshBasicMaterial } from 'three';
27
+ // @ts-ignore
28
+ import basic_color_vert from './shaders/basic_color/basic_color.vert';
29
+ // @ts-ignore
30
+ import basic_color_frag from './shaders/basic_color/basic_color.frag';
31
+ import { CameraManager } from './CameraManager';
32
+
33
+ class Debug
34
+ {
35
+ init()
36
+ {
37
+ this.Vector3_one = new Vector3(1, 1, 1);
38
+ this.Vector3_zero = new Vector3(0, 0, 0);
39
+ this.canvas_renderer = undefined;
40
+
41
+ /** @type { Mesh<PlaneGeometry, ScreenSpaceTextureMaterial>[] } */
42
+ this.display_texture_meshes = [];
43
+
44
+ this.ctx = undefined;
45
+ this.scene = new Scene();
46
+ this.camera = new PerspectiveCamera(60, OScreen.aspect_ratio, 0.1, 1000);
47
+ this.camera.clear_alpha = 0;
48
+ }
49
+
50
+ /**
51
+ * @param {Vector3} origin
52
+ * @param {Vector3} dir
53
+ * @param {number | string} color
54
+ * @returns {Arrow}
55
+ */
56
+ draw_arrow(origin, dir, color = 0xff0000)
57
+ {
58
+ const arrow = new Arrow(color, dir.length(), dir.clone().normalize());
59
+ arrow.position.copy(origin);
60
+ this.scene.add(arrow);
61
+ return arrow;
62
+ }
63
+
64
+ draw_axis()
65
+ {
66
+ const axis = new AxisHelper();
67
+ this.scene.add(axis);
68
+ return axis;
69
+ }
70
+
71
+ /**
72
+ * @param {RenderTarget} RT
73
+ */
74
+ set_debug_RT(RT)
75
+ {
76
+ this.rt_debug = RT;
77
+ }
78
+
79
+ /**
80
+ * @param {Vector2 | Vector3} position_2d
81
+ * @param {number} width
82
+ * @param {number} height
83
+ * @param {number | string} color
84
+ */
85
+ draw_rectangle(position_2d, width, height, color)
86
+ {
87
+ width = width || 100;
88
+ height = height || 100;
89
+ this.ctx.fillStyle = color || 'rgba(255, 0, 0, 1)';
90
+ this.ctx.fillRect(position_2d.x - width / 2,
91
+ (this.ctx.canvas.height - position_2d.y) - height / 2, width, height);
92
+ }
93
+
94
+ clear()
95
+ {
96
+ if (this.ctx)
97
+ {
98
+ this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
99
+ }
100
+ }
101
+
102
+ /**
103
+ * @param {Vector3 | Vector2} from
104
+ * @param {Vector3 | Vector2} to
105
+ * @param {number | string} color
106
+ */
107
+ draw_line_2D(from, to, color)
108
+ {
109
+ this.ctx.strokeStyle = color || 'rgba(255, 0, 0, 1)';
110
+ this.ctx.beginPath();
111
+ this.ctx.moveTo(from.x, from.y);
112
+ this.ctx.lineTo(to.x, to.y);
113
+ this.ctx.closePath();
114
+ this.ctx.stroke();
115
+ }
116
+
117
+ /**
118
+ * @param {Vector3[]} points
119
+ * @param {number | string} color
120
+ * @returns {Line}
121
+ */
122
+ draw_line(points, color = 0xff0000)
123
+ {
124
+ const material = new LineBasicMaterial({
125
+ color: color
126
+ });
127
+
128
+ const geometry = new BufferGeometry().setFromPoints(points);
129
+
130
+ const line = new Line(geometry, material);
131
+ line.frustumCulled = false;
132
+ this.scene.add(line);
133
+ return line;
134
+ }
135
+
136
+ /**
137
+ * @param {Vector3} pos
138
+ * @param {number} size
139
+ * @param {number | string} color
140
+ * @returns {Cube}
141
+ */
142
+ draw_cube(pos, size, color)
143
+ {
144
+ size = size || 1;
145
+ color = color || 0xff0000;
146
+ pos = pos || new Vector3();
147
+
148
+ const cube = new Cube(new Vector3(size, size, size), undefined, color);
149
+ cube.position.copy(pos);
150
+ this.scene.add(cube);
151
+ return cube;
152
+ }
153
+
154
+ /**
155
+ * @param {Vector3} from
156
+ * @param {Vector3} to
157
+ * @param {number} height
158
+ * @param {number | string} color
159
+ * @param {number} depth
160
+ * @returns {Cube}
161
+ */
162
+ draw_oriented_cube(from, to, height = 1, color = '#FF0000', depth = 0.1)
163
+ {
164
+ const size = from.distanceTo(to);
165
+ const cube = new Cube(new Vector3(depth, height, size), undefined, color);
166
+
167
+ const center = to.clone().sub(from).multiplyScalar(0.5);
168
+ const forward_dir = center.clone().normalize();
169
+ center.add(from);
170
+
171
+ cube.position.copy(center);
172
+
173
+ // let up = new Vector3(0, 1, 0);
174
+ // let forward = forward_dir.clone();
175
+ // let right = forward.clone().cross(up);
176
+
177
+ // cube.quaternion.setFromRotationMatrix(new Matrix4().makeBasis(right,up,forward));
178
+ cube.quaternion.setFromUnitVectors(new Vector3(0, 0, -1), forward_dir);
179
+
180
+ this.scene.add(cube);
181
+ return cube;
182
+ }
183
+
184
+ /**
185
+ *
186
+ * @param {number} [width]
187
+ * @param {number} [height]
188
+ * @param {number | string} [color]
189
+ * @returns
190
+ */
191
+ draw_plane(width, height, color) // eslint-disable-line no-unused-vars
192
+ {
193
+ const geometry = new PlaneGeometry(width, height);
194
+ const material = new ShaderMaterial({
195
+ uniforms: {
196
+ _Color: { value: new Vector4(0, 1, 0, 0.2) }
197
+ },
198
+ vertexShader: basic_color_vert,
199
+ fragmentShader: basic_color_frag,
200
+ transparent: true,
201
+ depthWrite: false
202
+ });
203
+
204
+ const plane = new Mesh(geometry, material);
205
+ plane.renderOrder = -10000;
206
+ this.scene.add(plane);
207
+ return plane;
208
+ }
209
+
210
+ /**
211
+ * @param {Vector3} pos
212
+ * @param {number} size
213
+ * @param {number | string} color
214
+ * @returns {Box3Helper}
215
+ */
216
+ draw_empty_cube(pos, size, color)
217
+ {
218
+ size = size || 1;
219
+ color = color || 0xff0000;
220
+
221
+ const box = new Box3().setFromCenterAndSize(new Vector3(), new Vector3(size, size, size));
222
+ const helper = new Box3Helper(box, color);
223
+ helper.position.copy(pos || new Vector3());
224
+ return helper;
225
+ }
226
+
227
+ /**
228
+ * @param {Vector3} pos
229
+ * @param {number} size
230
+ * @param {number | string} color
231
+ * @returns {Sphere}
232
+ */
233
+ draw_sphere(pos, size, color)
234
+ {
235
+ size = size || 1;
236
+ color = color || 0xff0000;
237
+ pos = pos || new Vector3();
238
+
239
+ const sphere = new Sphere(size, color);
240
+ sphere.position.copy(pos);
241
+ this.scene.add(sphere);
242
+ return sphere;
243
+ }
244
+
245
+ /**
246
+ *
247
+ * @param {Vector3[]} input_points
248
+ * @param {boolean} open
249
+ * @param {number | string} color
250
+ * @returns {Line}
251
+ */
252
+ draw_point_array(input_points, open = false, color = 0xff0000) // eslint-disable-line no-unused-vars
253
+ {
254
+ const catmull = new CatmullRomCurve3(input_points, open);
255
+ catmull.updateArcLengths();
256
+ const points = catmull.getSpacedPoints(200);
257
+ const line_helper = this.draw_line(points, 0x00ff00);
258
+ // line_helper.position.y = 1.5;
259
+ return line_helper;
260
+ }
261
+
262
+ /**
263
+ * @param {Sphere} sphere
264
+ * @param {number | string} color
265
+ * @returns {Mesh}
266
+ */
267
+ draw_sphere_helper(sphere, color)
268
+ {
269
+ color = color || 0xff0000;
270
+ const geometry = new SphereGeometry(sphere.radius, 32, 32);
271
+ const material = new MeshBasicMaterial({ color: color });
272
+ const sphere_mesh = new Mesh(geometry, material);
273
+ sphere_mesh.position.copy(sphere.center);
274
+ SceneManager.current.add(sphere_mesh);
275
+ return sphere_mesh;
276
+ }
277
+
278
+ /**
279
+ * @param {Sphere} sphere
280
+ */
281
+ draw_math_sphere(sphere)
282
+ {
283
+ const geometry = new SphereGeometry(sphere.radius, 32, 32);
284
+ const material = new ShaderMaterial({
285
+ uniforms: {
286
+ _Color: { value: new Vector4(1, 0, 0, 0.2) }
287
+ },
288
+ vertexShader: basic_color_vert,
289
+ fragmentShader: basic_color_frag,
290
+ transparent: true
291
+ });
292
+ // var material = new MeshBasicMaterial( {color: 0xff0000, transparent = true} );
293
+ const sphere1 = new Mesh(geometry, material);
294
+ sphere1.position.copy(sphere.center);
295
+ SceneManager.current.add(sphere1);
296
+ }
297
+
298
+ /**
299
+ * @param {Box3} bb
300
+ */
301
+ draw_bounding_box(bb)
302
+ {
303
+ const helper = new Box3Helper(bb, 0xffff00);
304
+ SceneManager.current.add(helper);
305
+ }
306
+
307
+ /**
308
+ * @param {Vector3[]} curve
309
+ * @param {object} options
310
+ * @param {number} options.offset
311
+ */
312
+ draw_curve(curve, options)
313
+ {
314
+ const offset = new Vector3(0, 0, 0);
315
+ if (options)
316
+ {
317
+ offset.y = options.offset || 0;
318
+ }
319
+
320
+ for (let i = 0; i < curve.length - 1; i++)
321
+ {
322
+ this.draw_line([curve[i].clone().add(offset), curve[i + 1].clone().add(offset)]);
323
+ }
324
+ }
325
+
326
+ /**
327
+ * @param {Texture} tex
328
+ * @param {number} w
329
+ * @param {number} h
330
+ * @returns {Mesh}
331
+ */
332
+ draw_texture(tex, w, h)
333
+ {
334
+ const mesh = new Mesh(new PlaneGeometry(1, 1), new ScreenSpaceTextureMaterial());
335
+ this.display_texture_meshes.push(mesh);
336
+ this.scene.add(mesh);
337
+
338
+ mesh.material.set_texture(tex, w, h);
339
+ return mesh;
340
+ }
341
+
342
+ /**
343
+ * @param {Graphics} graphics
344
+ */
345
+ render(graphics)
346
+ {
347
+ for (let i = 0; i < this.display_texture_meshes.length; i++)
348
+ {
349
+ this.display_texture_meshes[i].material.set_screen_size(OScreen.width, OScreen.height);
350
+ }
351
+ if (this.scene.children.length > 0)
352
+ {
353
+ graphics.render(this.scene, CameraManager.current);
354
+ }
355
+ }
356
+ }
357
+
358
+ const debug = new Debug();
359
+ export { debug as Debug };