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,124 +1,124 @@
1
- import { ActionSequencer } from '../../action_sequencer/ActionSequencer';
2
- import { NumberInterpolator } from '../../action_sequencer/NumberInterpolator';
3
- import { ActionEvent } from '../../action_sequencer/ActionEvent';
4
- import { DrawIOAnimationSheet } from './DrawIOAnimationSheet';
5
-
6
- class ActionSequencerBuilder
7
- {
8
- constructor(default_state_data)
9
- {
10
- this.default_state_data = default_state_data;
11
- }
12
-
13
- from_animation_sheet(animation_data, current_context, initial_context)
14
- {
15
- initial_context = initial_context || this.default_state_data;
16
- const tracks = animation_data.animation_tracks;
17
- const triggers = animation_data.triggers;
18
-
19
- const initial_tracks = this.state_to_tracks(this.default_state_data, this.get_longest_time(animation_data.animation_tracks));
20
-
21
- for (let i = 0; i < initial_tracks.length; i++)
22
- {
23
- if (tracks.find(element => element.attribute_name === initial_tracks[i].attribute_name) === undefined)
24
- {
25
- tracks.push(initial_tracks[i]);
26
- }
27
- }
28
-
29
- const sequencer = new ActionSequencer(current_context);
30
-
31
- for (let i = 0; i < tracks.length; i++)
32
- {
33
- const t = tracks[i];
34
- const interpolator = new NumberInterpolator(
35
- t.attribute_name,
36
- current_context[t.attribute_name],
37
- t.to_value,
38
- t.initial,
39
- t.easing_function
40
- );
41
-
42
- sequencer.add_action_interpolator(t.from_time, t.to_time, interpolator, true);
43
- }
44
-
45
- for (let i = 0; i < triggers.length; i++)
46
- {
47
- const t = triggers[i];
48
- const action_event = new ActionEvent(t.name, t.method, t.args);
49
- sequencer.add_action_event(t.at_time, action_event);
50
- }
51
-
52
- return sequencer;
53
- }
54
-
55
- state_to_tracks(state, longest_time)
56
- {
57
- const tracks = [];
58
-
59
- const keys = Object.keys(state);
60
-
61
- for (let i = 0; i < keys.length; i++)
62
- {
63
- tracks.push({
64
- attribute_name: keys[i],
65
- from_time: 0,
66
- to_time: longest_time < 1 ? longest_time : 1,
67
- to_value: state[keys[i]],
68
- initial: true,
69
- easing_function: 'ease_in_out_cubic'
70
- });
71
- }
72
-
73
- return tracks;
74
- }
75
-
76
- from_draw_io(xml, context)
77
- {
78
- const transition_data = (new DrawIOAnimationSheet()).parse(xml);
79
- const tracks = transition_data.animation_tracks;
80
- const triggers = transition_data.triggers;
81
- const sequencer = new ActionSequencer(context);
82
-
83
- for (let i = 0; i < tracks.length; i++)
84
- {
85
- const t = tracks[i];
86
- const interpolator = new NumberInterpolator(
87
- t.attribute_name,
88
- context[t.attribute_name],
89
- t.to_value,
90
- t.initial,
91
- t.easing_function
92
- );
93
-
94
- sequencer.add_action_interpolator(t.from_time, t.to_time, interpolator, true);
95
- }
96
-
97
- for (let i = 0; i < triggers.length; i++)
98
- {
99
- const t = triggers[i];
100
- const action_event = new ActionEvent(t.name, t.method);
101
- sequencer.add_action_event(t.at_time, action_event);
102
- }
103
-
104
- return sequencer;
105
- }
106
-
107
- get_longest_time(tracks)
108
- {
109
- let longest_time = -1;
110
-
111
- for (let i = 0; i < tracks.length; i++)
112
- {
113
- const track = tracks[i];
114
-
115
- const track_time = track.to_time;
116
-
117
- longest_time = track_time > longest_time ? track_time : longest_time;
118
- }
119
-
120
- return longest_time;
121
- }
122
- }
123
-
124
- export { ActionSequencerBuilder };
1
+ import { ActionSequencer } from '../../action_sequencer/ActionSequencer';
2
+ import { NumberInterpolator } from '../../action_sequencer/NumberInterpolator';
3
+ import { ActionEvent } from '../../action_sequencer/ActionEvent';
4
+ import { DrawIOAnimationSheet } from './DrawIOAnimationSheet';
5
+
6
+ class ActionSequencerBuilder
7
+ {
8
+ constructor(default_state_data)
9
+ {
10
+ this.default_state_data = default_state_data;
11
+ }
12
+
13
+ from_animation_sheet(animation_data, current_context, initial_context)
14
+ {
15
+ initial_context = initial_context || this.default_state_data;
16
+ const tracks = animation_data.animation_tracks;
17
+ const triggers = animation_data.triggers;
18
+
19
+ const initial_tracks = this.state_to_tracks(this.default_state_data, this.get_longest_time(animation_data.animation_tracks));
20
+
21
+ for (let i = 0; i < initial_tracks.length; i++)
22
+ {
23
+ if (tracks.find(element => element.attribute_name === initial_tracks[i].attribute_name) === undefined)
24
+ {
25
+ tracks.push(initial_tracks[i]);
26
+ }
27
+ }
28
+
29
+ const sequencer = new ActionSequencer(current_context);
30
+
31
+ for (let i = 0; i < tracks.length; i++)
32
+ {
33
+ const t = tracks[i];
34
+ const interpolator = new NumberInterpolator(
35
+ t.attribute_name,
36
+ current_context[t.attribute_name],
37
+ t.to_value,
38
+ t.initial,
39
+ t.easing_function
40
+ );
41
+
42
+ sequencer.add_action_interpolator(t.from_time, t.to_time, interpolator, true);
43
+ }
44
+
45
+ for (let i = 0; i < triggers.length; i++)
46
+ {
47
+ const t = triggers[i];
48
+ const action_event = new ActionEvent(t.name, t.method, t.args);
49
+ sequencer.add_action_event(t.at_time, action_event);
50
+ }
51
+
52
+ return sequencer;
53
+ }
54
+
55
+ state_to_tracks(state, longest_time)
56
+ {
57
+ const tracks = [];
58
+
59
+ const keys = Object.keys(state);
60
+
61
+ for (let i = 0; i < keys.length; i++)
62
+ {
63
+ tracks.push({
64
+ attribute_name: keys[i],
65
+ from_time: 0,
66
+ to_time: longest_time < 1 ? longest_time : 1,
67
+ to_value: state[keys[i]],
68
+ initial: true,
69
+ easing_function: 'ease_in_out_cubic'
70
+ });
71
+ }
72
+
73
+ return tracks;
74
+ }
75
+
76
+ from_draw_io(xml, context)
77
+ {
78
+ const transition_data = (new DrawIOAnimationSheet()).parse(xml);
79
+ const tracks = transition_data.animation_tracks;
80
+ const triggers = transition_data.triggers;
81
+ const sequencer = new ActionSequencer(context);
82
+
83
+ for (let i = 0; i < tracks.length; i++)
84
+ {
85
+ const t = tracks[i];
86
+ const interpolator = new NumberInterpolator(
87
+ t.attribute_name,
88
+ context[t.attribute_name],
89
+ t.to_value,
90
+ t.initial,
91
+ t.easing_function
92
+ );
93
+
94
+ sequencer.add_action_interpolator(t.from_time, t.to_time, interpolator, true);
95
+ }
96
+
97
+ for (let i = 0; i < triggers.length; i++)
98
+ {
99
+ const t = triggers[i];
100
+ const action_event = new ActionEvent(t.name, t.method);
101
+ sequencer.add_action_event(t.at_time, action_event);
102
+ }
103
+
104
+ return sequencer;
105
+ }
106
+
107
+ get_longest_time(tracks)
108
+ {
109
+ let longest_time = -1;
110
+
111
+ for (let i = 0; i < tracks.length; i++)
112
+ {
113
+ const track = tracks[i];
114
+
115
+ const track_time = track.to_time;
116
+
117
+ longest_time = track_time > longest_time ? track_time : longest_time;
118
+ }
119
+
120
+ return longest_time;
121
+ }
122
+ }
123
+
124
+ export { ActionSequencerBuilder };
@@ -1,92 +1,92 @@
1
- class DrawIOAnimationSheet
2
- {
3
- constructor()
4
- {
5
-
6
- }
7
-
8
- parse(xml_document)
9
- {
10
- const doc = new DOMParser().parseFromString(xml_document, 'text/xml');
11
-
12
- const animation_nodes = doc.querySelectorAll('mxGeometry');
13
-
14
- const animation_tracks = [];
15
- const triggers = [];
16
-
17
- for (let i = 0; i < animation_nodes.length; i++)
18
- {
19
- const node = animation_nodes[i];
20
- const parent_node = node.parentElement;
21
- const data = parent_node.getAttribute('value');
22
-
23
- const x_pos = this.get_node_x_position(node);
24
-
25
- const from = x_pos / 100;
26
- const duration = parseFloat(node.getAttribute('width')) / 100;
27
-
28
- // is trigger
29
- if (parent_node.getAttribute('style').includes('rhombus;'))
30
- {
31
- const split_data = data.split('.');
32
- const trigger_name = split_data[0];
33
- const trigger_method = split_data[1];
34
-
35
- triggers.push({
36
- name: trigger_name,
37
- method: trigger_method,
38
- at_time: from + duration * 0.5
39
- });
40
- }
41
-
42
- const valid_element = parent_node.getAttribute('style').includes('rounded=0;') &&
43
- !parent_node.getAttribute('style').includes('text;');
44
-
45
- if (valid_element && data !== '' && !data.includes(' '))
46
- {
47
- const split_data = data.split('=');
48
-
49
- const attribute_name = split_data[0];
50
-
51
- const value_data = split_data[1].split('--');
52
- const to_value = parseFloat(value_data[0]);
53
- const easing_function = value_data[1];
54
-
55
- if (split_data.length !== 2)
56
- {
57
- console.error('DrawIO data is malformed:', data);
58
- }
59
-
60
- if (value_data.length !== 2)
61
- {
62
- console.error('DrawIO data is malformed:', data);
63
- }
64
-
65
- animation_tracks.push({
66
- attribute_name: attribute_name,
67
- from_time: from,
68
- to_time: from + duration,
69
- to_value: to_value,
70
- easing_function: easing_function
71
- });
72
- }
73
- }
74
-
75
- animation_tracks.sort((a, b) =>
76
- {
77
- return a.from_time - b.from_time;
78
- });
79
- return {
80
- animation_tracks: animation_tracks,
81
- triggers: triggers
82
- };
83
- }
84
-
85
- get_node_x_position(node)
86
- {
87
- const x_pos = node.getAttribute('x');
88
- return x_pos === null ? 0 : parseFloat(x_pos);
89
- }
90
- }
91
-
92
- export { DrawIOAnimationSheet };
1
+ class DrawIOAnimationSheet
2
+ {
3
+ constructor()
4
+ {
5
+
6
+ }
7
+
8
+ parse(xml_document)
9
+ {
10
+ const doc = new DOMParser().parseFromString(xml_document, 'text/xml');
11
+
12
+ const animation_nodes = doc.querySelectorAll('mxGeometry');
13
+
14
+ const animation_tracks = [];
15
+ const triggers = [];
16
+
17
+ for (let i = 0; i < animation_nodes.length; i++)
18
+ {
19
+ const node = animation_nodes[i];
20
+ const parent_node = node.parentElement;
21
+ const data = parent_node.getAttribute('value');
22
+
23
+ const x_pos = this.get_node_x_position(node);
24
+
25
+ const from = x_pos / 100;
26
+ const duration = parseFloat(node.getAttribute('width')) / 100;
27
+
28
+ // is trigger
29
+ if (parent_node.getAttribute('style').includes('rhombus;'))
30
+ {
31
+ const split_data = data.split('.');
32
+ const trigger_name = split_data[0];
33
+ const trigger_method = split_data[1];
34
+
35
+ triggers.push({
36
+ name: trigger_name,
37
+ method: trigger_method,
38
+ at_time: from + duration * 0.5
39
+ });
40
+ }
41
+
42
+ const valid_element = parent_node.getAttribute('style').includes('rounded=0;') &&
43
+ !parent_node.getAttribute('style').includes('text;');
44
+
45
+ if (valid_element && data !== '' && !data.includes(' '))
46
+ {
47
+ const split_data = data.split('=');
48
+
49
+ const attribute_name = split_data[0];
50
+
51
+ const value_data = split_data[1].split('--');
52
+ const to_value = parseFloat(value_data[0]);
53
+ const easing_function = value_data[1];
54
+
55
+ if (split_data.length !== 2)
56
+ {
57
+ console.error('DrawIO data is malformed:', data);
58
+ }
59
+
60
+ if (value_data.length !== 2)
61
+ {
62
+ console.error('DrawIO data is malformed:', data);
63
+ }
64
+
65
+ animation_tracks.push({
66
+ attribute_name: attribute_name,
67
+ from_time: from,
68
+ to_time: from + duration,
69
+ to_value: to_value,
70
+ easing_function: easing_function
71
+ });
72
+ }
73
+ }
74
+
75
+ animation_tracks.sort((a, b) =>
76
+ {
77
+ return a.from_time - b.from_time;
78
+ });
79
+ return {
80
+ animation_tracks: animation_tracks,
81
+ triggers: triggers
82
+ };
83
+ }
84
+
85
+ get_node_x_position(node)
86
+ {
87
+ const x_pos = node.getAttribute('x');
88
+ return x_pos === null ? 0 : parseFloat(x_pos);
89
+ }
90
+ }
91
+
92
+ export { DrawIOAnimationSheet };
@@ -1,54 +1,54 @@
1
- import { ActionSequencerBuilder } from './ActionSequencerBuilder';
2
-
3
- class TransitionTable
4
- {
5
- constructor()
6
- {
7
- this.transitions = [];
8
- this.default_state_data = {};
9
- }
10
-
11
- get(from_state_name, to_state_name, current_context)
12
- {
13
- for (let i = 0; i < this.transitions.length; i++)
14
- {
15
- if (this.transitions[i].from === from_state_name && this.transitions[i].to === to_state_name)
16
- {
17
- const action_sequencer = new ActionSequencerBuilder(this.default_state_data).from_animation_sheet(this.transitions[i].data, current_context);
18
- return action_sequencer;
19
- }
20
- }
21
-
22
- for (let i = 0; i < this.transitions.length; i++)
23
- {
24
- if (this.transitions[i].to === to_state_name && this.transitions[i].from === undefined)
25
- {
26
- const action_sequencer = new ActionSequencerBuilder(this.default_state_data).from_animation_sheet(this.transitions[i].data, current_context);
27
- return action_sequencer;
28
- }
29
- }
30
-
31
- console.error('TransitionTable.get no data found for: ', from_state_name, to_state_name);
32
- return undefined;
33
- }
34
-
35
- add_transitions(transitions)
36
- {
37
- for (let i = 0; i < transitions.length; i++)
38
- {
39
- this.transitions.push(transitions[i]);
40
- }
41
- }
42
-
43
- set_transitions(transitions)
44
- {
45
- this.transitions = transitions;
46
- }
47
-
48
- set_default_state_data(default_state_data)
49
- {
50
- this.default_state_data = default_state_data;
51
- }
52
- }
53
-
54
- export { TransitionTable };
1
+ import { ActionSequencerBuilder } from './ActionSequencerBuilder';
2
+
3
+ class TransitionTable
4
+ {
5
+ constructor()
6
+ {
7
+ this.transitions = [];
8
+ this.default_state_data = {};
9
+ }
10
+
11
+ get(from_state_name, to_state_name, current_context)
12
+ {
13
+ for (let i = 0; i < this.transitions.length; i++)
14
+ {
15
+ if (this.transitions[i].from === from_state_name && this.transitions[i].to === to_state_name)
16
+ {
17
+ const action_sequencer = new ActionSequencerBuilder(this.default_state_data).from_animation_sheet(this.transitions[i].data, current_context);
18
+ return action_sequencer;
19
+ }
20
+ }
21
+
22
+ for (let i = 0; i < this.transitions.length; i++)
23
+ {
24
+ if (this.transitions[i].to === to_state_name && this.transitions[i].from === undefined)
25
+ {
26
+ const action_sequencer = new ActionSequencerBuilder(this.default_state_data).from_animation_sheet(this.transitions[i].data, current_context);
27
+ return action_sequencer;
28
+ }
29
+ }
30
+
31
+ console.error('TransitionTable.get no data found for: ', from_state_name, to_state_name);
32
+ return undefined;
33
+ }
34
+
35
+ add_transitions(transitions)
36
+ {
37
+ for (let i = 0; i < transitions.length; i++)
38
+ {
39
+ this.transitions.push(transitions[i]);
40
+ }
41
+ }
42
+
43
+ set_transitions(transitions)
44
+ {
45
+ this.transitions = transitions;
46
+ }
47
+
48
+ set_default_state_data(default_state_data)
49
+ {
50
+ this.default_state_data = default_state_data;
51
+ }
52
+ }
53
+
54
+ export { TransitionTable };