@babylonjs/core 8.36.0 → 8.37.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.
- package/Actions/action.d.ts +5 -0
- package/Actions/action.js.map +1 -1
- package/Actions/actionManager.js +6 -2
- package/Actions/actionManager.js.map +1 -1
- package/Animations/runtimeAnimation.d.ts +0 -2
- package/Animations/runtimeAnimation.js +3 -5
- package/Animations/runtimeAnimation.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSound.js +1 -0
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/audioEngineV2.d.ts +0 -4
- package/AudioV2/abstractAudio/audioEngineV2.js +0 -4
- package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
- package/AudioV2/abstractAudio/subNodes/volumeAudioSubNode.js +1 -1
- package/AudioV2/abstractAudio/subNodes/volumeAudioSubNode.js.map +1 -1
- package/AudioV2/audioParameter.d.ts +5 -1
- package/AudioV2/audioParameter.js +4 -0
- package/AudioV2/audioParameter.js.map +1 -1
- package/AudioV2/webAudio/components/webAudioParameterComponent.d.ts +0 -18
- package/AudioV2/webAudio/components/webAudioParameterComponent.js +7 -67
- package/AudioV2/webAudio/components/webAudioParameterComponent.js.map +1 -1
- package/AudioV2/webAudio/webAudioStaticSound.js +8 -3
- package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
- package/Cameras/camera.js +1 -0
- package/Cameras/camera.js.map +1 -1
- package/Cameras/targetCamera.js +0 -4
- package/Cameras/targetCamera.js.map +1 -1
- package/Collisions/gpuPicker.js +0 -1
- package/Collisions/gpuPicker.js.map +1 -1
- package/Culling/ray.core.js +1 -1
- package/Culling/ray.core.js.map +1 -1
- package/Debug/debugLayer.d.ts +1 -1
- package/Debug/debugLayer.js.map +1 -1
- package/Decorators/nodeDecorator.d.ts +3 -1
- package/Decorators/nodeDecorator.js +2 -0
- package/Decorators/nodeDecorator.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +1 -1
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheSampler.js +4 -0
- package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/nativeEngine.js +12 -13
- package/Engines/nativeEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.d.ts +44 -0
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +152 -0
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js +3 -3
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.d.ts +3 -3
- package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js +3 -3
- package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js +4 -4
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js +1 -1
- package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.d.ts +20 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js +83 -0
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/index.d.ts +1 -0
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +7 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +8 -2
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/taaTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/taaTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +4 -4
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +3 -4
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +4 -4
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -3
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +2 -3
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +1 -2
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.d.ts +3 -1
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.js +11 -1
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.d.ts +11 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js +10 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
- package/FrameGraph/frameGraphContext.d.ts +8 -1
- package/FrameGraph/frameGraphContext.js +9 -0
- package/FrameGraph/frameGraphContext.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +5 -2
- package/FrameGraph/frameGraphRenderContext.js +32 -7
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/frameGraphTask.d.ts +8 -0
- package/FrameGraph/frameGraphTask.js +12 -0
- package/FrameGraph/frameGraphTask.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.js +2 -1
- package/Materials/PBR/openpbrMaterial.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +4 -1
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/floatingOriginMatrixOverrides.js +19 -0
- package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
- package/Maths/math.like.d.ts +2 -7
- package/Maths/math.like.js.map +1 -1
- package/Maths/math.vector.functions.d.ts +7 -10
- package/Maths/math.vector.functions.js +3 -14
- package/Maths/math.vector.functions.js.map +1 -1
- package/Meshes/Node/Blocks/randomBlock.js +11 -11
- package/Meshes/Node/Blocks/randomBlock.js.map +1 -1
- package/Misc/copyTextureToTexture.d.ts +18 -1
- package/Misc/copyTextureToTexture.js +31 -2
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/Particles/EmitterTypes/coneParticleEmitter.d.ts +3 -3
- package/Particles/EmitterTypes/coneParticleEmitter.js +11 -11
- package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/customParticleEmitter.d.ts +5 -3
- package/Particles/EmitterTypes/customParticleEmitter.js +8 -6
- package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +3 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.js +7 -1
- package/Particles/EmitterTypes/sphereParticleEmitter.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.d.ts +1 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +2 -1
- package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.d.ts +6 -4
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.js +34 -35
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/createParticleBlock.d.ts +0 -4
- package/Particles/Node/Blocks/Emitters/createParticleBlock.js +2 -9
- package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/customShapeBlock.d.ts +13 -9
- package/Particles/Node/Blocks/Emitters/customShapeBlock.js +36 -23
- package/Particles/Node/Blocks/Emitters/customShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.d.ts +10 -1
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +50 -17
- package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/emitters.functions.d.ts +6 -0
- package/Particles/Node/Blocks/Emitters/emitters.functions.js +13 -0
- package/Particles/Node/Blocks/Emitters/emitters.functions.js.map +1 -0
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.d.ts +2 -2
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.js +5 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.d.ts +1 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +3 -1
- package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.d.ts +16 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +67 -14
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -1
- package/Particles/Node/Blocks/particleInputBlock.js +1 -0
- package/Particles/Node/Blocks/particleInputBlock.js.map +1 -1
- package/Particles/Node/Blocks/particleRandomBlock.js +10 -10
- package/Particles/Node/Blocks/particleRandomBlock.js.map +1 -1
- package/Particles/Node/Blocks/systemBlock.d.ts +3 -3
- package/Particles/Node/Blocks/systemBlock.js +10 -6
- package/Particles/Node/Blocks/systemBlock.js.map +1 -1
- package/Particles/Node/Enums/nodeParticleContextualSources.d.ts +3 -1
- package/Particles/Node/Enums/nodeParticleContextualSources.js +2 -0
- package/Particles/Node/Enums/nodeParticleContextualSources.js.map +1 -1
- package/Particles/Node/nodeParticleBuildState.js +5 -0
- package/Particles/Node/nodeParticleBuildState.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.helper.js +132 -36
- package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.js +1 -1
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/thinParticleSystem.function.d.ts +2 -2
- package/Particles/thinParticleSystem.function.js +2 -2
- package/Particles/thinParticleSystem.function.js.map +1 -1
- package/Physics/v2/IPhysicsEnginePlugin.d.ts +1 -1
- package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.d.ts +27 -4
- package/Physics/v2/Plugins/havokPlugin.js +72 -8
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/physicsEngine.d.ts +12 -2
- package/Physics/v2/physicsEngine.js +15 -1
- package/Physics/v2/physicsEngine.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +2 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/prePassRenderer.js +4 -1
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Shaders/copyTextureToTexture.fragment.js +2 -2
- package/Shaders/copyTextureToTexture.fragment.js.map +1 -1
- package/Shaders/picking.fragment.js +1 -1
- package/Shaders/picking.fragment.js.map +1 -1
- package/Shaders/picking.vertex.js +1 -1
- package/Shaders/picking.vertex.js.map +1 -1
- package/ShadersWGSL/copyTextureToTexture.fragment.js +3 -3
- package/ShadersWGSL/copyTextureToTexture.fragment.js.map +1 -1
- package/ShadersWGSL/picking.fragment.js +1 -1
- package/ShadersWGSL/picking.fragment.js.map +1 -1
- package/ShadersWGSL/picking.vertex.js +1 -1
- package/ShadersWGSL/picking.vertex.js.map +1 -1
- package/Sprites/spriteRenderer.js +10 -8
- package/Sprites/spriteRenderer.js.map +1 -1
- package/XR/features/WebXRLightEstimation.d.ts +8 -0
- package/XR/features/WebXRLightEstimation.js +6 -1
- package/XR/features/WebXRLightEstimation.js.map +1 -1
- package/XR/webXRSessionManager.js +4 -0
- package/XR/webXRSessionManager.js.map +1 -1
- package/assetContainer.d.ts +1 -1
- package/assetContainer.js +1 -1
- package/assetContainer.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +2 -4
- package/scene.js +9 -12
- package/scene.js.map +1 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
3
3
|
import { Matrix, Quaternion, TmpVectors, Vector3 } from "../../../Maths/math.vector.js";
|
|
4
4
|
import { PhysicsPrestepType, } from "../IPhysicsEnginePlugin.js";
|
|
5
|
+
import { PhysicsRaycastResult } from "../../physicsRaycastResult.js";
|
|
5
6
|
import { Logger } from "../../../Misc/logger.js";
|
|
6
7
|
import { PhysicsShape } from "../physicsShape.js";
|
|
7
8
|
import { BoundingBox } from "../../../Culling/boundingBox.js";
|
|
@@ -209,7 +210,7 @@ class TriggerEvent {
|
|
|
209
210
|
* The Havok Physics plugin
|
|
210
211
|
*/
|
|
211
212
|
export class HavokPlugin {
|
|
212
|
-
constructor(_useDeltaForWorldStep = true, hpInjection = HK) {
|
|
213
|
+
constructor(_useDeltaForWorldStep = true, hpInjection = HK, parameters = {}) {
|
|
213
214
|
this._useDeltaForWorldStep = _useDeltaForWorldStep;
|
|
214
215
|
/**
|
|
215
216
|
* Reference to the WASM library
|
|
@@ -219,7 +220,9 @@ export class HavokPlugin {
|
|
|
219
220
|
* Name of the plugin
|
|
220
221
|
*/
|
|
221
222
|
this.name = "HavokPlugin";
|
|
223
|
+
this._multiQueryCollector = undefined;
|
|
222
224
|
this._fixedTimeStep = 1 / 60;
|
|
225
|
+
this._maxQueryCollectorHits = 1;
|
|
223
226
|
this._tmpVec3 = BuildArray(3, Vector3.Zero);
|
|
224
227
|
this._bodies = new Map();
|
|
225
228
|
this._shapes = new Map();
|
|
@@ -252,6 +255,7 @@ export class HavokPlugin {
|
|
|
252
255
|
}
|
|
253
256
|
this.world = this._hknp.HP_World_Create()[1];
|
|
254
257
|
this._queryCollector = this._hknp.HP_QueryCollector_Create(1)[1];
|
|
258
|
+
this.setMaxQueryCollectorHits(parameters.maxQueryCollectorHits ?? 1);
|
|
255
259
|
}
|
|
256
260
|
/**
|
|
257
261
|
* If this plugin is supported
|
|
@@ -287,6 +291,31 @@ export class HavokPlugin {
|
|
|
287
291
|
getTimeStep() {
|
|
288
292
|
return this._fixedTimeStep;
|
|
289
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* Sets the maximum number of raycast hits to process.
|
|
296
|
+
*
|
|
297
|
+
* @param maxQueryCollectorHits - The maximum number of raycast hits to process.
|
|
298
|
+
*/
|
|
299
|
+
setMaxQueryCollectorHits(maxQueryCollectorHits) {
|
|
300
|
+
if (maxQueryCollectorHits === this._maxQueryCollectorHits) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
if (this._multiQueryCollector) {
|
|
304
|
+
this._hknp.HP_QueryCollector_Release(this._multiQueryCollector);
|
|
305
|
+
this._multiQueryCollector = undefined;
|
|
306
|
+
}
|
|
307
|
+
if (maxQueryCollectorHits > 1) {
|
|
308
|
+
this._multiQueryCollector = this._hknp.HP_QueryCollector_Create(maxQueryCollectorHits)[1];
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Gets the maximum number of raycast hits to process.
|
|
313
|
+
*
|
|
314
|
+
* @returns The maximum number of raycast hits to process.
|
|
315
|
+
*/
|
|
316
|
+
getMaxQueryCollectorHits() {
|
|
317
|
+
return this._maxQueryCollectorHits;
|
|
318
|
+
}
|
|
290
319
|
/**
|
|
291
320
|
* Executes a single step of the physics engine.
|
|
292
321
|
*
|
|
@@ -1870,24 +1899,55 @@ export class HavokPlugin {
|
|
|
1870
1899
|
*
|
|
1871
1900
|
* @param from - The start point of the raycast.
|
|
1872
1901
|
* @param to - The end point of the raycast.
|
|
1873
|
-
* @param result - The PhysicsRaycastResult object to store the result of the raycast.
|
|
1902
|
+
* @param result - The PhysicsRaycastResult object (or array of PhysicsRaycastResults) to store the result of the raycast.
|
|
1874
1903
|
* @param query - The raycast query options. See [[IRaycastQuery]] for more information.
|
|
1875
1904
|
*
|
|
1876
1905
|
* Performs a raycast. It takes in two points, from and to, and a PhysicsRaycastResult object to store the result of the raycast.
|
|
1877
1906
|
* It then performs the raycast and stores the hit data in the PhysicsRaycastResult object.
|
|
1907
|
+
* If result is an empty array, it will be populated with every detected raycast hit.
|
|
1908
|
+
* If result is a populated array, it will only fill the PhysicsRaycastResults present in the array.
|
|
1878
1909
|
*/
|
|
1879
1910
|
raycast(from, to, result, query) {
|
|
1880
1911
|
const queryMembership = query?.membership ?? ~0;
|
|
1881
1912
|
const queryCollideWith = query?.collideWith ?? ~0;
|
|
1882
1913
|
const shouldHitTriggers = query?.shouldHitTriggers ?? false;
|
|
1883
|
-
result.reset(from, to);
|
|
1884
1914
|
const bodyToIgnore = query?.ignoreBody ? [BigInt(query.ignoreBody._pluginData.hpBodyId[0])] : [BigInt(0)];
|
|
1915
|
+
const results = Array.isArray(result) ? result : [result];
|
|
1916
|
+
for (const raycastResult of results) {
|
|
1917
|
+
raycastResult.reset(from, to);
|
|
1918
|
+
}
|
|
1885
1919
|
const hkQuery = [this._bVecToV3(from), this._bVecToV3(to), [queryMembership, queryCollideWith], shouldHitTriggers, bodyToIgnore];
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1920
|
+
const queryCollector = results.length === 1 || !this._multiQueryCollector ? this._queryCollector : this._multiQueryCollector;
|
|
1921
|
+
this._hknp.HP_World_CastRayWithCollector(this.world, queryCollector, hkQuery);
|
|
1922
|
+
const numHits = this._hknp.HP_QueryCollector_GetNumHits(queryCollector)[1];
|
|
1923
|
+
if (numHits <= 0) {
|
|
1924
|
+
return;
|
|
1925
|
+
}
|
|
1926
|
+
if (!results.length) {
|
|
1927
|
+
for (let i = 0; i < numHits; i++) {
|
|
1928
|
+
const raycastResult = new PhysicsRaycastResult();
|
|
1929
|
+
raycastResult.reset(from, to);
|
|
1930
|
+
results.push(raycastResult);
|
|
1931
|
+
}
|
|
1932
|
+
}
|
|
1933
|
+
// QueryCollector results are not sorted by distance, so we need to sort them manually
|
|
1934
|
+
const hitDatas = new Array(numHits);
|
|
1935
|
+
for (let i = 0; i < numHits; i++) {
|
|
1936
|
+
const [, hitData] = this._hknp.HP_QueryCollector_GetCastRayResult(queryCollector, i)[1];
|
|
1937
|
+
const hitPos = hitData[3];
|
|
1938
|
+
from.subtractFromFloatsToRef(hitPos[0], hitPos[1], hitPos[2], this._tmpVec3[0]);
|
|
1939
|
+
const distance = this._tmpVec3[0].lengthSquared();
|
|
1940
|
+
hitDatas[i] = {
|
|
1941
|
+
hitData,
|
|
1942
|
+
distance: distance,
|
|
1943
|
+
};
|
|
1944
|
+
}
|
|
1945
|
+
hitDatas.sort((a, b) => a.distance - b.distance);
|
|
1946
|
+
for (let i = 0; i < Math.min(numHits, results.length); i++) {
|
|
1947
|
+
const raycastResult = results[i];
|
|
1948
|
+
const hitData = hitDatas[i];
|
|
1949
|
+
this._populateHitData(hitData.hitData, raycastResult);
|
|
1950
|
+
raycastResult.setHitDistance(Math.sqrt(hitData.distance));
|
|
1891
1951
|
}
|
|
1892
1952
|
}
|
|
1893
1953
|
/**
|
|
@@ -2137,6 +2197,10 @@ export class HavokPlugin {
|
|
|
2137
2197
|
this._hknp.HP_QueryCollector_Release(this._queryCollector);
|
|
2138
2198
|
this._queryCollector = undefined;
|
|
2139
2199
|
}
|
|
2200
|
+
if (this._multiQueryCollector) {
|
|
2201
|
+
this._hknp.HP_QueryCollector_Release(this._multiQueryCollector);
|
|
2202
|
+
this._multiQueryCollector;
|
|
2203
|
+
}
|
|
2140
2204
|
if (this.world) {
|
|
2141
2205
|
this._hknp.HP_World_Release(this.world);
|
|
2142
2206
|
this.world = undefined;
|