@woosh/meep-engine 2.33.22 → 2.33.26

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 (288) hide show
  1. package/core/bvh2/BinaryNode.js +1 -1
  2. package/core/bvh2/aabb3/AABB3.js +18 -0
  3. package/core/bvh2/aabb3/AABB3Math.js +1 -1
  4. package/core/bvh2/binary/2/BinaryUint32BVH.js +498 -0
  5. package/core/bvh2/binary/2/BinaryUint32BVH.spec.js +54 -0
  6. package/core/bvh2/binary/IndexedBinaryBVH.js +22 -26
  7. package/core/bvh2/traversal/ThreeClippingPlaneComputingBVHVisitor.js +5 -1
  8. package/core/bvh2/traversal/__detailed_box_volume_intersection.js +31 -11
  9. package/core/collection/ArrayUtils.js +1 -1
  10. package/core/collection/array/arrayQuickSort.js +9 -6
  11. package/core/collection/array/array_swap.js +22 -0
  12. package/core/collection/array/binarySearchHighIndex.js +1 -1
  13. package/core/collection/array/computeHashArray.js +22 -0
  14. package/core/collection/array/computeHashIntegerArray.js +15 -0
  15. package/core/collection/array/copyArray.js +2 -2
  16. package/core/collection/table/DataType2TypedArrayConstructorMapping.js +15 -0
  17. package/core/color/Color.js +2 -1
  18. package/core/function/FunctionCompiler.js +2 -1
  19. package/core/geom/3d/aabb/aabb3_computeDistanceAbovePlane.js +9 -33
  20. package/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +10 -2
  21. package/core/geom/3d/line/line3_computeSegmentPointDistance_sqr.js +41 -0
  22. package/core/geom/3d/morton/mortonEncode_magicbits.js +2 -1
  23. package/core/geom/3d/morton/reinterpret_float32_as_int32.js +13 -0
  24. package/core/geom/3d/morton/v3_morton_encode_transformed.js +33 -0
  25. package/core/geom/3d/normal/hemioct/unit_hemioct.spec.js +1 -1
  26. package/core/geom/3d/plane/plane_computeConvex3PlaneIntersection.js +13 -14
  27. package/core/geom/3d/ray/ray_computeNearestPointToPoint.js +37 -0
  28. package/core/geom/3d/shape/AbstractShape3D.js +65 -0
  29. package/core/geom/3d/shape/TransformedShape3D.js +181 -0
  30. package/core/geom/3d/shape/TransformedShape3D.spec.js +33 -0
  31. package/core/geom/3d/shape/UnionShape3D.js +255 -0
  32. package/core/geom/3d/shape/UnitCubeShape3D.js +101 -0
  33. package/core/geom/3d/shape/UnitCubeShape3D.spec.js +42 -0
  34. package/core/geom/3d/shape/UnitSphereShape3D.js +55 -0
  35. package/core/geom/3d/shape/util/compute_signed_distance_gradient_by_sampling.js +48 -0
  36. package/core/geom/3d/shape/util/shape_to_visual_entity.js +159 -0
  37. package/core/geom/3d/voxel/DenseBitVolume3D.js +87 -0
  38. package/core/geom/3d/voxel/buildVolumeFromProjectedGeometry.js +23 -0
  39. package/core/geom/AABB2.js +1 -1
  40. package/core/geom/ConicRay.js +3 -1
  41. package/core/geom/LineSegment.js +0 -78
  42. package/core/geom/Matrix4.js +7 -8
  43. package/core/geom/Plane.js +14 -9
  44. package/core/geom/Rectangle.js +2 -1
  45. package/core/geom/Vector1.js +1 -1
  46. package/core/geom/Vector3.js +2 -1
  47. package/core/geom/Vector4.js +2 -1
  48. package/core/geom/random/randomPointInBox.js +7 -3
  49. package/core/geom/random/randomPointInPoint.js +6 -3
  50. package/core/geom/random/randomPointInSphere.js +9 -5
  51. package/core/geom/random/randomPointOnBox.js +7 -3
  52. package/core/geom/random/randomPointOnSphere.js +6 -3
  53. package/core/geom/v3_length.js +8 -3
  54. package/core/graph/graph_k_means_cluster.js +1 -1
  55. package/core/json/resolvePathByArray.js +2 -2
  56. package/core/math/MathUtils.js +0 -354
  57. package/core/math/MathUtils.spec.js +7 -1
  58. package/core/math/gaussian.js +9 -0
  59. package/core/math/hash/computeHashFloat.js +17 -0
  60. package/core/math/hash/computeHashFloatArray.js +34 -0
  61. package/core/math/hash/computeObjectHash.js +54 -0
  62. package/core/math/intersects1D.js +19 -0
  63. package/core/math/interval/NumericInterval.js +2 -2
  64. package/core/math/isValueBetween.js +10 -0
  65. package/core/math/isValueBetweenInclusive.js +10 -0
  66. package/core/math/noise/curl_noise_3dt.js +1 -1
  67. package/core/math/noise/sdnoise.js +10 -10
  68. package/core/math/overlap1D.js +19 -0
  69. package/core/math/pingpong.js +17 -0
  70. package/core/math/random/makeRangedRandom.js +19 -0
  71. package/core/math/random/randomFloatBetween.js +14 -0
  72. package/core/math/random/randomFromArray.js +19 -0
  73. package/core/math/random/randomGaussian.js +15 -0
  74. package/core/math/random/randomIntegerBetween.js +14 -0
  75. package/core/math/random/roundFair.js +15 -0
  76. package/core/math/separation1D.js +21 -0
  77. package/core/math/solveQuadratic.js +25 -0
  78. package/core/model/BoundedValue.js +1 -1
  79. package/core/model/node-graph/node/NodeInstancePortReference.js +1 -1
  80. package/core/model/node-graph/node/Port.js +1 -1
  81. package/core/model/reactive/evaluation/MultiPredicateEvaluator.spec.js +3 -1
  82. package/core/model/reactive/model/ReactiveBinaryExpression.js +1 -1
  83. package/core/model/reactive/model/terminal/ReactiveLiteralNumber.js +1 -1
  84. package/core/model/reactive/model/terminal/ReactiveReference.js +1 -1
  85. package/core/model/reactive/model/util/createRandomReactiveExpression.js +1 -1
  86. package/core/model/stat/LinearModifier.js +1 -1
  87. package/core/primitives/array/computeIntegerArrayHash.js +1 -1
  88. package/{engine/graphics/render/forward_plus/materials → core/primitives/strings}/insert_after.js +3 -0
  89. package/core/primitives/strings/insert_after_or_replace.js +27 -0
  90. package/editor/process/symbolic/makeHelperBoxGeometry.js +44 -0
  91. package/editor/view/ecs/EntityEditor.js +2 -2
  92. package/editor/view/ecs/components/particles/ParticleEmitterController.js +2 -2
  93. package/engine/EngineHarness.js +1 -0
  94. package/engine/animation/AnimationUtils.js +5 -5
  95. package/engine/animation/curve/AnimationCurve.js +72 -0
  96. package/engine/animation/curve/Keyframe.js +27 -0
  97. package/engine/animation/keyed2/AnimationTrack.js +27 -3
  98. package/engine/asset/Asset.js +1 -1
  99. package/engine/asset/loaders/GLTFAssetLoader.d.ts +1 -1
  100. package/engine/asset/loaders/GLTFAssetLoader.js +10 -0
  101. package/engine/asset/loaders/image/ImageRGBADataAsset.js +8 -1
  102. package/engine/asset/loaders/material/computeImageBitmapEquality.js +11 -0
  103. package/engine/asset/loaders/material/computeImageBitmapHash.js +22 -28
  104. package/engine/asset/loaders/material/computeMaterialHash.js +3 -1
  105. package/engine/asset/loaders/material/computeTextureHash.js +2 -1
  106. package/engine/ecs/EntityBuilder.js +25 -5
  107. package/engine/ecs/animation/Animation.js +2 -1
  108. package/engine/ecs/animation/InverseKinematics.js +2 -1
  109. package/engine/ecs/attachment/AttachmentBinding.js +8 -0
  110. package/engine/ecs/attachment/AttachmentSystem.js +4 -0
  111. package/engine/ecs/attachment/TransformAttachmentBinding.js +14 -44
  112. package/engine/ecs/components/Tag.js +27 -6
  113. package/engine/ecs/dynamic_actions/DynamicActorSystem.js +2 -1
  114. package/engine/ecs/dynamic_actions/DynamicRuleDescriptionTable.spec.js +3 -5
  115. package/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +1 -1
  116. package/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +1 -1
  117. package/engine/ecs/foliage/ecs/Foliage2.js +1 -1
  118. package/engine/ecs/fow/FogOfWar.js +4 -0
  119. package/engine/ecs/fow/FogOfWarSystem.js +2 -0
  120. package/engine/ecs/fow/shader/FogOfWarRenderer.js +1 -1
  121. package/engine/ecs/gui/GUIElement.js +1 -1
  122. package/engine/ecs/gui/hud/HeadsUpDisplay.js +1 -1
  123. package/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +2 -0
  124. package/engine/ecs/gui/position/ViewportPosition.js +2 -1
  125. package/engine/ecs/system/AbstractContextSystem.js +1 -1
  126. package/engine/ecs/systems/RangedAttackSystem.js +1 -1
  127. package/engine/ecs/systems/SteeringSystem.js +1 -1
  128. package/engine/ecs/systems/TagSystem.js +17 -0
  129. package/engine/ecs/terrain/tiles/TerrainTileManager.js +1 -1
  130. package/engine/ecs/tooltip/TooltipComponent.js +15 -0
  131. package/engine/ecs/transform/Transform.js +19 -6
  132. package/engine/ecs/util/hideEntityGracefully.js +18 -0
  133. package/engine/graphics/GraphicsEngine.js +11 -23
  134. package/engine/graphics/camera/testClippingPlaneComputation.js +2 -2
  135. package/engine/graphics/composit/CompositLayer.js +17 -4
  136. package/engine/graphics/composit/CompositingStages.js +8 -0
  137. package/engine/graphics/composit/LayerCompositer.js +35 -6
  138. package/engine/graphics/ecs/animation/animator/AnimationClip.js +2 -1
  139. package/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +2 -1
  140. package/engine/graphics/ecs/animation/animator/AnimationNotification.js +2 -1
  141. package/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +2 -1
  142. package/engine/graphics/ecs/animation/animator/graph/AnimationGraph.js +2 -1
  143. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +2 -1
  144. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +1 -1
  145. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +2 -1
  146. package/engine/graphics/ecs/camera/CameraClippingPlaneComputer.js +1 -1
  147. package/engine/graphics/ecs/highlight/HighlightDefinition.js +2 -1
  148. package/engine/graphics/ecs/highlight/plugin/OutlineRenderPlugin.js +11 -7
  149. package/engine/graphics/ecs/light/Light.d.ts +1 -1
  150. package/engine/graphics/ecs/light/Light.js +5 -0
  151. package/engine/graphics/ecs/light/binding/three/ThreeLightBinding.js +5 -1
  152. package/engine/graphics/ecs/mesh/Mesh.js +2 -1
  153. package/engine/graphics/ecs/mesh-v2/DrawMode.js +5 -0
  154. package/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +13 -0
  155. package/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +32 -18
  156. package/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts +6 -0
  157. package/engine/graphics/ecs/path/testPathDisplaySystem.js +98 -98
  158. package/engine/graphics/ecs/trail2d/Trail2D.js +17 -4
  159. package/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts +2 -3
  160. package/engine/graphics/ecs/trail2d/Trail2DSystem.js +34 -118
  161. package/engine/graphics/geometry/AttributeSpec.js +105 -0
  162. package/engine/graphics/{micron/format/MicronVertexDataSpec.js → geometry/VertexDataSpec.js} +56 -25
  163. package/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +7 -7
  164. package/engine/graphics/micron/build/fill_patch_geometry_data.js +1 -1
  165. package/engine/graphics/micron/buildPatchwork.js +1 -1
  166. package/engine/graphics/micron/format/MicronGeometry.js +3 -3
  167. package/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.js +2 -2
  168. package/engine/graphics/micron/format/serialization/deserialize_attribute_spec.js +1 -1
  169. package/engine/graphics/micron/format/serialization/serialize_attribute_spec.js +1 -1
  170. package/engine/graphics/micron/render/PatchCacheKey.js +1 -1
  171. package/engine/graphics/micron/render/instanced/AttributeDataTexture.js +5 -5
  172. package/engine/graphics/micron/render/v1/ThreeVirtualGeometryAdapter.js +1 -1
  173. package/engine/graphics/particles/ParticleEmitterLibrary.js +3 -0
  174. package/engine/graphics/particles/ecs/{ParticleEmitterSystem2.js → ParticleEmitterSystem.js} +17 -9
  175. package/engine/graphics/particles/particular/engine/ParticularEngine.js +12 -4
  176. package/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.js +84 -0
  177. package/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +106 -169
  178. package/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.js +5 -0
  179. package/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +14 -3
  180. package/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +141 -14
  181. package/engine/graphics/particles/particular/engine/emitter/ParticlePool.spec.js +8 -7
  182. package/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +37 -0
  183. package/engine/graphics/particles/particular/engine/emitter/distance_to_camera.js +25 -0
  184. package/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +8 -2
  185. package/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +2 -1
  186. package/engine/graphics/particles/particular/engine/parameter/ParameterTrack.js +1 -1
  187. package/engine/graphics/particles/particular/engine/parameter/ParticleParameter.js +1 -1
  188. package/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.js +24 -0
  189. package/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +262 -71
  190. package/engine/graphics/particles/particular/engine/renderers/billboard/prototypeBillboardRenderer.js +9 -9
  191. package/engine/graphics/particles/particular/engine/shader/ShaderManager.js +80 -46
  192. package/engine/graphics/particles/particular/engine/shader/debugAtlas.js +14 -0
  193. package/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.js +2 -5
  194. package/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.js +2 -6
  195. package/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.js +2 -7
  196. package/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.js +2 -5
  197. package/engine/graphics/particles/particular/engine/simulator/update_parameters.js +1 -1
  198. package/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +1 -1
  199. package/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +1 -1
  200. package/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.js +141 -0
  201. package/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +478 -0
  202. package/engine/graphics/particles/particular/engine/utils/volume/lut_to_sampler.js +27 -0
  203. package/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +935 -0
  204. package/engine/graphics/particles/particular/group/Operation.js +18 -0
  205. package/engine/graphics/particles/particular/group/OperationType.js +9 -0
  206. package/engine/graphics/particles/particular/group/ParticleAttribute.js +2 -1
  207. package/engine/graphics/particles/particular/group/ParticleAttributeType.js +11 -0
  208. package/engine/graphics/particles/particular/group/ParticleDataType.js +10 -0
  209. package/engine/graphics/particles/particular/group/ParticleGroup.js +7 -245
  210. package/engine/graphics/particles/particular/group/ParticleGroup.spec.js +3 -1
  211. package/engine/graphics/particles/particular/group/ParticleSpecification.js +21 -14
  212. package/engine/graphics/particles/particular/group/itemSizeFromAttributeType.js +20 -0
  213. package/engine/graphics/particles/particular/group/optimizeCommandQueue.js +162 -0
  214. package/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.js +19 -0
  215. package/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +2 -2
  216. package/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +13 -7
  217. package/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameter.js +2 -1
  218. package/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameterSet.js +1 -1
  219. package/engine/graphics/render/forward_plus/LightManager.js +126 -95
  220. package/engine/graphics/render/forward_plus/PointLight.js +9 -0
  221. package/engine/graphics/render/forward_plus/PointLightData.js +1 -1
  222. package/engine/graphics/render/forward_plus/SpotLight.js +9 -0
  223. package/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.js +2 -2
  224. package/engine/graphics/render/forward_plus/computeFrustumCorners.js +14 -32
  225. package/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.js +1 -0
  226. package/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.js +32 -0
  227. package/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.js +51 -0
  228. package/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.js +25 -0
  229. package/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.js +31 -120
  230. package/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.js +35 -0
  231. package/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.js +4 -5
  232. package/engine/graphics/render/forward_plus/plugin/ForwardPlusRenderingPlugin.js +1 -1
  233. package/engine/graphics/render/forward_plus/plugin/MaterialTransformer.js +10 -3
  234. package/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +595 -60
  235. package/engine/graphics/render/forward_plus/prototypeLightManager.js +256 -136
  236. package/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.js +8 -0
  237. package/engine/graphics/render/forward_plus/query/cube_mapping.js +38 -0
  238. package/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +86 -0
  239. package/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +73 -0
  240. package/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_objects.js +131 -0
  241. package/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +129 -0
  242. package/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +33 -0
  243. package/engine/graphics/render/forward_plus/read_frustum_corner.js +14 -0
  244. package/engine/graphics/render/forward_plus/testClusterEquality.js +22 -0
  245. package/engine/graphics/render/layers/RenderLayerUtils.js +7 -4
  246. package/engine/graphics/render/visibility/IncrementalDeltaSet.js +11 -0
  247. package/engine/graphics/render/visibility/hiz/prototypeHiZ.js +2 -2
  248. package/engine/graphics/shaders/TerrainShader.js +4 -5
  249. package/engine/graphics/shadows/ShadowMapRenderer.js +8 -2
  250. package/engine/graphics/texture/atlas/AtlasPatch.js +7 -2
  251. package/engine/graphics/texture/atlas/TextureAtlas.js +2 -2
  252. package/engine/graphics/texture/sampler/HarmonicDiffusionGrid.spec.js +1 -1
  253. package/engine/graphics/texture/sampler/SampleTraverser.js +1 -1
  254. package/engine/graphics/texture/sampler/Sampler2D.js +8 -7
  255. package/engine/graphics/texture/sampler/distanceField.spec.js +1 -1
  256. package/engine/graphics/texture/sampler/scaleSampler2D.js +7 -10
  257. package/engine/graphics/trail/x/RibbonMaterialX.js +3 -3
  258. package/engine/graphics/trail/x/RibbonX.js +17 -2
  259. package/engine/graphics/trail/x/RibbonXPlugin.js +51 -1
  260. package/engine/graphics/util/composeMatrix4.js +33 -23
  261. package/engine/graphics/util/decompose_matrix_4_array.js +61 -0
  262. package/engine/grid/components/GridObstacle.js +3 -10
  263. package/engine/intelligence/behavior/ecs/BehaviorComponent.js +30 -14
  264. package/engine/intelligence/behavior/selector/WeightedElement.js +2 -1
  265. package/engine/intelligence/optimization/RandomOptimizer.js +1 -1
  266. package/engine/knowledge/database/StaticKnowledgeDataTable.js +6 -1
  267. package/engine/navigation/ecs/components/Path.js +1 -6
  268. package/engine/navigation/grid/FastBinaryHeap.spec.js +1 -1
  269. package/engine/reference/v2/Reference.js +6 -0
  270. package/engine/sound/ecs/emitter/SoundEmitter.js +2 -1
  271. package/engine/sound/ecs/emitter/SoundTrack.js +2 -1
  272. package/engine/sound/material/concrete/RandomSoundMaterial.js +1 -1
  273. package/engine/ui/notification/notificationGenerator.js +1 -1
  274. package/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +1 -1
  275. package/generation/grid/generation/GridTaskExecuteRuleTimes.js +2 -1
  276. package/generation/markers/actions/MarkerNodeActionSelectRandom.js +1 -1
  277. package/generation/markers/transform/MarkerNodeTransformerRecordUniqueRandomEnum.js +1 -1
  278. package/generation/placement/action/random/CellActionSelectRandom.js +1 -1
  279. package/generation/theme/ThemeEngine.js +2 -2
  280. package/misc/makeMaterialIconCached.js +2 -2
  281. package/package.json +3 -3
  282. package/view/View.js +4 -2
  283. package/view/elements/image/HTMLElementCacheKey.js +2 -1
  284. package/view/elements/radial/RadialText.js +2 -1
  285. package/view/minimap/gl/MinimapMarkersGL.js +6 -100
  286. package/view/minimap/gl/buildMaterial.js +94 -0
  287. package/engine/graphics/micron/format/MicronGeometryBufferAttributeSpec.js +0 -71
  288. package/engine/graphics/render/forward_plus/queryBVH_Frustum.js +0 -345
@@ -7,6 +7,7 @@ import { HighlightRenderGroup } from "../renderer/HighlightRenderGroup.js";
7
7
  import { ObjectPoolFactory } from "../../../../../core/model/object/ObjectPoolFactory.js";
8
8
  import { HighlightRenderElement } from "../renderer/HighlightRenderElement.js";
9
9
  import { noop } from "../../../../../core/function/Functions.js";
10
+ import { CompositingStages } from "../../../composit/CompositingStages.js";
10
11
 
11
12
  export class OutlineRenderPlugin extends EnginePlugin {
12
13
  constructor() {
@@ -99,12 +100,14 @@ export class OutlineRenderPlugin extends EnginePlugin {
99
100
 
100
101
  /**
101
102
  *
102
- * @param {WebGLRenderer} renderer
103
- * @param {Camera} camera
104
- * @param {ThreeScene} scene
105
103
  * @private
106
104
  */
107
- __render(renderer, camera, scene) {
105
+ __render() {
106
+ const engine = this.engine;
107
+ const graphics = engine.graphics;
108
+
109
+ const camera = graphics.camera;
110
+
108
111
  // collect elements
109
112
  const source_count = this.__sources.length;
110
113
 
@@ -139,11 +142,12 @@ export class OutlineRenderPlugin extends EnginePlugin {
139
142
 
140
143
  viewport_size.process(this.__set_viewport_size, this);
141
144
 
142
- graphics.on.preComposite.add(this.__render, this);
143
-
144
145
  // create compositing layer
145
146
  this.__compositing_layer = graphics.layerComposer.createLayer(this.__renderer.__renderTargetFinal, BlendingType.MultiplyAdd);
146
147
  this.__compositing_layer.name = "Silhouette Outline";
148
+ this.__compositing_layer.stage = CompositingStages.POST_TRANSPARENT;
149
+
150
+ graphics.on.preRender.add(this.__render, this);
147
151
 
148
152
 
149
153
  // set rendering resolution
@@ -156,7 +160,7 @@ export class OutlineRenderPlugin extends EnginePlugin {
156
160
 
157
161
  const graphics = this.engine.graphics;
158
162
 
159
- graphics.on.preComposite.remove(this.__render, this);
163
+ graphics.on.preRender.remove(this.__render, this);
160
164
 
161
165
  graphics.viewport.size.onChanged.remove(this.__set_viewport_size, this);
162
166
 
@@ -1,6 +1,6 @@
1
1
  import ObservedEnum from "../../../../core/model/ObservedEnum";
2
2
  import {Color} from "../../../../core/color/Color";
3
- import {Vector1} from "../../../../core/geom/Vector1";
3
+ import Vector1 from "../../../../core/geom/Vector1";
4
4
  import ObservedBoolean from "../../../../core/model/ObservedBoolean";
5
5
  import {LightType} from "./LightType";
6
6
 
@@ -103,9 +103,14 @@ export class Light {
103
103
 
104
104
  if (json.intensity !== undefined) {
105
105
  this.intensity.fromJSON(json.intensity);
106
+ } else {
107
+ this.intensity.set(1);
106
108
  }
109
+
107
110
  if (json.castShadow !== undefined) {
108
111
  this.castShadow.fromJSON(json.castShadow);
112
+ } else {
113
+ this.castShadow.set(false);
109
114
  }
110
115
 
111
116
  const actual_type = this.type.getValue();
@@ -99,7 +99,8 @@ export class ThreeLightBinding extends LightBinding {
99
99
  */
100
100
  const cache = this.__system.__three_light_cache;
101
101
 
102
- threeEnsureLightObject(this.__c_light, cache);
102
+ const c_light = this.__c_light;
103
+ threeEnsureLightObject(c_light, cache);
103
104
 
104
105
  super.link(ctx);
105
106
  }
@@ -112,6 +113,9 @@ export class ThreeLightBinding extends LightBinding {
112
113
 
113
114
  cache.release(this.__three_getLight());
114
115
 
116
+ // clear bound light
117
+ this.__c_light.__threeObject = null;
118
+
115
119
  this.__shadowmap_unlink();
116
120
 
117
121
  super.unlink(ctx);
@@ -3,13 +3,14 @@
3
3
  */
4
4
  import { AABB3 } from "../../../../core/bvh2/aabb3/AABB3.js";
5
5
  import { LeafNode } from "../../../../core/bvh2/LeafNode.js";
6
- import { computeHashFloat, computeHashIntegerArray } from "../../../../core/math/MathUtils.js";
7
6
  import { getSkeletonBoneByType } from "./SkeletonUtils.js";
8
7
  import { assert } from "../../../../core/assert.js";
9
8
  import { computeStringHash } from "../../../../core/primitives/strings/computeStringHash.js";
10
9
  import { Transform } from "../../../ecs/transform/Transform.js";
11
10
  import { updateNodeByTransformAndBBB } from "./updateNodeByTransformAndBBB.js";
12
11
  import { applyTransformToThreeObject } from "./applyTransformToThreeObject.js";
12
+ import { computeHashIntegerArray } from "../../../../core/collection/array/computeHashIntegerArray.js";
13
+ import { computeHashFloat } from "../../../../core/math/hash/computeHashFloat.js";
13
14
 
14
15
  /**
15
16
  *
@@ -0,0 +1,5 @@
1
+ export const DrawMode = {
2
+ Triangles: 0,
3
+ Lines: 2,
4
+ LineSegments: 3
5
+ };
@@ -0,0 +1,13 @@
1
+ import {BufferGeometry, Material} from "three";
2
+ import {AABB3} from "../../../../core/bvh2/aabb3/AABB3";
3
+
4
+ export class ShadedGeometry {
5
+ readonly geometry: BufferGeometry
6
+ readonly material: Material
7
+
8
+ readonly bvh: Readonly<AABB3>
9
+
10
+ from(geometry: BufferGeometry, material: Material): void
11
+
12
+ static from(geometry: BufferGeometry, material: Material): ShadedGeometry
13
+ }
@@ -1,9 +1,10 @@
1
- import { Mesh, Quaternion } from "three";
1
+ import { Line, LineSegments, Mesh } from "three";
2
2
  import { updateNodeByMatrix4AndBBB } from "../mesh/updateNodeByTransformAndBBB.js";
3
3
  import { LeafNode } from "../../../../core/bvh2/LeafNode.js";
4
4
  import { AABB3 } from "../../../../core/bvh2/aabb3/AABB3.js";
5
+ import { DrawMode } from "./DrawMode.js";
6
+ import { applyTransformToThreeObject } from "../mesh/applyTransformToThreeObject.js";
5
7
 
6
- const _q = new Quaternion();
7
8
  const _aabb3 = new AABB3();
8
9
 
9
10
  export class ShadedGeometry {
@@ -19,6 +20,12 @@ export class ShadedGeometry {
19
20
  */
20
21
  this.material = null;
21
22
 
23
+ /**
24
+ *
25
+ * @type {DrawMode|number}
26
+ */
27
+ this.mode = DrawMode.Triangles;
28
+
22
29
  /**
23
30
  *
24
31
  * @type {THREE.Object3D|null}
@@ -34,6 +41,19 @@ export class ShadedGeometry {
34
41
  this.__bvh_leaf = new LeafNode(this, 0, 0, 0, 0, 0, 0);
35
42
  }
36
43
 
44
+ __build_object() {
45
+ const mode = this.mode;
46
+ if (mode === DrawMode.Triangles) {
47
+ this.__cached_object = new Mesh(this.geometry, this.material);
48
+ } else if (mode === DrawMode.Lines) {
49
+ this.__cached_object = new Line(this.geometry, this.material);
50
+ } else if (mode === DrawMode.LineSegments) {
51
+ this.__cached_object = new LineSegments(this.geometry, this.material);
52
+ } else {
53
+ throw new Error(`Unsupported draw mode '${mode}'`);
54
+ }
55
+ }
56
+
37
57
  get bvh() {
38
58
  return this.__bvh_leaf;
39
59
  }
@@ -42,10 +62,12 @@ export class ShadedGeometry {
42
62
  *
43
63
  * @param {THREE.BufferGeometry} geometry
44
64
  * @param {THREE.Material} material
65
+ * @param draw_mode
45
66
  */
46
- from(geometry, material) {
67
+ from(geometry, material, draw_mode = DrawMode.Triangles) {
47
68
  this.geometry = geometry;
48
69
  this.material = material;
70
+ this.mode = draw_mode;
49
71
 
50
72
  // ensure that geometry has a bounding box
51
73
  if (geometry.boundingBox === null) {
@@ -53,7 +75,7 @@ export class ShadedGeometry {
53
75
  }
54
76
 
55
77
  if (this.__cached_object === null) {
56
- this.__cached_object = new Mesh(geometry, material);
78
+ this.__build_object();
57
79
  } else {
58
80
  this.__cached_object.material = material;
59
81
  this.__cached_object.geometry = geometry;
@@ -64,12 +86,13 @@ export class ShadedGeometry {
64
86
  *
65
87
  * @param geometry
66
88
  * @param material
89
+ * @param mode
67
90
  * @return {ShadedGeometry}
68
91
  */
69
- static from(geometry, material) {
92
+ static from(geometry, material, mode) {
70
93
  const r = new ShadedGeometry();
71
94
 
72
- r.from(geometry, material);
95
+ r.from(geometry, material, mode);
73
96
 
74
97
  return r;
75
98
  }
@@ -77,6 +100,7 @@ export class ShadedGeometry {
77
100
  updateTransform() {
78
101
  // update matrix
79
102
  this.__cached_object.updateMatrix();
103
+ this.__cached_object.updateMatrixWorld();
80
104
 
81
105
  // update bounds
82
106
 
@@ -116,9 +140,7 @@ export class ShadedGeometry {
116
140
  */
117
141
  setRotationByComponents(x, y, z, w) {
118
142
 
119
- _q.set(x, y, z, w);
120
-
121
- this.__cached_object.rotation.setFromQuaternion(_q);
143
+ this.__cached_object.quaternion.set(x, y, z, w);
122
144
 
123
145
  this.updateTransform();
124
146
  }
@@ -140,15 +162,7 @@ export class ShadedGeometry {
140
162
  * @param {Transform} t
141
163
  */
142
164
  applyTransform(t) {
143
- // TODO this can be optimized quite a lot
144
- const position = t.position;
145
- this.setPositionByComponents(position.x, position.y, position.z);
146
-
147
- const rotation = t.rotation;
148
- this.setRotationByComponents(rotation.x, rotation.y, rotation.z, rotation.w);
149
-
150
- const scale = t.scale;
151
- this.setScaleByComponents(scale.x, scale.y, scale.z);
165
+ applyTransformToThreeObject(this.__cached_object, t);
152
166
 
153
167
  this.updateTransform();
154
168
  }
@@ -0,0 +1,6 @@
1
+ import {System} from "../../../ecs/System";
2
+ import Engine from "../../../Engine";
3
+
4
+ export class ShadedGeometrySystem extends System {
5
+ constructor(engine: Engine)
6
+ }
@@ -106,11 +106,11 @@ function makeConfig(engine) {
106
106
  new TopDownCameraControllerSystem(graphics),
107
107
  new TopDownCameraLanderSystem(),
108
108
  new CameraSystem(graphics.scene, graphics),
109
- new MeshSystem(graphics, assetManager),
109
+ new MeshSystem(engine),
110
110
  new ClingToTerrainSystem(),
111
111
  new TerrainSystem(graphics, assetManager),
112
112
  new WaterSystem(graphics),
113
- new Trail2DSystem(graphics, assetManager),
113
+ new Trail2DSystem(engine),
114
114
  new Foliage2System(assetManager, graphics),
115
115
  new ViewportPositionSystem(graphics.viewport.size),
116
116
  new GridPosition2TransformSystem(),
@@ -179,11 +179,11 @@ function catmullRom(points) {
179
179
  cv.link();
180
180
 
181
181
  cv.css({
182
- position: "absolute",
183
- left: 0,
184
- right: 0,
185
- zIndex: 99999
186
- });
182
+ position: "absolute",
183
+ left: 0,
184
+ right: 0,
185
+ zIndex: 99999
186
+ });
187
187
 
188
188
  const sample = [];
189
189
 
@@ -216,92 +216,92 @@ function sample_style_entity() {
216
216
  const style = new EntityPathStyle();
217
217
  style.spacing = 0.6;
218
218
  style.marker_start = EntityPathMarkerDefinition.from({
219
- blueprint: EntityBlueprint.from([
220
- Transform.fromJSON({}),
221
- Mesh.fromJSON({
222
- url: "data/models/arrow-symbols/arrow4/model-green.gltf",
223
- castShadow: true,
224
- receiveShadow: true
225
- })
226
- ]),
227
- transform: Transform.fromJSON({
228
- scale: {
229
- x: 0.3,
230
- y: 0.3,
231
- z: 0.3
232
- },
233
- rotation: {
234
- x: 0.5,
235
- y: -0.5,
236
- z: 0.5,
237
- w: 0.5
238
- },
239
- position: {
240
- x: 0,
241
- y: 1,
242
- z: 0
243
- }
244
- })
245
- });
219
+ blueprint: EntityBlueprint.from([
220
+ Transform.fromJSON({}),
221
+ Mesh.fromJSON({
222
+ url: "data/models/arrow-symbols/arrow4/model-green.gltf",
223
+ castShadow: true,
224
+ receiveShadow: true
225
+ })
226
+ ]),
227
+ transform: Transform.fromJSON({
228
+ scale: {
229
+ x: 0.3,
230
+ y: 0.3,
231
+ z: 0.3
232
+ },
233
+ rotation: {
234
+ x: 0.5,
235
+ y: -0.5,
236
+ z: 0.5,
237
+ w: 0.5
238
+ },
239
+ position: {
240
+ x: 0,
241
+ y: 1,
242
+ z: 0
243
+ }
244
+ })
245
+ });
246
246
  style.marker_end = EntityPathMarkerDefinition.from({
247
- blueprint: EntityBlueprint.from([
248
- Transform.fromJSON({}),
249
- Mesh.fromJSON({
250
- url: "data/models/arrow-symbols/arrow4/model-red.gltf",
251
- castShadow: true,
252
- receiveShadow: true
253
- })
254
- ]),
255
- transform: Transform.fromJSON({
256
- scale: {
257
- x: 0.3,
258
- y: 0.3,
259
- z: 0.3
260
- },
261
- rotation: {
262
- x: 0.5,
263
- y: -0.5,
264
- z: 0.5,
265
- w: 0.5
266
- },
267
- position: {
268
- x: 0,
269
- y: 1,
270
- z: 0
271
- }
272
- })
273
- });
247
+ blueprint: EntityBlueprint.from([
248
+ Transform.fromJSON({}),
249
+ Mesh.fromJSON({
250
+ url: "data/models/arrow-symbols/arrow4/model-red.gltf",
251
+ castShadow: true,
252
+ receiveShadow: true
253
+ })
254
+ ]),
255
+ transform: Transform.fromJSON({
256
+ scale: {
257
+ x: 0.3,
258
+ y: 0.3,
259
+ z: 0.3
260
+ },
261
+ rotation: {
262
+ x: 0.5,
263
+ y: -0.5,
264
+ z: 0.5,
265
+ w: 0.5
266
+ },
267
+ position: {
268
+ x: 0,
269
+ y: 1,
270
+ z: 0
271
+ }
272
+ })
273
+ });
274
274
  style.marker_main = EntityPathMarkerDefinition.from({
275
- blueprint: EntityBlueprint.from([
276
- Transform.fromJSON({}),
277
- Mesh.fromJSON({
278
- url: "data/models/Barel-Roll Droid/handpainted.gltf",
279
- castShadow: true,
280
- receiveShadow: true
281
- }),
282
- Animation.fromJSON({
283
- clips: [
284
- {
285
- name: "fly",
286
- repeatCount: Infinity
287
- }
288
- ]
289
- }),
290
- Highlight.fromOne(1, 0, 0, 1)
291
- ]),
292
- transform: Transform.fromJSON({
293
- scale: {
294
- x: 0.2,
295
- y: 0.2,
296
- z: 0.2
297
- },
298
- position: {
299
- x: 0,
300
- y: 1,
301
- z: 0
302
- }
303
- })
304
- });
275
+ blueprint: EntityBlueprint.from([
276
+ Transform.fromJSON({}),
277
+ Mesh.fromJSON({
278
+ url: "data/models/Barel-Roll Droid/handpainted.gltf",
279
+ castShadow: true,
280
+ receiveShadow: true
281
+ }),
282
+ Animation.fromJSON({
283
+ clips: [
284
+ {
285
+ name: "fly",
286
+ repeatCount: Infinity
287
+ }
288
+ ]
289
+ }),
290
+ Highlight.fromOne(1, 0, 0, 1)
291
+ ]),
292
+ transform: Transform.fromJSON({
293
+ scale: {
294
+ x: 0.2,
295
+ y: 0.2,
296
+ z: 0.2
297
+ },
298
+ position: {
299
+ x: 0,
300
+ y: 1,
301
+ z: 0
302
+ }
303
+ })
304
+ });
305
305
 
306
306
  return style;
307
307
  }
@@ -337,13 +337,13 @@ function main(engine) {
337
337
  // ], 50));
338
338
 
339
339
  _p.setPositionsFromVectorArray([
340
- new Vector3(3, 1, 1),
341
- new Vector3(3, 1, 3),
342
- new Vector3(7, 1, 3),
343
- new Vector3(7, 1, 7),
344
- new Vector3(3, 1, 7),
345
- new Vector3(3, 1, 8),
346
- ]);
340
+ new Vector3(3, 1, 1),
341
+ new Vector3(3, 1, 3),
342
+ new Vector3(7, 1, 3),
343
+ new Vector3(7, 1, 7),
344
+ new Vector3(3, 1, 7),
345
+ new Vector3(3, 1, 8),
346
+ ]);
347
347
 
348
348
 
349
349
  const trailPathStyle = new RibbonPathStyle();
@@ -5,6 +5,7 @@
5
5
 
6
6
  import Vector3 from "../../../../core/geom/Vector3.js";
7
7
  import Vector4 from "../../../../core/geom/Vector4.js";
8
+ import { RibbonXMaterialSpec } from "../../trail/x/RibbonXMaterialSpec.js";
8
9
 
9
10
  /**
10
11
  * @readonly
@@ -24,8 +25,6 @@ class Trail2D {
24
25
  */
25
26
  this.maxAge = 5;
26
27
 
27
- this.textureURL = null;
28
-
29
28
  /**
30
29
  * Trail width
31
30
  * @type {number}
@@ -65,9 +64,9 @@ class Trail2D {
65
64
 
66
65
  /**
67
66
  * transient
68
- * @type {Material|null}
67
+ * @type {RibbonXMaterialSpec}
69
68
  */
70
- this.material = null;
69
+ this.material = new RibbonXMaterialSpec();
71
70
 
72
71
  /**
73
72
  * transient
@@ -82,6 +81,20 @@ class Trail2D {
82
81
  this.flags = Trail2DFlags.Spawning | Trail2DFlags.Aging;
83
82
  }
84
83
 
84
+ dispose() {
85
+ if (this.ribbon !== null) {
86
+ this.ribbon.dispose();
87
+ }
88
+ }
89
+
90
+ get textureURL() {
91
+ return this.material.diffuse;
92
+ }
93
+
94
+ set textureURL(v) {
95
+ this.material.diffuse = v;
96
+ }
97
+
85
98
  /**
86
99
  *
87
100
  * @param {number|Trail2DFlags} flag
@@ -1,7 +1,6 @@
1
1
  import {System} from "../../../ecs/System";
2
- import {GraphicsEngine} from "../../GraphicsEngine";
3
- import {AssetManager} from "../../../asset/AssetManager";
2
+ import Engine from "../../../Engine";
4
3
 
5
4
  export default class Trail2DSystem extends System {
6
- constructor(graphics: GraphicsEngine, assetManager: AssetManager)
5
+ constructor(engine: Engine)
7
6
  }