@woosh/meep-engine 2.56.0 → 2.57.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 (228) hide show
  1. package/editor/ecs/component/editors/ColorEditor.js +1 -1
  2. package/editor/ecs/component/editors/ImagePathEditor.js +2 -2
  3. package/editor/ecs/component/editors/{LargeStrongEditor.js → LargeStringEditor.js} +1 -1
  4. package/editor/tools/GridPaintTool.js +3 -3
  5. package/editor/tools/TopDownCameraControlTool.js +1 -1
  6. package/editor/tools/TransformTool.js +1 -1
  7. package/editor/tools/engine/Tool.js +9 -23
  8. package/editor/tools/engine/ToolEngine.js +5 -7
  9. package/editor/tools/paint/TerrainHeightPaintTool.js +2 -2
  10. package/editor/tools/paint/TerrainPaintTool.js +2 -2
  11. package/editor/tools/paint/TerrainTexturePaintTool.js +2 -2
  12. package/package.json +1 -1
  13. package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +1 -1
  14. package/src/core/bvh2/traversal/ThreeClippingPlaneComputingBVHVisitor.js +1 -1
  15. package/src/core/bvh2/traversal/__process_point_if_within_planes.js +1 -1
  16. package/src/core/cache/LoadingCache.js +3 -2
  17. package/src/core/collection/array/arraySetSortingDiff.spec.js +12 -12
  18. package/src/core/collection/array/weightedRandomFromArray.js +2 -2
  19. package/src/core/color/Color.js +6 -6
  20. package/src/core/color/YCbCr/YCbCr.spec.js +16 -0
  21. package/src/core/color/{YCbCr_to_rgb_uint24.js → YCbCr/YCbCr_to_rgb_uint24.js} +6 -6
  22. package/src/core/color/YCbCr/rgb_to_YCbCr_uint24.js +16 -0
  23. package/src/core/color/{hex2rgb.js → hex/hex2rgb.js} +1 -1
  24. package/src/core/color/{rgb2hex.js → hex/rgb2hex.js} +1 -1
  25. package/src/core/color/{hsv2rgb.js → hsv/hsv2rgb.js} +3 -3
  26. package/src/core/color/hsv/rgb2hsv.js +49 -0
  27. package/src/core/color/{kelvin_to_rgb.js → kelvin/kelvin_to_rgb.js} +1 -1
  28. package/src/core/color/{kelvin_to_rgb.spec.js → kelvin/kelvin_to_rgb.spec.js} +2 -2
  29. package/src/core/color/{prototype_kelvin_to_rgb.js → kelvin/prototype_kelvin_to_rgb.js} +5 -5
  30. package/src/core/color/{rgb_to_kelvin.spec.js → kelvin/rgb_to_kelvin.spec.js} +1 -1
  31. package/src/core/color/{parseColor.js → parse_color.js} +4 -4
  32. package/src/core/color/parse_color.spec.js +18 -0
  33. package/src/core/color/rgb2uint24.js +3 -3
  34. package/src/core/color/sRGB/sRGB.spec.js +16 -0
  35. package/src/core/color/xyz/XYZ.spec.js +16 -0
  36. package/src/core/color/xyz/rgb_to_xyz.js +15 -0
  37. package/src/core/color/xyz/xyz_to_rgb.js +14 -0
  38. package/src/core/events/signal/Signal.js +5 -0
  39. package/src/core/events/signal/{signalAggregateByTimeWindow.js → signal_aggregate_by_time_window.js} +1 -1
  40. package/src/core/events/signal/{SignalUtils.js → signal_filter.js} +1 -2
  41. package/src/core/geom/2d/spline_bezier2_2d.js +26 -0
  42. package/src/core/geom/2d/spline_bezier2_2d.spec.js +16 -0
  43. package/src/core/geom/3d/SurfacePoint3.js +1 -1
  44. package/src/core/geom/3d/aabb/aabb3_compute_plane_side.js +1 -1
  45. package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.js +1 -1
  46. package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.js +1 -1
  47. package/src/core/geom/3d/compute_circle_bounding_box.js +1 -1
  48. package/src/core/geom/3d/cone/computeConeBoundingBox.js +1 -1
  49. package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +1 -1
  50. package/src/core/geom/3d/line/line3_computeSegmentPointDistance_sqr.js +1 -1
  51. package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.js +1 -1
  52. package/src/core/geom/3d/normal/hemioct/unit_hemioct.spec.js +1 -1
  53. package/src/core/geom/3d/normal/spherical/sphere_map_transform.js +1 -1
  54. package/src/core/geom/3d/plane/is_point_within_planes.js +1 -1
  55. package/src/core/geom/3d/plane/lerp_planes_to_array.js +1 -1
  56. package/src/core/geom/3d/plane/plane3_compute_convex_3_plane_intersection.js +1 -1
  57. package/src/core/geom/3d/plane/plane3_compute_line_segment_intersection.js +1 -1
  58. package/src/core/geom/3d/plane/plane3_compute_ray_intersection.js +1 -1
  59. package/src/core/geom/3d/plane/plane3_lerp.js +2 -2
  60. package/src/core/geom/3d/plane/plane3_projectPoint.js +1 -1
  61. package/src/core/geom/3d/plane/plane3_slerp.js +3 -3
  62. package/src/core/geom/3d/ray/ray_computeNearestPointToPoint.js +1 -1
  63. package/src/core/geom/3d/ray/ray_distance_to_point.js +1 -1
  64. package/src/core/geom/3d/shape/UnionShape3D.js +3 -3
  65. package/src/core/geom/3d/shape/UnitCubeShape3D.js +1 -1
  66. package/src/core/geom/3d/shape/UnitSphereShape3D.js +1 -1
  67. package/src/core/geom/3d/sphere/sphere_intersects_ray.js +1 -1
  68. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +6 -0
  69. package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.js +1 -1
  70. package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.spec.js +1 -1
  71. package/src/core/geom/3d/tetrahedra/compute_circumsphere.js +1 -1
  72. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js +1 -0
  73. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.spec.js +10 -2
  74. package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.js +1 -1
  75. package/src/core/geom/3d/topology/samples/sampleFloodFill.js +1 -1
  76. package/src/core/geom/3d/topology/simplify/compute_face_normal_change_dot_product.js +1 -1
  77. package/src/core/geom/3d/topology/simplify/quadratic/Quadratic3.js +1 -1
  78. package/src/core/geom/3d/topology/simplify/tm_edge_collapse_is_degenerate_flip.js +2 -2
  79. package/src/core/geom/3d/topology/struct/TopoVertex.js +1 -1
  80. package/src/core/geom/3d/topology/util/compute_face_connection_weight.js +2 -2
  81. package/src/core/geom/3d/triangle/computeTrianglePlaneSide.js +1 -1
  82. package/src/core/geom/3d/triangle/computeTriangleRayIntersection.js +1 -1
  83. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricEdge.js +1 -1
  84. package/src/core/geom/3d/v3_compute_triangle_normal.js +1 -1
  85. package/src/core/geom/Quaternion.js +1 -1
  86. package/src/core/geom/Vector3.js +7 -7
  87. package/src/core/geom/Vector3.spec.js +68 -1
  88. package/src/core/geom/mat2/m2_add.js +17 -0
  89. package/src/core/geom/mat2/m2_determinant.js +8 -0
  90. package/src/core/geom/mat2/m2_multiply.js +17 -0
  91. package/src/core/geom/mat2/m2_multiply_scalar.js +18 -0
  92. package/src/core/geom/mat2/m2_multiply_transposed.js +18 -0
  93. package/src/core/geom/mat2/m2_sub_transposed.js +17 -0
  94. package/src/{view → core/geom/mat3}/m3_cm_compose_transform.js +0 -29
  95. package/src/core/geom/mat3/m3_cm_extract_rotation.js +8 -0
  96. package/src/core/geom/mat3/m3_cm_from_translation.js +19 -0
  97. package/src/{view/multiplyMatrices3.js → core/geom/mat3/m3_multiply.js} +2 -2
  98. package/src/{view → core/geom/mat3}/m3_rm_compose_transform.js +0 -9
  99. package/src/core/geom/mat3/m3_rm_extract_scale.js +7 -0
  100. package/src/core/geom/{3d/vector/allocate_v3.js → vec3/v3_allocate.js} +1 -1
  101. package/src/core/geom/{v3_angle_between.js → vec3/v3_angle_between.js} +1 -1
  102. package/src/core/geom/vec3/v3_dot_array_array.js +20 -0
  103. package/src/core/geom/{v3_lerp.js → vec3/v3_lerp.js} +1 -1
  104. package/src/core/graph/SquareMatrix.js +26 -3
  105. package/src/core/graph/SquareMatrix.spec.js +52 -2
  106. package/src/core/math/clamp01.js +1 -0
  107. package/src/core/math/fract.js +3 -1
  108. package/src/core/math/inverseLerp.js +7 -5
  109. package/src/core/math/lerp.js +5 -5
  110. package/src/core/math/physics/spring/computeHookeForce.js +9 -0
  111. package/src/core/math/remap.js +19 -0
  112. package/src/core/math/remap.spec.js +15 -0
  113. package/src/core/math/smoothStep.spec.js +16 -0
  114. package/src/core/math/spline/spline_bezier2.js +13 -0
  115. package/src/core/math/spline/spline_bezier2.spec.js +13 -0
  116. package/src/core/model/object/compareValues.js +2 -2
  117. package/src/core/model/object/read_property.js +10 -2
  118. package/src/core/model/object/write_property.js +3 -23
  119. package/src/core/model/object/write_property.spec.js +26 -0
  120. package/src/core/primitives/numbers/number_pretty_print.spec.js +19 -0
  121. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +2 -2
  122. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +2 -2
  123. package/src/engine/ecs/systems/SteeringSystem.js +1 -1
  124. package/src/engine/ecs/terrain/ecs/splat/SplatMapOptimizerDebugger.js +1 -1
  125. package/src/engine/graphics/ecs/camera/Camera.js +1 -1
  126. package/src/engine/graphics/ecs/camera/CameraClippingPlaneComputer.js +1 -1
  127. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +3 -11
  128. package/src/engine/graphics/ecs/highlight/Highlight.js +20 -102
  129. package/src/engine/graphics/ecs/mesh/Mesh.js +12 -18
  130. package/src/engine/graphics/ecs/mesh/MeshSystem.js +41 -26
  131. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +1 -1
  132. package/src/engine/graphics/ecs/path/tube/build/TubePathBuilder.js +1 -1
  133. package/src/engine/graphics/ecs/path/tube/build/makeTubeGeometry.js +1 -1
  134. package/src/engine/graphics/ecs/path/tube/build/make_cap.js +3 -3
  135. package/src/engine/graphics/ecs/path/tube/build/make_ring_vertices.js +1 -1
  136. package/src/engine/graphics/geometry/MikkT/InitTriInfo.js +5 -6
  137. package/src/engine/graphics/geometry/MikkT/MikkTSpace.js +3 -3
  138. package/src/engine/graphics/geometry/MikkT/NormalizeSafe.js +1 -2
  139. package/src/engine/graphics/geometry/MikkT/STSpace.js +3 -3
  140. package/src/engine/graphics/geometry/MikkT/v3_scale_dot_sub_normalize.js +2 -2
  141. package/src/engine/graphics/geometry/bvh/buffered/BVHGeometryRaycaster.js +1 -1
  142. package/src/engine/graphics/geometry/clipping/ClippedGeometry.js +1 -1
  143. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +102 -95
  144. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.spec.js +25 -0
  145. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +0 -35
  146. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.spec.js +39 -2
  147. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +22 -6
  148. package/src/engine/graphics/render/forward_plus/LightManager.js +1 -1
  149. package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +2 -2
  150. package/src/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +3 -3
  151. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +1 -1
  152. package/src/engine/graphics/render/layers/RenderLayerUtils.js +1 -1
  153. package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +3 -2
  154. package/src/engine/graphics/sh3/LightProbeVolume.js +1 -1
  155. package/src/engine/graphics/sh3/path_tracer/PathTracer.js +2 -2
  156. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +2 -2
  157. package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.js +1 -1
  158. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.js +1 -1
  159. package/src/engine/graphics/sh3/path_tracer/ray_reflect.js +1 -1
  160. package/src/engine/graphics/sh3/sky/hosek/data.js +3744 -0
  161. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +10 -3786
  162. package/src/engine/graphics/texture/atlas/AbstractTextureAtlas.js +1 -1
  163. package/src/engine/graphics/texture/atlas/AtlasPatch.js +0 -1
  164. package/src/engine/graphics/texture/atlas/AtlasPatchFlag.js +8 -1
  165. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +25 -0
  166. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.spec.js +54 -0
  167. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +101 -160
  168. package/src/engine/graphics/texture/atlas/TextureAtlas.js +18 -1
  169. package/src/engine/graphics/texture/sampler/sampler2d_ensure_uint8_RGBA.js +22 -0
  170. package/src/engine/graphics/util/projectSphere.js +1 -1
  171. package/src/engine/navigation/ecs/components/Path.js +1 -1
  172. package/src/engine/options/OptionGroup.js +10 -0
  173. package/src/engine/physics/mls-mpm/MLS_MPM.js +11 -106
  174. package/src/engine/reference/v2/Reference.js +6 -2
  175. package/src/engine/sound/ecs/emitter/SoundEmitter.js +7 -7
  176. package/src/engine/sound/ecs/emitter/SoundTrack.js +6 -6
  177. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +1 -1
  178. package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +2 -4
  179. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -2
  180. package/src/generation/theme/ThemeEngine.js +2 -2
  181. package/src/generation/theme/ThemeEngine.spec.js +7 -0
  182. package/src/view/View.js +21 -13
  183. package/src/view/elements/ColorPickerView.js +2 -2
  184. package/src/view/minimap/gl/MarkerGL.js +20 -18
  185. package/src/view/minimap/gl/MinimapMarkersGL.js +2 -1
  186. package/editor/tools/FoliagePaintTool.js +0 -168
  187. package/editor/tools/engine/ToolStateMachine.js +0 -53
  188. package/src/core/NumberFormat.js +0 -4
  189. package/src/core/color/rgb2hsv.js +0 -47
  190. package/src/core/color/rgb_to_YCbCr_uint24.js +0 -16
  191. package/src/core/fsm/StateMachine.js +0 -440
  192. package/src/core/fsm/Transition.js +0 -65
  193. package/src/core/geom/Bezier.js +0 -24
  194. package/src/core/geom/Bezier.spec.js +0 -16
  195. package/src/core/math/spline/quadraticCurve.js +0 -11
  196. package/src/core/math/spline/quadraticCurve.spec.js +0 -13
  197. package/src/core/primitives/numbers/compareNumbers.js +0 -9
  198. package/src/engine/graphics/ecs/decal/Decal.js +0 -10
  199. package/src/engine/graphics/ecs/decal/DecalSystem.js +0 -99
  200. package/src/engine/graphics/ecs/decal/threejs/DecalGeometry.js +0 -298
  201. package/src/engine/graphics/ecs/trail/Trail.js +0 -83
  202. package/src/engine/graphics/ecs/trail/TrailMaterial.js +0 -67
  203. package/src/engine/graphics/ecs/trail/TrailMaterial2.js +0 -73
  204. package/src/engine/graphics/ecs/trail/TrailSystem.js +0 -162
  205. package/src/engine/graphics/ecs/water2/NodeWaterShader1.js +0 -213
  206. package/src/engine/graphics/ecs/water2/shader/JBWaterShader.js +0 -315
  207. package/src/engine/graphics/geometry/MikkT/Length.js +0 -10
  208. package/src/engine/graphics/texture/ImageLoader.js +0 -33
  209. package/src/engine/graphics/three/DDSLoader.js +0 -286
  210. package/src/engine/graphics/three/Water2.js +0 -343
  211. package/src/engine/physics/spring/computeHookeForce.js +0 -9
  212. package/src/engine/reference/v1/ReferenceManager.js +0 -124
  213. /package/src/core/color/{hex2rgb.spec.js → hex/hex2rgb.spec.js} +0 -0
  214. /package/src/core/color/{rgb2hex.spec.js → hex/rgb2hex.spec.js} +0 -0
  215. /package/src/core/color/{hsv2rgb.spec.js → hsv/hsv2rgb.spec.js} +0 -0
  216. /package/src/core/color/{rgb_to_kelvin.js → kelvin/rgb_to_kelvin.js} +0 -0
  217. /package/src/core/color/{linear_to_sRGB.js → sRGB/linear_to_sRGB.js} +0 -0
  218. /package/src/core/color/{sRGB_to_linear.js → sRGB/sRGB_to_linear.js} +0 -0
  219. /package/src/core/geom/{m3_determinant.js → mat3/m3_determinant.js} +0 -0
  220. /package/src/core/geom/{v3_distance.js → vec3/v3_distance.js} +0 -0
  221. /package/src/core/geom/{v3_distance_above_plane.js → vec3/v3_distance_above_plane.js} +0 -0
  222. /package/src/core/geom/{v3_distance_above_plane.spec.js → vec3/v3_distance_above_plane.spec.js} +0 -0
  223. /package/src/core/geom/{v3_distance_sqr.d.ts → vec3/v3_distance_sqr.d.ts} +0 -0
  224. /package/src/core/geom/{v3_distance_sqr.js → vec3/v3_distance_sqr.js} +0 -0
  225. /package/src/core/geom/{v3_dot.js → vec3/v3_dot.js} +0 -0
  226. /package/src/core/geom/{v3_length.js → vec3/v3_length.js} +0 -0
  227. /package/src/core/geom/{v3_length_sqr.js → vec3/v3_length_sqr.js} +0 -0
  228. /package/src/core/geom/{v3_slerp.js → vec3/v3_slerp.js} +0 -0
@@ -1,168 +0,0 @@
1
- import Tool from "./engine/Tool.js";
2
- import Vector1 from "../../src/core/geom/Vector1.js";
3
- import ObservedValue from "../../src/core/model/ObservedValue.js";
4
- import Vector4 from "../../src/core/geom/Vector4.js";
5
- import loadSampler2D from "../../src/engine/graphics/texture/sampler/loadSampler2D.js";
6
- import convertSampler2D2Canvas from "../../src/engine/graphics/texture/sampler/Sampler2D2Canvas.js";
7
- import { InstancedMeshComponent } from "../../src/engine/ecs/foliage/ecs/InstancedMeshComponent.js";
8
- import { hex2rgb } from "../../src/core/color/hex2rgb.js";
9
- import { obtainTerrain } from "../../src/engine/ecs/terrain/util/obtainTerrain.js";
10
-
11
- class FoliagePaintTool extends Tool {
12
- constructor() {
13
- super();
14
- this.name = "foliage_paint";
15
-
16
- this.settings.layer = new Vector1(0);
17
- this.settings.value = new Vector1(1);
18
- this.settings.alphaMultiplier = new Vector1(1);
19
- this.settings.color = new ObservedValue("#FFFFFF");
20
-
21
- this.settings.baseColor = new ObservedValue("#000000");
22
- this.settings.baseColorAlpha = new Vector1(0.6);
23
-
24
- const self = this;
25
-
26
- }
27
-
28
- updateSelection() {
29
- self.paint();
30
- }
31
-
32
- buildColor() {
33
-
34
- const color = new Vector4();
35
- const baseColor = hex2rgb(this.settings.color.get());
36
- color.set(baseColor.r, baseColor.g, baseColor.b, 0);
37
- color.multiplyScalar(1 / 255);
38
-
39
- return color;
40
- }
41
-
42
- buildBaseColor() {
43
-
44
- const color = new Vector4();
45
- const baseColor = hex2rgb(this.settings.baseColor.get());
46
- color.set(baseColor.r, baseColor.g, baseColor.b, 0);
47
- color.multiplyScalar(1 / 255);
48
-
49
- color.w = this.settings.baseColorAlpha.getValue();
50
-
51
- return color;
52
- }
53
-
54
- initialize() {
55
- super.initialize();
56
-
57
- const engine = this.engine;
58
- const editor = this.editor;
59
-
60
- this.terrain = obtainTerrain(engine.entityManager.dataset, function (t, entity) {
61
- self.terrainEntity = entity;
62
- });
63
-
64
- this.terrain.overlay.push();
65
-
66
- this.terrain.overlay.borderWidth.set(0);
67
-
68
- this.paint();
69
-
70
- editor.selection.on.added.add(this.updateSelection);
71
- editor.selection.on.removed.add(this.updateSelection);
72
- }
73
-
74
- shutdown() {
75
- this.terrain.overlay.pop();
76
-
77
- this.editor.selection.on.added.remove(this.updateSelection);
78
- this.editor.selection.on.removed.remove(this.updateSelection);
79
-
80
- this.settings.value.onChanged.remove(this.updateSelection);
81
- this.settings.alphaMultiplier.onChanged.remove(this.updateSelection);
82
- this.settings.color.onChanged.remove(this.updateSelection);
83
-
84
- super.shutdown();
85
- }
86
-
87
- paint() {
88
-
89
- const alphaMultiplier = this.settings.alphaMultiplier.getValue();
90
- const overlay = this.terrain.overlay;
91
- overlay.clear();
92
-
93
- const layer = this.settings.layer.getValue();
94
-
95
- const color = this.buildColor();
96
-
97
- const baseColor = this.buildBaseColor();
98
-
99
- const engine = this.engine;
100
-
101
- /**
102
- *
103
- * @param {InstancedMeshComponent} foliage
104
- * @param {Number} entity
105
- */
106
- function visit(foliage, entity) {
107
- const foliageLayer = foliage.layers.get(layer);
108
- loadSampler2D(foliageLayer.densityMap.get(), engine.assetManager).then(function (sampler) {
109
-
110
- overlay.size.set(sampler.width, sampler.height);
111
- overlay.clear();
112
-
113
- const v4c = new Vector4(0, 0, 0, 0);
114
-
115
- function mappingFunction(index, array, x, y) {
116
- const address = index;
117
- const alpha = sampler.data[address / 4] * alphaMultiplier;
118
- color.w = alpha;
119
-
120
- Vector4.lerp(color, baseColor, (1 - alpha), v4c);
121
-
122
- //scale to unsigned byte value
123
- v4c.multiplyScalar(255);
124
-
125
-
126
- array[address] = v4c.x;
127
- array[address + 1] = v4c.y;
128
- array[address + 2] = v4c.z;
129
- //alpha
130
- array[address + 3] = v4c.w;
131
- }
132
-
133
- convertSampler2D2Canvas(sampler, 1, 0, overlay.canvas, mappingFunction);
134
-
135
- overlay.update();
136
- });
137
- }
138
-
139
- //initialize overlay
140
- this.traverse(visit);
141
- }
142
-
143
- traverse(callback) {
144
- /**
145
- * @type {EntityManager}
146
- */
147
- const entityManger = this.engine.entityManager;
148
- this.editor.selection.forEach(function (entity) {
149
-
150
- /**
151
- *
152
- * @type {InstancedMeshComponent}
153
- */
154
- const foliage = entityManger.getComponent(entity, InstancedMeshComponent);
155
-
156
-
157
- if (foliage === null) {
158
- //do nothing
159
- return;
160
- }
161
-
162
- callback(foliage, entity);
163
- });
164
- }
165
- }
166
-
167
-
168
- export default FoliagePaintTool;
@@ -1,53 +0,0 @@
1
- import { SimpleStateMachineDescription } from "../../../src/core/fsm/simple/SimpleStateMachineDescription.js";
2
- import { ToolState } from "./ToolState.js";
3
- import { StateMachine } from "../../../src/core/fsm/StateMachine.js";
4
-
5
- const smd = new SimpleStateMachineDescription();
6
-
7
- smd.createState(ToolState.Initial);
8
- smd.createState(ToolState.Ready);
9
- smd.createState(ToolState.Running);
10
-
11
- smd.createEdge(ToolState.Initial, ToolState.Ready);
12
- smd.createEdge(ToolState.Ready, ToolState.Initial);
13
- smd.createEdge(ToolState.Ready, ToolState.Running);
14
- smd.createEdge(ToolState.Running, ToolState.Ready);
15
-
16
-
17
- /**
18
- * @param {Tool} tool
19
- * @returns {StateMachine}
20
- */
21
- export function buildToolStateMachine(tool) {
22
- const sm = new StateMachine(smd);
23
-
24
- sm.addState(ToolState.Initial);
25
- sm.addState(ToolState.Ready);
26
- sm.addState(ToolState.Running);
27
-
28
-
29
- sm.createTransition(ToolState.Initial, ToolState.Ready, () => {
30
- tool.initialize();
31
- return Promise.resolve();
32
- });
33
-
34
- sm.createTransition(ToolState.Ready, ToolState.Initial, () => {
35
- tool.shutdown();
36
- return Promise.resolve();
37
- });
38
-
39
- sm.createTransition(ToolState.Ready, ToolState.Running, () => {
40
- tool.start();
41
- return Promise.resolve();
42
- });
43
-
44
- sm.createTransition(ToolState.Running, ToolState.Ready, () => {
45
- tool.stop();
46
- return Promise.resolve();
47
- });
48
-
49
- sm.setState(ToolState.Initial);
50
-
51
-
52
- return sm;
53
- }
@@ -1,4 +0,0 @@
1
- /**
2
- * Created by Alex on 08/08/2016.
3
- * @copyright Alex Goldring 2016
4
- */
@@ -1,47 +0,0 @@
1
- /**
2
- *
3
- * @param {number} r 0 to 255
4
- * @param {number} g 0 to 255
5
- * @param {number} b 0 to 255
6
- * @returns {{h: number, s: number, v: number}}
7
- */
8
- export function rgb2hsv(r, g, b) {
9
-
10
- r /= 255;
11
- g /= 255;
12
- b /= 255;
13
-
14
-
15
- const max = Math.max(r, g, b);
16
- const min = Math.min(r, g, b);
17
-
18
- var h, s, v = max;
19
-
20
- var d = max - min;
21
-
22
- s = max === 0 ? 0 : d / max;
23
-
24
- if (max === min) {
25
- h = 0; // achromatic
26
- } else {
27
- switch (max) {
28
- case r:
29
- h = (g - b) / d + (g < b ? 6 : 0);
30
- break;
31
- case g:
32
- h = (b - r) / d + 2;
33
- break;
34
- case b:
35
- h = (r - g) / d + 4;
36
- break;
37
- }
38
-
39
- h /= 6;
40
- }
41
-
42
- return {
43
- h,
44
- s,
45
- v
46
- };
47
- }
@@ -1,16 +0,0 @@
1
- import { rgb2uint24 } from "./rgb2uint24.js";
2
-
3
- export function rgb_to_YCbCr_uint24(r, g, b) {
4
- const Y = 0.299 * r + 0.587 * g + 0.114 * b;
5
- const Cb = -0.169 * r - 0.331 * g + 0.499 * b + 128;
6
- const Cr = 0.499 * g - 0.418 * g - 0.0813 * b + 128;
7
- /**
8
- *
9
- * @see https://en.wikipedia.org/wiki/YUV
10
- * @param {number} r
11
- * @param {number} g
12
- * @param {number} b
13
- * @returns {number}
14
- */
15
- return rgb2uint24(Y,Cb,Cr);
16
- }