@carbonenginejs/runtime-trinity 0.6.0 → 0.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.
- package/README.md +35 -243
- package/dist/controllers/CjsControllerExpressionProgram.js +157 -0
- package/dist/controllers/CjsControllerExpressionProgram.js.map +1 -1
- package/dist/controllers/ITr2ControllerAction.js +57 -0
- package/dist/controllers/ITr2ControllerAction.js.map +1 -1
- package/dist/controllers/Tr2ActionAnimateCurveSet.js +10 -0
- package/dist/controllers/Tr2ActionAnimateCurveSet.js.map +1 -1
- package/dist/controllers/Tr2ActionAnimateValue.js +26 -0
- package/dist/controllers/Tr2ActionAnimateValue.js.map +1 -1
- package/dist/controllers/Tr2ActionBindRTPC.js +11 -0
- package/dist/controllers/Tr2ActionBindRTPC.js.map +1 -1
- package/dist/controllers/Tr2ActionCallback.js +5 -0
- package/dist/controllers/Tr2ActionCallback.js.map +1 -1
- package/dist/controllers/Tr2ActionChildEffect.js +63 -0
- package/dist/controllers/Tr2ActionChildEffect.js.map +1 -1
- package/dist/controllers/Tr2ActionOverlay.js +68 -0
- package/dist/controllers/Tr2ActionOverlay.js.map +1 -1
- package/dist/controllers/Tr2ActionPlayCurveSet.js +16 -0
- package/dist/controllers/Tr2ActionPlayCurveSet.js.map +1 -1
- package/dist/controllers/Tr2ActionPlayMeshAnimation.js +29 -0
- package/dist/controllers/Tr2ActionPlayMeshAnimation.js.map +1 -1
- package/dist/controllers/Tr2ActionPlaySound.js +11 -0
- package/dist/controllers/Tr2ActionPlaySound.js.map +1 -1
- package/dist/controllers/Tr2ActionPython.js +11 -0
- package/dist/controllers/Tr2ActionPython.js.map +1 -1
- package/dist/controllers/Tr2ActionResetClipSphereCenter.js +17 -0
- package/dist/controllers/Tr2ActionResetClipSphereCenter.js.map +1 -1
- package/dist/controllers/Tr2ActionSetAttenuationScaling.js +5 -0
- package/dist/controllers/Tr2ActionSetAttenuationScaling.js.map +1 -1
- package/dist/controllers/Tr2ActionSetAudioEmitterPrefix.js +5 -0
- package/dist/controllers/Tr2ActionSetAudioEmitterPrefix.js.map +1 -1
- package/dist/controllers/Tr2ActionSetAudioSwitch.js +5 -0
- package/dist/controllers/Tr2ActionSetAudioSwitch.js.map +1 -1
- package/dist/controllers/Tr2ActionSetExternalControllerVariable.js +23 -0
- package/dist/controllers/Tr2ActionSetExternalControllerVariable.js.map +1 -1
- package/dist/controllers/Tr2ActionSetShaderOption.js +5 -0
- package/dist/controllers/Tr2ActionSetShaderOption.js.map +1 -1
- package/dist/controllers/Tr2ActionSetValue.js +35 -0
- package/dist/controllers/Tr2ActionSetValue.js.map +1 -1
- package/dist/controllers/Tr2ActionSpawnParticles.js +10 -0
- package/dist/controllers/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/controllers/Tr2BindingPoint.js +67 -0
- package/dist/controllers/Tr2BindingPoint.js.map +1 -1
- package/dist/controllers/Tr2Controller.js +37 -0
- package/dist/controllers/Tr2Controller.js.map +1 -1
- package/dist/controllers/Tr2ControllerEventHandler.js +10 -0
- package/dist/controllers/Tr2ControllerEventHandler.js.map +1 -1
- package/dist/controllers/Tr2ControllerExpression.js +17 -0
- package/dist/controllers/Tr2ControllerExpression.js.map +1 -1
- package/dist/controllers/Tr2ControllerFloatVariable.js +6 -0
- package/dist/controllers/Tr2ControllerFloatVariable.js.map +1 -1
- package/dist/controllers/Tr2ControllerReference.js +11 -0
- package/dist/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/controllers/Tr2StateMachine.js +17 -0
- package/dist/controllers/Tr2StateMachine.js.map +1 -1
- package/dist/controllers/Tr2StateMachineState.js +47 -0
- package/dist/controllers/Tr2StateMachineState.js.map +1 -1
- package/dist/controllers/Tr2StateMachineTransition.js +29 -0
- package/dist/controllers/Tr2StateMachineTransition.js.map +1 -1
- package/dist/controllers/Tr2SyncToAnimation.js +5 -0
- package/dist/controllers/Tr2SyncToAnimation.js.map +1 -1
- package/dist/controllers/Tr2TimelineController.js +61 -0
- package/dist/controllers/Tr2TimelineController.js.map +1 -1
- package/dist/controllers/contracts.js +24 -1
- package/dist/controllers/contracts.js.map +1 -1
- package/dist/controllers/index.js +1 -1
- package/dist/curves/CjsGrannyCurves.js +150 -0
- package/dist/curves/CjsGrannyCurves.js.map +1 -1
- package/dist/curves/Tr2BoneMatrixCurve.js +23 -0
- package/dist/curves/Tr2BoneMatrixCurve.js.map +1 -1
- package/dist/curves/Tr2CameraFollowCurveKey.js +6 -0
- package/dist/curves/Tr2CameraFollowCurveKey.js.map +1 -1
- package/dist/curves/Tr2CurveColor.js +6 -0
- package/dist/curves/Tr2CurveColor.js.map +1 -1
- package/dist/curves/Tr2CurveColorMixer.js +6 -0
- package/dist/curves/Tr2CurveColorMixer.js.map +1 -1
- package/dist/curves/Tr2CurveCombiner.js +5 -0
- package/dist/curves/Tr2CurveCombiner.js.map +1 -1
- package/dist/curves/Tr2CurveConstant.js +16 -0
- package/dist/curves/Tr2CurveConstant.js.map +1 -1
- package/dist/curves/Tr2CurveEulerRotation.js +5 -0
- package/dist/curves/Tr2CurveEulerRotation.js.map +1 -1
- package/dist/curves/Tr2CurveEulerRotationExpression.js +66 -0
- package/dist/curves/Tr2CurveEulerRotationExpression.js.map +1 -1
- package/dist/curves/Tr2CurveQuaternion.js +5 -0
- package/dist/curves/Tr2CurveQuaternion.js.map +1 -1
- package/dist/curves/Tr2CurveQuaternionKey.js +5 -0
- package/dist/curves/Tr2CurveQuaternionKey.js.map +1 -1
- package/dist/curves/Tr2CurveRandomAxisRotation.js +28 -0
- package/dist/curves/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/curves/Tr2CurveScalar.js +35 -0
- package/dist/curves/Tr2CurveScalar.js.map +1 -1
- package/dist/curves/Tr2CurveScalarExpression.js +11 -0
- package/dist/curves/Tr2CurveScalarExpression.js.map +1 -1
- package/dist/curves/Tr2CurveScalarKey.js +6 -0
- package/dist/curves/Tr2CurveScalarKey.js.map +1 -1
- package/dist/curves/Tr2CurveSetRange.js +5 -0
- package/dist/curves/Tr2CurveSetRange.js.map +1 -1
- package/dist/curves/Tr2CurveVector2.js +5 -0
- package/dist/curves/Tr2CurveVector2.js.map +1 -1
- package/dist/curves/Tr2CurveVector3.js +5 -0
- package/dist/curves/Tr2CurveVector3.js.map +1 -1
- package/dist/curves/Tr2CurveVector3Expression.js +71 -0
- package/dist/curves/Tr2CurveVector3Expression.js.map +1 -1
- package/dist/curves/Tr2CurveVector3Lerp.js +6 -0
- package/dist/curves/Tr2CurveVector3Lerp.js.map +1 -1
- package/dist/curves/Tr2DistanceTracker.js +6 -0
- package/dist/curves/Tr2DistanceTracker.js.map +1 -1
- package/dist/curves/Tr2FollowCurve.js +6 -0
- package/dist/curves/Tr2FollowCurve.js.map +1 -1
- package/dist/curves/Tr2GrannyEventTrack.js +5 -0
- package/dist/curves/Tr2GrannyEventTrack.js.map +1 -1
- package/dist/curves/Tr2GrannyTrack.js +6 -0
- package/dist/curves/Tr2GrannyTrack.js.map +1 -1
- package/dist/curves/Tr2GrannyTransformTrack.js +6 -0
- package/dist/curves/Tr2GrannyTransformTrack.js.map +1 -1
- package/dist/curves/Tr2GrannyVectorTrack.js +5 -0
- package/dist/curves/Tr2GrannyVectorTrack.js.map +1 -1
- package/dist/curves/Tr2MatrixKey.js +5 -0
- package/dist/curves/Tr2MatrixKey.js.map +1 -1
- package/dist/curves/Tr2ObjectFollowCurveKey.js +6 -0
- package/dist/curves/Tr2ObjectFollowCurveKey.js.map +1 -1
- package/dist/curves/Tr2QuaternionLerpCurve.js +6 -0
- package/dist/curves/Tr2QuaternionLerpCurve.js.map +1 -1
- package/dist/curves/Tr2RotationAdapter.js +6 -0
- package/dist/curves/Tr2RotationAdapter.js.map +1 -1
- package/dist/curves/Tr2ScalarExprKey.js +18 -0
- package/dist/curves/Tr2ScalarExprKey.js.map +1 -1
- package/dist/curves/Tr2ScalarExprKeyCurve.js +23 -0
- package/dist/curves/Tr2ScalarExprKeyCurve.js.map +1 -1
- package/dist/curves/Tr2ScalarFader.js +11 -0
- package/dist/curves/Tr2ScalarFader.js.map +1 -1
- package/dist/curves/Tr2TranslationAdapter.js +6 -0
- package/dist/curves/Tr2TranslationAdapter.js.map +1 -1
- package/dist/curves/TriColorSequencer.js +6 -0
- package/dist/curves/TriColorSequencer.js.map +1 -1
- package/dist/curves/TriCurveSet.js +23 -0
- package/dist/curves/TriCurveSet.js.map +1 -1
- package/dist/curves/TriEventCurve.js +23 -0
- package/dist/curves/TriEventCurve.js.map +1 -1
- package/dist/curves/TriEventKey.js +5 -0
- package/dist/curves/TriEventKey.js.map +1 -1
- package/dist/curves/TriPerlinCurve.js +30 -0
- package/dist/curves/TriPerlinCurve.js.map +1 -1
- package/dist/curves/TriVectorSequencer.js +6 -0
- package/dist/curves/TriVectorSequencer.js.map +1 -1
- package/dist/eve/AudioGameObject.js +89 -1
- package/dist/eve/AudioGameObject.js.map +1 -1
- package/dist/eve/BackAndForthData.js +7 -0
- package/dist/eve/BackAndForthData.js.map +1 -1
- package/dist/eve/CjsDistributionRandom.js +6 -0
- package/dist/eve/CjsDistributionRandom.js.map +1 -1
- package/dist/eve/CjsEveThrottleableState.js +11 -0
- package/dist/eve/CjsEveThrottleableState.js.map +1 -1
- package/dist/eve/EveChildUpdateParams.js +7 -0
- package/dist/eve/EveChildUpdateParams.js.map +1 -1
- package/dist/eve/EveComponentTypes.js.map +1 -1
- package/dist/eve/EveCustomMask.js +58 -27
- package/dist/eve/EveCustomMask.js.map +1 -1
- package/dist/eve/EveDistanceField.js +84 -0
- package/dist/eve/EveDistanceField.js.map +1 -1
- package/dist/eve/EveEntity.js +138 -0
- package/dist/eve/EveEntity.js.map +1 -0
- package/dist/eve/EveImpactOverlay.js +61 -0
- package/dist/eve/EveImpactOverlay.js.map +1 -1
- package/dist/eve/EveLODHelper.js +17 -13
- package/dist/eve/EveLODHelper.js.map +1 -1
- package/dist/eve/EveLineData.js +2 -0
- package/dist/eve/EveLineData.js.map +1 -1
- package/dist/eve/EveThrottleable.js +11 -0
- package/dist/eve/EveThrottleable.js.map +1 -1
- package/dist/eve/FollowASplineData.js +7 -0
- package/dist/eve/FollowASplineData.js.map +1 -1
- package/dist/eve/FormationData.js +6 -0
- package/dist/eve/FormationData.js.map +1 -1
- package/dist/eve/InertiaData.js +7 -0
- package/dist/eve/InertiaData.js.map +1 -1
- package/dist/eve/PlacementDataWithIdentifier.js +7 -0
- package/dist/eve/PlacementDataWithIdentifier.js.map +1 -1
- package/dist/eve/PlayFXData.js +7 -0
- package/dist/eve/PlayFXData.js.map +1 -1
- package/dist/eve/SeekTargetData.js +7 -0
- package/dist/eve/SeekTargetData.js.map +1 -1
- package/dist/eve/{EveSpaceObjectAttachmentUtils.js → attachment/EveSpaceObjectAttachmentUtils.js} +11 -11
- package/dist/eve/attachment/EveSpaceObjectAttachmentUtils.js.map +1 -0
- package/dist/eve/attachment/banner/EveBannerItem.js +70 -0
- package/dist/eve/attachment/banner/EveBannerItem.js.map +1 -0
- package/dist/eve/{EveBannerLight.js → attachment/banner/EveBannerLight.js} +13 -2
- package/dist/eve/attachment/banner/EveBannerLight.js.map +1 -0
- package/dist/eve/attachment/banner/EveBannerSet.js +537 -0
- package/dist/eve/attachment/banner/EveBannerSet.js.map +1 -0
- package/dist/eve/{EveBoosterSet2.js → attachment/booster/EveBoosterSet2.js} +204 -35
- package/dist/eve/attachment/booster/EveBoosterSet2.js.map +1 -0
- package/dist/eve/{EveBoosterSet2Renderable.js → attachment/booster/EveBoosterSet2Renderable.js} +205 -12
- package/dist/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -0
- package/dist/eve/{EveTrailsSet.js → attachment/booster/EveTrailsSet.js} +49 -1
- package/dist/eve/attachment/booster/EveTrailsSet.js.map +1 -0
- package/dist/eve/attachment/decal/EveSpaceObjectDecal.js +512 -0
- package/dist/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -0
- package/dist/eve/{EveHazeSet.js → attachment/haze/EveHazeSet.js} +65 -6
- package/dist/eve/attachment/haze/EveHazeSet.js.map +1 -0
- package/dist/eve/attachment/haze/EveHazeSetItem.js +64 -0
- package/dist/eve/attachment/haze/EveHazeSetItem.js.map +1 -0
- package/dist/eve/{EveHazeSetLight.js → attachment/haze/EveHazeSetLight.js} +13 -2
- package/dist/eve/attachment/haze/EveHazeSetLight.js.map +1 -0
- package/dist/eve/attachment/itemSetBounds.js +131 -0
- package/dist/eve/attachment/itemSetBounds.js.map +1 -0
- package/dist/eve/{EvePlaneLight.js → attachment/plane/EvePlaneLight.js} +14 -2
- package/dist/eve/attachment/plane/EvePlaneLight.js.map +1 -0
- package/dist/eve/{EvePlaneSet.js → attachment/plane/EvePlaneSet.js} +119 -7
- package/dist/eve/attachment/plane/EvePlaneSet.js.map +1 -0
- package/dist/eve/attachment/plane/EvePlaneSetItem.js +72 -0
- package/dist/eve/attachment/plane/EvePlaneSetItem.js.map +1 -0
- package/dist/eve/{EveSpotlightLight.js → attachment/spotlight/EveSpotlightLight.js} +13 -2
- package/dist/eve/attachment/spotlight/EveSpotlightLight.js.map +1 -0
- package/dist/eve/{EveSpotlightSet.js → attachment/spotlight/EveSpotlightSet.js} +86 -6
- package/dist/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -0
- package/dist/eve/attachment/spotlight/EveSpotlightSetItem.js +61 -0
- package/dist/eve/attachment/spotlight/EveSpotlightSetItem.js.map +1 -0
- package/dist/eve/{EveSpriteLight.js → attachment/sprite/EveSpriteLight.js} +14 -2
- package/dist/eve/attachment/sprite/EveSpriteLight.js.map +1 -0
- package/dist/eve/{EveSpriteLineSet.js → attachment/sprite/EveSpriteLineSet.js} +69 -7
- package/dist/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -0
- package/dist/eve/{EveSpriteLineSetItem.js → attachment/sprite/EveSpriteLineSetItem.js} +29 -4
- package/dist/eve/attachment/sprite/EveSpriteLineSetItem.js.map +1 -0
- package/dist/eve/{EveSpriteSet.js → attachment/sprite/EveSpriteSet.js} +87 -8
- package/dist/eve/attachment/sprite/EveSpriteSet.js.map +1 -0
- package/dist/{generated/eve/attachment/sprites → eve/attachment/sprite}/EveSpriteSetItem.js +23 -26
- package/dist/eve/attachment/sprite/EveSpriteSetItem.js.map +1 -0
- package/dist/eve/attachment/turrets/EveTurretFiringFX.js +184 -2
- package/dist/eve/attachment/turrets/EveTurretFiringFX.js.map +1 -1
- package/dist/eve/attachment/turrets/EveTurretSet.js +236 -7
- package/dist/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/eve/attachment/turrets/EveTurretTarget.js +112 -0
- package/dist/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
- package/dist/eve/camera/EveCamera.js +644 -0
- package/dist/eve/camera/EveCamera.js.map +1 -0
- package/dist/eve/child/EveChildAudio.js +63 -0
- package/dist/eve/child/EveChildAudio.js.map +1 -1
- package/dist/eve/child/EveChildBehaviorSystem.js +412 -0
- package/dist/eve/child/EveChildBehaviorSystem.js.map +1 -0
- package/dist/{generated/eve → eve}/child/EveChildBulletStorm.js +41 -3
- package/dist/eve/child/EveChildBulletStorm.js.map +1 -0
- package/dist/eve/child/EveChildContainer.js +175 -16
- package/dist/eve/child/EveChildContainer.js.map +1 -1
- package/dist/eve/child/EveChildEffectPropagator.js +1 -1
- package/dist/eve/child/EveChildEffectPropagator.js.map +1 -1
- package/dist/eve/child/EveChildFogVolume.js +72 -0
- package/dist/eve/child/EveChildFogVolume.js.map +1 -1
- package/dist/eve/child/EveChildInheritProperties.js +17 -0
- package/dist/eve/child/EveChildInheritProperties.js.map +1 -1
- package/dist/eve/child/EveChildInstancedMeshes.js +211 -1
- package/dist/eve/child/EveChildInstancedMeshes.js.map +1 -1
- package/dist/eve/child/EveChildLightingOverride.js +74 -0
- package/dist/eve/child/EveChildLightingOverride.js.map +1 -1
- package/dist/{generated/eve → eve}/child/EveChildLink.js +17 -16
- package/dist/eve/child/EveChildLink.js.map +1 -0
- package/dist/eve/child/EveChildMesh.js +351 -105
- package/dist/eve/child/EveChildMesh.js.map +1 -1
- package/dist/eve/child/EveChildSpherePin.js +108 -0
- package/dist/eve/child/EveChildSpherePin.js.map +1 -0
- package/dist/eve/child/EveChildTransform.js +44 -1
- package/dist/eve/child/EveChildTransform.js.map +1 -1
- package/dist/eve/child/IEveSpaceObjectChild.js +5 -0
- package/dist/eve/child/IEveSpaceObjectChild.js.map +1 -1
- package/dist/eve/child/behaviors/CollisionAvoidance.js +112 -0
- package/dist/eve/child/behaviors/CollisionAvoidance.js.map +1 -0
- package/dist/eve/child/behaviors/InclusionVolume.js +131 -0
- package/dist/eve/child/behaviors/InclusionVolume.js.map +1 -0
- package/dist/eve/child/behaviors/Wander.js +99 -0
- package/dist/eve/child/behaviors/Wander.js.map +1 -0
- package/dist/{generated/eve → eve}/child/behaviors/enums.js +1 -1
- package/dist/eve/child/behaviors/enums.js.map +1 -0
- package/dist/eve/child/behaviors/lifecycle/ProcessLifetime.js +540 -0
- package/dist/eve/child/behaviors/lifecycle/ProcessLifetime.js.map +1 -0
- package/dist/eve/{ProcessLifetimeData.js → child/behaviors/lifecycle/ProcessLifetimeData.js} +8 -2
- package/dist/eve/child/behaviors/lifecycle/ProcessLifetimeData.js.map +1 -0
- package/dist/eve/child/behaviors/{SplineTunnel.js → tunnels/SplineTunnel.js} +9 -7
- package/dist/eve/child/behaviors/tunnels/SplineTunnel.js.map +1 -0
- package/dist/eve/child/behaviors/tunnels/SplineTunnelGroup.js +211 -0
- package/dist/eve/child/behaviors/tunnels/SplineTunnelGroup.js.map +1 -0
- package/dist/eve/child/behaviors/{SplineTunnelPoint.js → tunnels/SplineTunnelPoint.js} +3 -3
- package/dist/eve/child/behaviors/tunnels/SplineTunnelPoint.js.map +1 -0
- package/dist/eve/child/lineSetPaths/EveBezierCurve.js +65 -0
- package/dist/eve/child/lineSetPaths/EveBezierCurve.js.map +1 -1
- package/dist/eve/child/lineSetPaths/EveCircle.js +63 -0
- package/dist/eve/child/lineSetPaths/EveCircle.js.map +1 -1
- package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierAttachToBone.js +24 -16
- package/dist/eve/child/modifiers/EveChildModifierAttachToBone.js.map +1 -0
- package/dist/eve/child/modifiers/EveChildModifierBillboard2D.js +5 -0
- package/dist/eve/child/modifiers/EveChildModifierBillboard2D.js.map +1 -1
- package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierBillboard3D.js +22 -19
- package/dist/eve/child/modifiers/EveChildModifierBillboard3D.js.map +1 -0
- package/dist/eve/child/modifiers/EveChildModifierBooster.js +6 -0
- package/dist/eve/child/modifiers/EveChildModifierBooster.js.map +1 -1
- package/dist/eve/child/modifiers/EveChildModifierCameraOrientedRotationConstrained.js +5 -0
- package/dist/eve/child/modifiers/EveChildModifierCameraOrientedRotationConstrained.js.map +1 -1
- package/dist/eve/child/modifiers/EveChildModifierHalo.js +5 -0
- package/dist/eve/child/modifiers/EveChildModifierHalo.js.map +1 -1
- package/dist/eve/child/modifiers/EveChildModifierHaloInverted.js +6 -0
- package/dist/eve/child/modifiers/EveChildModifierHaloInverted.js.map +1 -1
- package/dist/eve/child/modifiers/EveChildModifierSRT.js +5 -0
- package/dist/eve/child/modifiers/EveChildModifierSRT.js.map +1 -1
- package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierStretch.js +31 -17
- package/dist/eve/child/modifiers/EveChildModifierStretch.js.map +1 -0
- package/dist/{generated/eve → eve}/child/modifiers/EveChildModifierTranslateWithCamera.js +16 -14
- package/dist/eve/child/modifiers/EveChildModifierTranslateWithCamera.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/EveChildProceduralContainer.js +11 -4
- package/dist/eve/child/procedural/EveChildProceduralContainer.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodAttributeMap.js +12 -12
- package/dist/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js +6 -6
- package/dist/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodCycling.js +12 -12
- package/dist/eve/child/procedural/selection/EveProceduralMethodCycling.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodCyclingParameter.js +8 -8
- package/dist/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodRandom.js +17 -17
- package/dist/eve/child/procedural/selection/EveProceduralMethodRandom.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodRandomParameter.js +7 -7
- package/dist/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodThresholdParameter.js +7 -7
- package/dist/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js.map +1 -0
- package/dist/{generated/eve → eve}/child/procedural/selection/EveProceduralMethodThresholds.js +17 -17
- package/dist/eve/child/procedural/selection/EveProceduralMethodThresholds.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/EveBaseDistributionMethod.js +132 -3
- package/dist/eve/distribution/EveBaseDistributionMethod.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js +12 -1
- package/dist/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js +9 -1
- package/dist/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js +12 -1
- package/dist/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js.map +1 -0
- package/dist/eve/distribution/attributeModifiers/enums.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/placement/EveDistributionPlacementGeneratorLocators.js +16 -3
- package/dist/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js +31 -3
- package/dist/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/placement/EveDistributionPlacementGeneratorVolume.js +34 -3
- package/dist/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js +14 -2
- package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js +13 -2
- package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js +13 -2
- package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js +13 -2
- package/dist/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerBurst.js +19 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerBurst.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerControllerTrigger.js +25 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerInterval.js +17 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerInterval.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerTriggerPlane.js +20 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerTriggerSnake.js +20 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js.map +1 -0
- package/dist/{generated/eve → eve}/distribution/spawners/EveDistributionSpawnerTriggerSphere.js +20 -1
- package/dist/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js.map +1 -0
- package/dist/{generated/eve/effect → eve/effect/lensflare}/EveLensflare.js +44 -2
- package/dist/eve/effect/lensflare/EveLensflare.js.map +1 -0
- package/dist/eve/effect/multiEffect/EveMultiEffect.js +302 -0
- package/dist/eve/effect/multiEffect/EveMultiEffect.js.map +1 -0
- package/dist/eve/effect/multiEffect/EveMultiEffectParameter.js +92 -0
- package/dist/eve/effect/multiEffect/EveMultiEffectParameter.js.map +1 -0
- package/dist/eve/index.js +117 -47
- package/dist/eve/index.js.map +1 -1
- package/dist/eve/lights/CjsLightData.js +7 -0
- package/dist/eve/lights/CjsLightData.js.map +1 -1
- package/dist/eve/lights/Tr2Light.js +41 -0
- package/dist/eve/lights/Tr2Light.js.map +1 -1
- package/dist/eve/lights/Tr2PointLight.js +5 -0
- package/dist/eve/lights/Tr2PointLight.js.map +1 -1
- package/dist/eve/lights/Tr2SpotLight.js +5 -0
- package/dist/eve/lights/Tr2SpotLight.js.map +1 -1
- package/dist/eve/lights/Tr2TexturedPointLight.js +10 -0
- package/dist/eve/lights/Tr2TexturedPointLight.js.map +1 -1
- package/dist/eve/lights/lightConversion.js +29 -27
- package/dist/eve/lights/lightConversion.js.map +1 -1
- package/dist/eve/{EveLocator2.js → locator/EveLocator2.js} +20 -1
- package/dist/eve/locator/EveLocator2.js.map +1 -0
- package/dist/eve/{EveLocatorSets.js → locator/EveLocatorSets.js} +43 -1
- package/dist/eve/locator/EveLocatorSets.js.map +1 -0
- package/dist/eve/{Locator.js → locator/Locator.js} +6 -1
- package/dist/eve/locator/Locator.js.map +1 -0
- package/dist/eve/{LocatorData.js → locator/LocatorData.js} +3 -1
- package/dist/eve/locator/LocatorData.js.map +1 -0
- package/dist/eve/overlays/EveMeshOverlayEffect.js +208 -0
- package/dist/eve/overlays/EveMeshOverlayEffect.js.map +1 -0
- package/dist/eve/{EveParticleDirectForce.js → particles/force/EveParticleDirectForce.js} +5 -5
- package/dist/eve/particles/force/EveParticleDirectForce.js.map +1 -0
- package/dist/eve/{EveParticleDragForce.js → particles/force/EveParticleDragForce.js} +5 -5
- package/dist/eve/particles/force/EveParticleDragForce.js.map +1 -0
- package/dist/eve/{EveParticleSpring.js → particles/force/EveParticleSpring.js} +6 -6
- package/dist/eve/particles/force/EveParticleSpring.js.map +1 -0
- package/dist/{generated/eve/scene → eve/particles/static}/EveSceneStaticParticles.js +70 -36
- package/dist/eve/particles/static/EveSceneStaticParticles.js.map +1 -0
- package/dist/eve/perObjectData/childPerObjectRecords.js +90 -0
- package/dist/eve/perObjectData/childPerObjectRecords.js.map +1 -0
- package/dist/eve/renderable/stretch/CjsStretchRuntime.js +76 -0
- package/dist/eve/renderable/stretch/CjsStretchRuntime.js.map +1 -1
- package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js +85 -1
- package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js.map +1 -1
- package/dist/eve/renderable/stretch/EveLocalPositionCurve.js +91 -0
- package/dist/eve/renderable/stretch/EveLocalPositionCurve.js.map +1 -1
- package/dist/eve/renderable/stretch/EveRemotePositionCurve.js +36 -0
- package/dist/eve/renderable/stretch/EveRemotePositionCurve.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch.js +158 -9
- package/dist/eve/renderable/stretch/EveStretch.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch2.js +121 -12
- package/dist/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch3.js +261 -8
- package/dist/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/eve/scene/EveSpaceScene.js +56 -6
- package/dist/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/{generated/eve/scene → eve/scene/components}/EveComponentCollection.js +24 -1
- package/dist/eve/scene/components/EveComponentCollection.js.map +1 -0
- package/dist/{generated/eve/scene → eve/scene/components}/EveComponentRegistry.js +74 -2
- package/dist/eve/scene/components/EveComponentRegistry.js.map +1 -0
- package/dist/eve/scene/picking/EvePickingContext.js +61 -0
- package/dist/eve/scene/picking/EvePickingContext.js.map +1 -0
- package/dist/eve/scene/shadows/TriShadowFrustum.js +70 -0
- package/dist/eve/scene/shadows/TriShadowFrustum.js.map +1 -0
- package/dist/eve/scene/shadows/TriShadowOrthoFrustum.js +129 -0
- package/dist/eve/scene/shadows/TriShadowOrthoFrustum.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js +19 -19
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js +19 -19
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js +12 -12
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js +12 -12
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js +30 -30
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js +9 -9
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js.map +1 -0
- package/dist/{generated/eve → eve}/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js +23 -23
- package/dist/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js.map +1 -0
- package/dist/eve/smartLights/attributeModifiers/enums.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterBindingBase.js +26 -1
- package/dist/eve/socket/EveSocketParameterBindingBase.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterBool.js +17 -1
- package/dist/eve/socket/EveSocketParameterBool.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterColor.js +21 -5
- package/dist/eve/socket/EveSocketParameterColor.js.map +1 -0
- package/dist/eve/socket/EveSocketParameterFilePath.js +5 -5
- package/dist/eve/socket/EveSocketParameterFilePath.js.map +1 -1
- package/dist/{generated/eve → eve}/socket/EveSocketParameterFloat.js +17 -1
- package/dist/eve/socket/EveSocketParameterFloat.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterInt.js +17 -1
- package/dist/eve/socket/EveSocketParameterInt.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterString.js +42 -2
- package/dist/eve/socket/EveSocketParameterString.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterVector2.js +17 -1
- package/dist/eve/socket/EveSocketParameterVector2.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterVector3.js +17 -1
- package/dist/eve/socket/EveSocketParameterVector3.js.map +1 -0
- package/dist/{generated/eve → eve}/socket/EveSocketParameterVector4.js +17 -1
- package/dist/eve/socket/EveSocketParameterVector4.js.map +1 -0
- package/dist/eve/spaceObject/EveEffectRoot2.js +58 -31
- package/dist/eve/spaceObject/EveEffectRoot2.js.map +1 -1
- package/dist/eve/spaceObject/EveMissile.js +49 -1
- package/dist/eve/spaceObject/EveMissile.js.map +1 -1
- package/dist/eve/spaceObject/EveMissileWarhead.js +100 -1
- package/dist/eve/spaceObject/EveMissileWarhead.js.map +1 -1
- package/dist/eve/spaceObject/EveMobile.js +104 -0
- package/dist/eve/spaceObject/EveMobile.js.map +1 -1
- package/dist/eve/spaceObject/EveRootTransform.js +17 -0
- package/dist/eve/spaceObject/EveRootTransform.js.map +1 -1
- package/dist/{generated/eve → eve}/spaceObject/EveShip2.js +32 -12
- package/dist/eve/spaceObject/EveShip2.js.map +1 -0
- package/dist/eve/spaceObject/EveSpaceObject2.js +726 -199
- package/dist/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/eve/spaceObject/EveTransform.js +100 -4
- package/dist/eve/spaceObject/EveTransform.js.map +1 -1
- package/dist/eve/spaceObject/IEveSpaceObject2ParentData.js +70 -0
- package/dist/eve/spaceObject/IEveSpaceObject2ParentData.js.map +1 -0
- package/dist/eve/spaceObject/createEveSpaceObjectMainPerObjectValues.js +19 -16
- package/dist/eve/spaceObject/createEveSpaceObjectMainPerObjectValues.js.map +1 -1
- package/dist/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js +92 -0
- package/dist/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js.map +1 -0
- package/dist/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js +158 -0
- package/dist/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js.map +1 -0
- package/dist/{generated/eve/spaceObject → eve/spaceObject/planet}/EvePlanet.js +2 -2
- package/dist/eve/spaceObject/planet/EvePlanet.js.map +1 -0
- package/dist/{generated/eve → eve}/spaceObject/swarm/EveSwarmRenderable.js +102 -64
- package/dist/eve/spaceObject/swarm/EveSwarmRenderable.js.map +1 -0
- package/dist/eve/ui/EveEllipseDefinition.js +15 -0
- package/dist/eve/ui/EveEllipseDefinition.js.map +1 -1
- package/dist/eve/ui/EveEllipseSet.js +42 -0
- package/dist/eve/ui/EveEllipseSet.js.map +1 -1
- package/dist/{generated/eve → eve}/ui/EveSpherePin.js +76 -11
- package/dist/eve/ui/EveSpherePin.js.map +1 -0
- package/dist/eve/ui/EveSprite2dBracket.js +5 -0
- package/dist/eve/ui/EveSprite2dBracket.js.map +1 -1
- package/dist/eve/ui/EveUiObject.js +11 -0
- package/dist/eve/ui/EveUiObject.js.map +1 -1
- package/dist/{generated/eve/ui → eve/ui/lines}/EveLineSet.js +67 -6
- package/dist/eve/ui/lines/EveLineSet.js.map +1 -0
- package/dist/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js +78 -0
- package/dist/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js.map +1 -0
- package/dist/{generated/eve/ui → eve/ui/tacticalOverlay}/EveTacticalTrails.js +22 -2
- package/dist/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -0
- package/dist/eve/virtualCamera/EveVirtualCamera.js +152 -0
- package/dist/eve/virtualCamera/EveVirtualCamera.js.map +1 -1
- package/dist/eve/virtualCamera/EveVirtualCameraSystem.js +65 -0
- package/dist/eve/virtualCamera/EveVirtualCameraSystem.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js +17 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js +19 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js +17 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js +29 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js +15 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js +38 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js +17 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js +18 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js +20 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js +20 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveRight.js +11 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveRight.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveUp.js +14 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveUp.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js +16 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js +20 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js.map +1 -1
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js +36 -0
- package/dist/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js.map +1 -1
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionBase.js +36 -0
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionBase.js.map +1 -1
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionCut.js +11 -0
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionCut.js.map +1 -1
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js +37 -0
- package/dist/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js.map +1 -1
- package/dist/eve/volume/EveBoxVolume.js +59 -0
- package/dist/eve/volume/EveBoxVolume.js.map +1 -1
- package/dist/eve/volume/EveEllipsoidVolume.js +54 -0
- package/dist/eve/volume/EveEllipsoidVolume.js.map +1 -1
- package/dist/eve/volume/EveSphereVolume.js +34 -0
- package/dist/eve/volume/EveSphereVolume.js.map +1 -1
- package/dist/generated/eve/child/EveChildCloud2.js +138 -138
- package/dist/generated/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/generated/eve/child/EveChildParticleSystem.js +10 -4
- package/dist/generated/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/generated/eve/child/EveChildSocket.js +1 -1
- package/dist/generated/eve/child/EveChildSocket.js.map +1 -1
- package/dist/generated/eve/child/behaviors/BackAndForth.js +14 -17
- package/dist/generated/eve/child/behaviors/BackAndForth.js.map +1 -1
- package/dist/generated/eve/child/behaviors/BehaviorGroup.js +2 -2
- package/dist/generated/eve/child/behaviors/BehaviorGroup.js.map +1 -1
- package/dist/generated/eve/child/behaviors/EveKDdroneManagementTree.js +26 -29
- package/dist/generated/eve/child/behaviors/EveKDdroneManagementTree.js.map +1 -1
- package/dist/generated/eve/child/behaviors/FollowASpline.js +13 -17
- package/dist/generated/eve/child/behaviors/FollowASpline.js.map +1 -1
- package/dist/generated/eve/child/behaviors/PlayFX.js +14 -14
- package/dist/generated/eve/child/behaviors/PlayFX.js.map +1 -1
- package/dist/generated/eve/child/behaviors/SeekTarget.js +1 -1
- package/dist/generated/eve/child/behaviors/SeekTarget.js.map +1 -1
- package/dist/generated/eve/child/behaviors/index.js +0 -6
- package/dist/generated/eve/child/behaviors/index.js.map +1 -1
- package/dist/generated/eve/child/index.js +0 -23
- package/dist/generated/eve/child/index.js.map +1 -1
- package/dist/generated/eve/effect/index.js +0 -3
- package/dist/generated/eve/effect/index.js.map +1 -1
- package/dist/generated/eve/index.js +0 -88
- package/dist/generated/eve/index.js.map +1 -1
- package/dist/generated/eve/scene/index.js +0 -6
- package/dist/generated/eve/scene/index.js.map +1 -1
- package/dist/generated/eve/smartLights/EveSmartLightColorShareGroup.js +20 -20
- package/dist/generated/eve/smartLights/EveSmartLightColorShareGroup.js.map +1 -1
- package/dist/generated/eve/smartLights/EveSmartLightPointLight.js +1 -1
- package/dist/generated/eve/smartLights/EveSmartLightPointLight.js.map +1 -1
- package/dist/generated/eve/smartLights/index.js +0 -8
- package/dist/generated/eve/smartLights/index.js.map +1 -1
- package/dist/generated/eve/spaceObject/index.js +0 -4
- package/dist/generated/eve/spaceObject/index.js.map +1 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarm.js +11 -11
- package/dist/generated/eve/spaceObject/swarm/EveSwarm.js.map +1 -1
- package/dist/generated/eve/spaceObject/swarm/index.js +0 -1
- package/dist/generated/eve/spaceObject/swarm/index.js.map +1 -1
- package/dist/generated/eve/ui/index.js +0 -4
- package/dist/generated/eve/ui/index.js.map +1 -1
- package/dist/generated/index.js +0 -93
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/trinityCore/index.js +0 -5
- package/dist/generated/trinityCore/index.js.map +1 -1
- package/dist/index.js +130 -155
- package/dist/index.js.map +1 -1
- package/dist/particle/Tr2GpuSharedEmitter.js +39 -0
- package/dist/particle/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/particle/Tr2GpuUniqueEmitter.js +5 -0
- package/dist/particle/Tr2GpuUniqueEmitter.js.map +1 -1
- package/dist/particle/Tr2ParticleAttractorForce.js +10 -0
- package/dist/particle/Tr2ParticleAttractorForce.js.map +1 -1
- package/dist/particle/Tr2ParticleDirectForce.js +7 -0
- package/dist/particle/Tr2ParticleDirectForce.js.map +1 -1
- package/dist/particle/Tr2ParticleDragForce.js +7 -0
- package/dist/particle/Tr2ParticleDragForce.js.map +1 -1
- package/dist/particle/Tr2ParticleElementDeclaration.js +5 -0
- package/dist/particle/Tr2ParticleElementDeclaration.js.map +1 -1
- package/dist/particle/Tr2ParticleFluidDragForce.js +10 -0
- package/dist/particle/Tr2ParticleFluidDragForce.js.map +1 -1
- package/dist/particle/Tr2ParticleSpring.js +10 -0
- package/dist/particle/Tr2ParticleSpring.js.map +1 -1
- package/dist/particle/Tr2ParticleVortexForce.js +10 -0
- package/dist/particle/Tr2ParticleVortexForce.js.map +1 -1
- package/dist/particle/particleElementBinding.js +12 -0
- package/dist/particle/particleElementBinding.js.map +1 -1
- package/dist/postProcess/Tr2PPBloomEffect.js +6 -0
- package/dist/postProcess/Tr2PPBloomEffect.js.map +1 -1
- package/dist/postProcess/Tr2PPDepthOfFieldEffect.js +16 -0
- package/dist/postProcess/Tr2PPDepthOfFieldEffect.js.map +1 -1
- package/dist/postProcess/Tr2PPGenericEffect.js +7 -0
- package/dist/postProcess/Tr2PPGenericEffect.js.map +1 -1
- package/dist/postProcess/Tr2PPTaaEffect.js +10 -0
- package/dist/postProcess/Tr2PPTaaEffect.js.map +1 -1
- package/dist/postProcess/Tr2PPTonemappingEffect.js +5 -0
- package/dist/postProcess/Tr2PPTonemappingEffect.js.map +1 -1
- package/dist/postProcess/Tr2PostProcess.js +5 -0
- package/dist/postProcess/Tr2PostProcess.js.map +1 -1
- package/dist/postProcess/Tr2PostProcess2.js +147 -0
- package/dist/postProcess/Tr2PostProcess2.js.map +1 -1
- package/dist/postProcess/Tr2PostProcessAttributes.js +89 -0
- package/dist/postProcess/Tr2PostProcessAttributes.js.map +1 -1
- package/dist/renderJob/Tr2RenderJobs.js +34 -0
- package/dist/renderJob/Tr2RenderJobs.js.map +1 -1
- package/dist/renderJob/TriRenderJob.js +59 -0
- package/dist/renderJob/TriRenderJob.js.map +1 -1
- package/dist/renderJob/TriRenderStep.js +20 -0
- package/dist/renderJob/TriRenderStep.js.map +1 -1
- package/dist/renderJob/TriStepClear.js +18 -0
- package/dist/renderJob/TriStepClear.js.map +1 -1
- package/dist/renderJob/TriStepCopyRenderTarget.js +51 -0
- package/dist/renderJob/TriStepCopyRenderTarget.js.map +1 -1
- package/dist/renderJob/TriStepEnableWireframeMode.js +9 -0
- package/dist/renderJob/TriStepEnableWireframeMode.js.map +1 -1
- package/dist/renderJob/TriStepGenerateMipMaps.js +9 -0
- package/dist/renderJob/TriStepGenerateMipMaps.js.map +1 -1
- package/dist/renderJob/TriStepPopDepthStencil.js +6 -0
- package/dist/renderJob/TriStepPopDepthStencil.js.map +1 -1
- package/dist/renderJob/TriStepPopProjection.js +6 -0
- package/dist/renderJob/TriStepPopProjection.js.map +1 -1
- package/dist/renderJob/TriStepPopRenderTarget.js +12 -0
- package/dist/renderJob/TriStepPopRenderTarget.js.map +1 -1
- package/dist/renderJob/TriStepPopViewTransform.js +6 -0
- package/dist/renderJob/TriStepPopViewTransform.js.map +1 -1
- package/dist/renderJob/TriStepPopViewport.js +6 -0
- package/dist/renderJob/TriStepPopViewport.js.map +1 -1
- package/dist/renderJob/TriStepPresentSwapChain.js +12 -0
- package/dist/renderJob/TriStepPresentSwapChain.js.map +1 -1
- package/dist/renderJob/TriStepPushDepthStencil.js +17 -0
- package/dist/renderJob/TriStepPushDepthStencil.js.map +1 -1
- package/dist/renderJob/TriStepPushProjection.js +6 -0
- package/dist/renderJob/TriStepPushProjection.js.map +1 -1
- package/dist/renderJob/TriStepPushRenderTarget.js +9 -0
- package/dist/renderJob/TriStepPushRenderTarget.js.map +1 -1
- package/dist/renderJob/TriStepPushViewTransform.js +6 -0
- package/dist/renderJob/TriStepPushViewTransform.js.map +1 -1
- package/dist/renderJob/TriStepPushViewport.js +6 -0
- package/dist/renderJob/TriStepPushViewport.js.map +1 -1
- package/dist/renderJob/TriStepRemoteSync.js +17 -0
- package/dist/renderJob/TriStepRemoteSync.js.map +1 -1
- package/dist/renderJob/TriStepResolve.js +13 -0
- package/dist/renderJob/TriStepResolve.js.map +1 -1
- package/dist/renderJob/TriStepRunJob.js +12 -0
- package/dist/renderJob/TriStepRunJob.js.map +1 -1
- package/dist/renderJob/TriStepSetDepthStencil.js +12 -0
- package/dist/renderJob/TriStepSetDepthStencil.js.map +1 -1
- package/dist/renderJob/TriStepSetProjection.js +14 -0
- package/dist/renderJob/TriStepSetProjection.js.map +1 -1
- package/dist/renderJob/TriStepSetRenderState.js +20 -0
- package/dist/renderJob/TriStepSetRenderState.js.map +1 -1
- package/dist/renderJob/TriStepSetRenderTarget.js +12 -0
- package/dist/renderJob/TriStepSetRenderTarget.js.map +1 -1
- package/dist/renderJob/TriStepSetStdRndStates.js +18 -0
- package/dist/renderJob/TriStepSetStdRndStates.js.map +1 -1
- package/dist/renderJob/TriStepSetView.js +29 -2
- package/dist/renderJob/TriStepSetView.js.map +1 -1
- package/dist/renderJob/TriStepSetViewport.js +17 -0
- package/dist/renderJob/TriStepSetViewport.js.map +1 -1
- package/dist/renderJob/TriStepSetVisualizationMode.js +19 -0
- package/dist/renderJob/TriStepSetVisualizationMode.js.map +1 -1
- package/dist/shader/Tr2Effect.js +217 -2
- package/dist/shader/Tr2Effect.js.map +1 -1
- package/dist/shader/Tr2Material.js +41 -0
- package/dist/shader/Tr2Material.js.map +1 -1
- package/dist/shader/index.js +1 -11
- package/dist/shader/index.js.map +1 -1
- package/dist/shader/material/Tr2EffectLibraryParameters.js +7 -0
- package/dist/shader/material/Tr2EffectLibraryParameters.js.map +1 -1
- package/dist/shader/material/Tr2EffectPassParameters.js +23 -0
- package/dist/shader/material/Tr2EffectPassParameters.js.map +1 -1
- package/dist/shader/material/Tr2MaterialStageInput.js +15 -0
- package/dist/shader/material/Tr2MaterialStageInput.js.map +1 -1
- package/dist/shader/parameter/CjsParameter.js +94 -0
- package/dist/shader/parameter/CjsParameter.js.map +1 -1
- package/dist/shader/parameter/CjsVectorParameter.js +20 -0
- package/dist/shader/parameter/CjsVectorParameter.js.map +1 -1
- package/dist/shader/parameter/Tr2FloatParameter.js +53 -0
- package/dist/shader/parameter/Tr2FloatParameter.js.map +1 -1
- package/dist/shader/parameter/Tr2GeometryBufferParameter.js +39 -0
- package/dist/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/shader/parameter/Tr2Matrix4Parameter.js +54 -0
- package/dist/shader/parameter/Tr2Matrix4Parameter.js.map +1 -1
- package/dist/shader/parameter/Tr2RuntimeTextureParameter.js +54 -0
- package/dist/shader/parameter/Tr2RuntimeTextureParameter.js.map +1 -1
- package/dist/shader/parameter/Tr2TextureAnimationParameter.js +35 -0
- package/dist/shader/parameter/Tr2TextureAnimationParameter.js.map +1 -1
- package/dist/shader/parameter/Tr2Vector2Parameter.js +86 -0
- package/dist/shader/parameter/Tr2Vector2Parameter.js.map +1 -1
- package/dist/shader/parameter/Tr2Vector3Parameter.js +95 -0
- package/dist/shader/parameter/Tr2Vector3Parameter.js.map +1 -1
- package/dist/shader/parameter/Tr2Vector4Parameter.js +105 -0
- package/dist/shader/parameter/Tr2Vector4Parameter.js.map +1 -1
- package/dist/shader/parameter/TriFloatArrayParameter.js +26 -0
- package/dist/shader/parameter/TriFloatArrayParameter.js.map +1 -1
- package/dist/shader/parameter/TriTextureParameter.js +84 -0
- package/dist/shader/parameter/TriTextureParameter.js.map +1 -1
- package/dist/shader/parameter/TriTransformParameter.js +2 -0
- package/dist/shader/parameter/TriTransformParameter.js.map +1 -1
- package/dist/shader/parameter/TriVariableParameter.js +38 -0
- package/dist/shader/parameter/TriVariableParameter.js.map +1 -1
- package/dist/shader/parameter/TriVector4.js +2 -0
- package/dist/shader/parameter/TriVector4.js.map +1 -1
- package/dist/shader/reflection/Tr2ShaderOption.js +6 -1
- package/dist/shader/reflection/Tr2ShaderOption.js.map +1 -1
- package/dist/shader/support/CjsVariableStore.js +140 -0
- package/dist/shader/support/CjsVariableStore.js.map +1 -1
- package/dist/shader/support/Tr2ShaderBuffer.js +15 -0
- package/dist/shader/support/Tr2ShaderBuffer.js.map +1 -1
- package/dist/trinityCore/CjsBatchManager.js +62 -2
- package/dist/trinityCore/CjsBatchManager.js.map +1 -1
- package/dist/trinityCore/GrannyBoneOffset.js +51 -0
- package/dist/trinityCore/GrannyBoneOffset.js.map +1 -1
- package/dist/trinityCore/ITriRenderBatchAccumulator.js +65 -3
- package/dist/trinityCore/ITriRenderBatchAccumulator.js.map +1 -1
- package/dist/trinityCore/Tr2DirectInstanceData.js +19 -0
- package/dist/trinityCore/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinityCore/Tr2ExpressionTermInfo.js +21 -0
- package/dist/trinityCore/Tr2ExpressionTermInfo.js.map +1 -1
- package/dist/trinityCore/Tr2GpuBuffer.js +5 -0
- package/dist/trinityCore/Tr2GpuBuffer.js.map +1 -1
- package/dist/{generated/trinityCore → trinityCore}/Tr2GrannyAnimation.js +137 -8
- package/dist/trinityCore/Tr2GrannyAnimation.js.map +1 -0
- package/dist/trinityCore/Tr2InstancedMesh.js +52 -0
- package/dist/trinityCore/Tr2InstancedMesh.js.map +1 -1
- package/dist/trinityCore/Tr2MaterialParameterStore.js +5 -0
- package/dist/trinityCore/Tr2MaterialParameterStore.js.map +1 -1
- package/dist/trinityCore/Tr2Mesh.js +37 -0
- package/dist/trinityCore/Tr2Mesh.js.map +1 -1
- package/dist/trinityCore/Tr2MeshArea.js +78 -0
- package/dist/trinityCore/Tr2MeshArea.js.map +1 -1
- package/dist/trinityCore/Tr2MeshBase.js +98 -2
- package/dist/trinityCore/Tr2MeshBase.js.map +1 -1
- package/dist/trinityCore/Tr2PerObjectData.js +10 -0
- package/dist/trinityCore/Tr2PerObjectData.js.map +1 -1
- package/dist/trinityCore/Tr2PickType.js +33 -0
- package/dist/trinityCore/Tr2PickType.js.map +1 -0
- package/dist/trinityCore/Tr2RenderBatch.js +137 -0
- package/dist/trinityCore/Tr2RenderBatch.js.map +1 -1
- package/dist/trinityCore/Tr2RenderContext.js +271 -0
- package/dist/trinityCore/Tr2RenderContext.js.map +1 -1
- package/dist/trinityCore/Tr2RuntimeInstanceData.js +179 -0
- package/dist/trinityCore/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinityCore/Tr2ShLightingManager.js +397 -0
- package/dist/trinityCore/Tr2ShLightingManager.js.map +1 -0
- package/dist/trinityCore/Tr2VariableStore.js +26 -0
- package/dist/trinityCore/Tr2VariableStore.js.map +1 -1
- package/dist/trinityCore/Tr2VisibilityResults.js +5 -0
- package/dist/trinityCore/Tr2VisibilityResults.js.map +1 -1
- package/dist/trinityCore/TriDevice.js +5 -0
- package/dist/trinityCore/TriDevice.js.map +1 -1
- package/dist/trinityCore/TriFrustum.js +21 -14
- package/dist/trinityCore/TriFrustum.js.map +1 -1
- package/dist/trinityCore/TriObserverLocal.js +43 -0
- package/dist/trinityCore/TriObserverLocal.js.map +1 -1
- package/dist/trinityCore/TriProjection.js +86 -32
- package/dist/trinityCore/TriProjection.js.map +1 -1
- package/dist/trinityCore/TriRect.js +12 -0
- package/dist/trinityCore/TriRect.js.map +1 -1
- package/dist/trinityCore/TriRenderBatchAccumulator.js +46 -0
- package/dist/trinityCore/TriRenderBatchAccumulator.js.map +1 -1
- package/dist/trinityCore/TriRenderBatchMap.js +39 -2
- package/dist/trinityCore/TriRenderBatchMap.js.map +1 -1
- package/dist/trinityCore/TriSettings.js +38 -0
- package/dist/trinityCore/TriSettings.js.map +1 -1
- package/dist/trinityCore/TriVariable.js +30 -0
- package/dist/trinityCore/TriVariable.js.map +1 -1
- package/dist/trinityCore/TriView.js +16 -1
- package/dist/trinityCore/TriView.js.map +1 -1
- package/dist/trinityCore/TriViewport.js +12 -0
- package/dist/trinityCore/TriViewport.js.map +1 -1
- package/dist/trinityCore/{Tr2BindingVector3.js → binding/Tr2BindingVector3.js} +1 -1
- package/dist/trinityCore/binding/Tr2BindingVector3.js.map +1 -0
- package/dist/trinityCore/binding/Tr2DynamicBinding.js +266 -0
- package/dist/trinityCore/binding/Tr2DynamicBinding.js.map +1 -0
- package/dist/trinityCore/binding/Tr2ExternalParameter.js +392 -0
- package/dist/trinityCore/binding/Tr2ExternalParameter.js.map +1 -0
- package/dist/trinityCore/{Tr2PyValueBinding.js → binding/Tr2PyValueBinding.js} +30 -6
- package/dist/trinityCore/binding/Tr2PyValueBinding.js.map +1 -0
- package/dist/trinityCore/binding/TriValueBinding.js +648 -0
- package/dist/trinityCore/binding/TriValueBinding.js.map +1 -0
- package/dist/trinityCore/index.js +11 -4
- package/dist/trinityCore/index.js.map +1 -1
- package/dist/trinityCore/pickRay.js +84 -0
- package/dist/trinityCore/pickRay.js.map +1 -0
- package/dist/trinityCore/rawData/CjsPerObjectLayouts.js +931 -0
- package/dist/trinityCore/rawData/CjsPerObjectLayouts.js.map +1 -0
- package/dist/trinityCore/rawData/RawData.js +294 -38
- package/dist/trinityCore/rawData/RawData.js.map +1 -1
- package/dist/trinityCore/rawData/TriPoolAllocator.js +357 -0
- package/dist/trinityCore/rawData/TriPoolAllocator.js.map +1 -0
- package/dist/utilities/Range.js +53 -0
- package/dist/utilities/Range.js.map +1 -1
- package/docs/README.md +88 -0
- package/docs/architecture.md +162 -0
- package/docs/concepts/eve-runtime-behavior.md +86 -0
- package/docs/concepts/generated-class-lifecycle.md +116 -0
- package/docs/reference/api.md +76 -0
- package/docs/reference/classes/eve-runtime.md +106 -0
- package/docs/reference/classes/trinity-core.md +26 -0
- package/docs/reference/implementation-status.md +104 -0
- package/docs/reference/main-semantic-extraction.md +104 -0
- package/package.json +33 -24
- package/dist/eve/DecalVSPerObjectData.js +0 -34
- package/dist/eve/DecalVSPerObjectData.js.map +0 -1
- package/dist/eve/EveBannerItem.js +0 -43
- package/dist/eve/EveBannerItem.js.map +0 -1
- package/dist/eve/EveBannerLight.js.map +0 -1
- package/dist/eve/EveBannerSet.js +0 -190
- package/dist/eve/EveBannerSet.js.map +0 -1
- package/dist/eve/EveBasicPerObjectData.js +0 -31
- package/dist/eve/EveBasicPerObjectData.js.map +0 -1
- package/dist/eve/EveBoosterSet2.js.map +0 -1
- package/dist/eve/EveBoosterSet2Renderable.js.map +0 -1
- package/dist/eve/EveChildSpherePinPerObjectData.js +0 -37
- package/dist/eve/EveChildSpherePinPerObjectData.js.map +0 -1
- package/dist/eve/EveHazeSet.js.map +0 -1
- package/dist/eve/EveHazeSetLight.js.map +0 -1
- package/dist/eve/EveLocator2.js.map +0 -1
- package/dist/eve/EveLocatorSets.js.map +0 -1
- package/dist/eve/EveParticleDirectForce.js.map +0 -1
- package/dist/eve/EveParticleDragForce.js.map +0 -1
- package/dist/eve/EveParticleSpring.js.map +0 -1
- package/dist/eve/EvePerObjectPSData.js +0 -29
- package/dist/eve/EvePerObjectPSData.js.map +0 -1
- package/dist/eve/EvePerObjectVSData.js +0 -29
- package/dist/eve/EvePerObjectVSData.js.map +0 -1
- package/dist/eve/EvePlaneLight.js.map +0 -1
- package/dist/eve/EvePlaneSet.js.map +0 -1
- package/dist/eve/EvePlaneSetItem.js +0 -45
- package/dist/eve/EvePlaneSetItem.js.map +0 -1
- package/dist/eve/EveSpaceObjectAttachmentUtils.js.map +0 -1
- package/dist/eve/EveSpaceObjectDecal.js +0 -150
- package/dist/eve/EveSpaceObjectDecal.js.map +0 -1
- package/dist/eve/EveSpaceObjectPSData.js +0 -73
- package/dist/eve/EveSpaceObjectPSData.js.map +0 -1
- package/dist/eve/EveSpaceObjectVSData.js +0 -79
- package/dist/eve/EveSpaceObjectVSData.js.map +0 -1
- package/dist/eve/EveSpacePerObjectData.js +0 -97
- package/dist/eve/EveSpacePerObjectData.js.map +0 -1
- package/dist/eve/EveSpherePinPerObjectData.js +0 -37
- package/dist/eve/EveSpherePinPerObjectData.js.map +0 -1
- package/dist/eve/EveSpotlightLight.js.map +0 -1
- package/dist/eve/EveSpotlightSet.js.map +0 -1
- package/dist/eve/EveSpriteLight.js.map +0 -1
- package/dist/eve/EveSpriteLineSet.js.map +0 -1
- package/dist/eve/EveSpriteLineSetItem.js.map +0 -1
- package/dist/eve/EveSpriteSet.js.map +0 -1
- package/dist/eve/EveTrailsSet.js.map +0 -1
- package/dist/eve/Locator.js.map +0 -1
- package/dist/eve/LocatorData.js.map +0 -1
- package/dist/eve/ProcessLifetimeData.js.map +0 -1
- package/dist/eve/attachment/turrets/EveTurretSetPSData.js +0 -47
- package/dist/eve/attachment/turrets/EveTurretSetPSData.js.map +0 -1
- package/dist/eve/attachment/turrets/EveTurretSetVSData.js +0 -62
- package/dist/eve/attachment/turrets/EveTurretSetVSData.js.map +0 -1
- package/dist/eve/child/behaviors/SplineTunnel.js.map +0 -1
- package/dist/eve/child/behaviors/SplineTunnelPoint.js.map +0 -1
- package/dist/eve/perObjectData/DecalPSPerObjectData.js +0 -56
- package/dist/eve/perObjectData/DecalPSPerObjectData.js.map +0 -1
- package/dist/eve/perObjectData/EveMissileWarheadPerObjectData.js +0 -31
- package/dist/eve/perObjectData/EveMissileWarheadPerObjectData.js.map +0 -1
- package/dist/eve/perObjectData/EveTurretSetPerObjectData.js +0 -36
- package/dist/eve/perObjectData/EveTurretSetPerObjectData.js.map +0 -1
- package/dist/eve/perObjectData/MergeMorphsConstantBuffer.js +0 -64
- package/dist/eve/perObjectData/MergeMorphsConstantBuffer.js.map +0 -1
- package/dist/generated/eve/EveCamera.js +0 -264
- package/dist/generated/eve/EveCamera.js.map +0 -1
- package/dist/generated/eve/EveEntity.js +0 -81
- package/dist/generated/eve/EveEntity.js.map +0 -1
- package/dist/generated/eve/attachment/decal/index.js +0 -2
- package/dist/generated/eve/attachment/decal/index.js.map +0 -1
- package/dist/generated/eve/attachment/haze/EveHazeSetItem.js +0 -52
- package/dist/generated/eve/attachment/haze/EveHazeSetItem.js.map +0 -1
- package/dist/generated/eve/attachment/haze/index.js +0 -2
- package/dist/generated/eve/attachment/haze/index.js.map +0 -1
- package/dist/generated/eve/attachment/index.js +0 -5
- package/dist/generated/eve/attachment/index.js.map +0 -1
- package/dist/generated/eve/attachment/spotlights/EveSpotlightSetItem.js +0 -55
- package/dist/generated/eve/attachment/spotlights/EveSpotlightSetItem.js.map +0 -1
- package/dist/generated/eve/attachment/spotlights/index.js +0 -2
- package/dist/generated/eve/attachment/spotlights/index.js.map +0 -1
- package/dist/generated/eve/attachment/sprites/EveSpriteSetItem.js.map +0 -1
- package/dist/generated/eve/attachment/sprites/index.js +0 -2
- package/dist/generated/eve/attachment/sprites/index.js.map +0 -1
- package/dist/generated/eve/attachment/turrets/enums.js +0 -32
- package/dist/generated/eve/attachment/turrets/enums.js.map +0 -1
- package/dist/generated/eve/attachment/turrets/index.js +0 -2
- package/dist/generated/eve/attachment/turrets/index.js.map +0 -1
- package/dist/generated/eve/child/EveChildBehaviorSystem.js +0 -357
- package/dist/generated/eve/child/EveChildBehaviorSystem.js.map +0 -1
- package/dist/generated/eve/child/EveChildBulletStorm.js.map +0 -1
- package/dist/generated/eve/child/EveChildLink.js.map +0 -1
- package/dist/generated/eve/child/EveChildSpherePin.js +0 -54
- package/dist/generated/eve/child/EveChildSpherePin.js.map +0 -1
- package/dist/generated/eve/child/behaviors/CollisionAvoidance.js +0 -85
- package/dist/generated/eve/child/behaviors/CollisionAvoidance.js.map +0 -1
- package/dist/generated/eve/child/behaviors/InclusionVolume.js +0 -104
- package/dist/generated/eve/child/behaviors/InclusionVolume.js.map +0 -1
- package/dist/generated/eve/child/behaviors/ProcessLifetime.js +0 -458
- package/dist/generated/eve/child/behaviors/ProcessLifetime.js.map +0 -1
- package/dist/generated/eve/child/behaviors/SplineTunnelGroup.js +0 -161
- package/dist/generated/eve/child/behaviors/SplineTunnelGroup.js.map +0 -1
- package/dist/generated/eve/child/behaviors/Wander.js +0 -92
- package/dist/generated/eve/child/behaviors/Wander.js.map +0 -1
- package/dist/generated/eve/child/behaviors/enums.js.map +0 -1
- package/dist/generated/eve/child/modifiers/EveChildModifierAttachToBone.js.map +0 -1
- package/dist/generated/eve/child/modifiers/EveChildModifierBillboard3D.js.map +0 -1
- package/dist/generated/eve/child/modifiers/EveChildModifierStretch.js.map +0 -1
- package/dist/generated/eve/child/modifiers/EveChildModifierTranslateWithCamera.js.map +0 -1
- package/dist/generated/eve/child/modifiers/index.js +0 -5
- package/dist/generated/eve/child/modifiers/index.js.map +0 -1
- package/dist/generated/eve/child/procedural/EveChildProceduralContainer.js.map +0 -1
- package/dist/generated/eve/child/procedural/index.js +0 -10
- package/dist/generated/eve/child/procedural/index.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodCycling.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodRandom.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/EveProceduralMethodThresholds.js.map +0 -1
- package/dist/generated/eve/child/procedural/selection/index.js +0 -9
- package/dist/generated/eve/child/procedural/selection/index.js.map +0 -1
- package/dist/generated/eve/distribution/EveBaseDistributionMethod.js.map +0 -1
- package/dist/generated/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js.map +0 -1
- package/dist/generated/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js.map +0 -1
- package/dist/generated/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js.map +0 -1
- package/dist/generated/eve/distribution/attributeModifiers/enums.js.map +0 -1
- package/dist/generated/eve/distribution/attributeModifiers/index.js +0 -5
- package/dist/generated/eve/distribution/attributeModifiers/index.js.map +0 -1
- package/dist/generated/eve/distribution/index.js +0 -19
- package/dist/generated/eve/distribution/index.js.map +0 -1
- package/dist/generated/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js.map +0 -1
- package/dist/generated/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js.map +0 -1
- package/dist/generated/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js.map +0 -1
- package/dist/generated/eve/distribution/placement/index.js +0 -4
- package/dist/generated/eve/distribution/placement/index.js.map +0 -1
- package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js.map +0 -1
- package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js.map +0 -1
- package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js.map +0 -1
- package/dist/generated/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js.map +0 -1
- package/dist/generated/eve/distribution/spawnModifiers/index.js +0 -5
- package/dist/generated/eve/distribution/spawnModifiers/index.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerBurst.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerInterval.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js.map +0 -1
- package/dist/generated/eve/distribution/spawners/index.js +0 -7
- package/dist/generated/eve/distribution/spawners/index.js.map +0 -1
- package/dist/generated/eve/effect/EveLensflare.js.map +0 -1
- package/dist/generated/eve/effect/EveMultiEffect.js +0 -84
- package/dist/generated/eve/effect/EveMultiEffect.js.map +0 -1
- package/dist/generated/eve/effect/EveMultiEffectParameter.js +0 -45
- package/dist/generated/eve/effect/EveMultiEffectParameter.js.map +0 -1
- package/dist/generated/eve/fxAttributes/EveCameraFxAttributes.js +0 -47
- package/dist/generated/eve/fxAttributes/EveCameraFxAttributes.js.map +0 -1
- package/dist/generated/eve/fxAttributes/EveSpaceObjectFxAttributes.js +0 -63
- package/dist/generated/eve/fxAttributes/EveSpaceObjectFxAttributes.js.map +0 -1
- package/dist/generated/eve/fxAttributes/index.js +0 -3
- package/dist/generated/eve/fxAttributes/index.js.map +0 -1
- package/dist/generated/eve/overlays/EveMeshOverlayEffect.js +0 -58
- package/dist/generated/eve/overlays/EveMeshOverlayEffect.js.map +0 -1
- package/dist/generated/eve/overlays/index.js +0 -2
- package/dist/generated/eve/overlays/index.js.map +0 -1
- package/dist/generated/eve/perObjectData/EveBoosterSetPerObjectData.js +0 -66
- package/dist/generated/eve/perObjectData/EveBoosterSetPerObjectData.js.map +0 -1
- package/dist/generated/eve/perObjectData/EveChildBulletStormPerObjectData.js +0 -39
- package/dist/generated/eve/perObjectData/EveChildBulletStormPerObjectData.js.map +0 -1
- package/dist/generated/eve/perObjectData/EveDecalPerObjectData.js +0 -34
- package/dist/generated/eve/perObjectData/EveDecalPerObjectData.js.map +0 -1
- package/dist/generated/eve/perObjectData/EveSceneStaticParticlesPerObjectData.js +0 -32
- package/dist/generated/eve/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +0 -1
- package/dist/generated/eve/perObjectData/index.js +0 -5
- package/dist/generated/eve/perObjectData/index.js.map +0 -1
- package/dist/generated/eve/scene/EveComponentCollection.js.map +0 -1
- package/dist/generated/eve/scene/EveComponentRegistry.js.map +0 -1
- package/dist/generated/eve/scene/EvePickingContext.js +0 -43
- package/dist/generated/eve/scene/EvePickingContext.js.map +0 -1
- package/dist/generated/eve/scene/EveSceneStaticParticles.js.map +0 -1
- package/dist/generated/eve/scene/TriShadowFrustum.js +0 -83
- package/dist/generated/eve/scene/TriShadowFrustum.js.map +0 -1
- package/dist/generated/eve/scene/TriShadowOrthoFrustum.js +0 -140
- package/dist/generated/eve/scene/TriShadowOrthoFrustum.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/enums.js.map +0 -1
- package/dist/generated/eve/smartLights/attributeModifiers/index.js +0 -9
- package/dist/generated/eve/smartLights/attributeModifiers/index.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterBindingBase.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterBool.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterColor.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterFloat.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterInt.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterString.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterVector2.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterVector3.js.map +0 -1
- package/dist/generated/eve/socket/EveSocketParameterVector4.js.map +0 -1
- package/dist/generated/eve/socket/index.js +0 -10
- package/dist/generated/eve/socket/index.js.map +0 -1
- package/dist/generated/eve/spaceObject/EvePlanet.js.map +0 -1
- package/dist/generated/eve/spaceObject/EveShip2.js.map +0 -1
- package/dist/generated/eve/spaceObject/IEveSpaceObject2.js +0 -46
- package/dist/generated/eve/spaceObject/IEveSpaceObject2.js.map +0 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarmRenderable.js.map +0 -1
- package/dist/generated/eve/ui/EveLineSet.js.map +0 -1
- package/dist/generated/eve/ui/EveSpherePin.js.map +0 -1
- package/dist/generated/eve/ui/EveTacticalOverlayTrackObject.js +0 -44
- package/dist/generated/eve/ui/EveTacticalOverlayTrackObject.js.map +0 -1
- package/dist/generated/eve/ui/EveTacticalTrails.js.map +0 -1
- package/dist/generated/trinityCore/Tr2DynamicBinding.js +0 -58
- package/dist/generated/trinityCore/Tr2DynamicBinding.js.map +0 -1
- package/dist/generated/trinityCore/Tr2ExternalParameter.js +0 -164
- package/dist/generated/trinityCore/Tr2ExternalParameter.js.map +0 -1
- package/dist/generated/trinityCore/Tr2GrannyAnimation.js.map +0 -1
- package/dist/generated/trinityCore/Tr2ShLightingManager.js +0 -48
- package/dist/generated/trinityCore/Tr2ShLightingManager.js.map +0 -1
- package/dist/generated/trinityCore/TriValueBinding.js +0 -249
- package/dist/generated/trinityCore/TriValueBinding.js.map +0 -1
- package/dist/shader/Tr2Shader.js +0 -150
- package/dist/shader/Tr2Shader.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectConstant.js +0 -61
- package/dist/shader/reflection/Tr2EffectConstant.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectDefine.js +0 -34
- package/dist/shader/reflection/Tr2EffectDefine.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectDescription.js +0 -34
- package/dist/shader/reflection/Tr2EffectDescription.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectLibrary.js +0 -61
- package/dist/shader/reflection/Tr2EffectLibrary.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectParameterAnnotation.js +0 -54
- package/dist/shader/reflection/Tr2EffectParameterAnnotation.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectResource.js +0 -63
- package/dist/shader/reflection/Tr2EffectResource.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectStageInput.js +0 -58
- package/dist/shader/reflection/Tr2EffectStageInput.js.map +0 -1
- package/dist/shader/reflection/Tr2EffectTechnique.js +0 -40
- package/dist/shader/reflection/Tr2EffectTechnique.js.map +0 -1
- package/dist/shader/reflection/Tr2Pass.js +0 -46
- package/dist/shader/reflection/Tr2Pass.js.map +0 -1
- package/dist/shader/sampler/Tr2SamplerSetup.js +0 -34
- package/dist/shader/sampler/Tr2SamplerSetup.js.map +0 -1
- package/dist/trinityCore/Tr2BindingVector3.js.map +0 -1
- package/dist/trinityCore/Tr2PyValueBinding.js.map +0 -1
- package/dist/trinityCore/rawData/RawDataStore.js +0 -232
- package/dist/trinityCore/rawData/RawDataStore.js.map +0 -1
- /package/dist/{generated/eve → eve}/distribution/attributeModifiers/enums.js +0 -0
- /package/dist/{generated/eve → eve}/smartLights/attributeModifiers/enums.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveChildInstancedMeshes.js","sources":["../../../../src/eve/child/EveChildInstancedMeshes.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildInstancedMeshes.h\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildInstancedMeshes.cpp\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildInstancedMeshes_Blue.cpp\r\nimport { mat4 } from \"@carbonenginejs/runtime-utils/mat4\";\r\nimport { vec3 } from \"@carbonenginejs/runtime-utils/vec3\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\nimport { carbon, impl, io, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { EveEntity } from \"../../generated/eve/EveEntity.js\";\r\nimport { EveComponentType, ShouldReflect } from \"../EveComponentTypes.js\";\r\n\r\n/** Carbon EveInstancedMeshManager::InstanceFlags (EveInstancedMeshManager.h:\r\n * 13-26, cpp:998-1048): a uint32 bitfield - bit (1 << batchType) per present\r\n * batch type, CASTS_SHADOW = 1 << 30, RENDER_IN_REFLECTION = 1 << 31. */\r\nexport const INSTANCE_FLAG_CASTS_SHADOW = 0x40000000;\r\nexport const INSTANCE_FLAG_RENDER_IN_REFLECTION = 0x80000000;\r\n\r\nconst POSITION_SCRATCH = vec3.create();\r\n\r\n\r\n@type.define({ className: \"EveChildInstancedMeshArea\", family: \"eve/child\" })\r\nexport class EveChildInstancedMeshArea extends CjsModel\r\n{\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.objectRef(\"Tr2Effect\")\r\n effect = null;\r\n\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.uint32\r\n batchType = 0;\r\n\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.uint32\r\n areaIndex = 0;\r\n\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.uint32\r\n areaCount = 1;\r\n\r\n @io.read\r\n @type.float32\r\n effectHash = 0;\r\n\r\n /** Carbon MeshArea::meshGroupHandle (EveChildInstancedMeshes.h:72) - the\r\n * manager registration handle; runtime state, not persisted. Truthy handles\r\n * carry .owner for the removal routing (EveInstancedMeshManager.h:41-72). */\r\n meshGroupHandle = null;\r\n}\r\n\r\n\r\n@type.define({ className: \"EveChildInstancedMeshInstance\", family: \"eve/child\" })\r\nexport class EveChildInstancedMeshInstance extends CjsModel\r\n{\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.mat4\r\n transform = mat4.create();\r\n\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.uint32\r\n sphereIndex = 0;\r\n}\r\n\r\n\r\n@type.define({ className: \"EveChildInstancedMesh\", family: \"eve/child\" })\r\nexport class EveChildInstancedMesh extends CjsModel\r\n{\r\n @io.persist\r\n @type.string\r\n geometryPath = \"\";\r\n\r\n @io.persist\r\n @type.boolean\r\n castsShadow = false;\r\n\r\n @io.persist\r\n @type.int32\r\n reflectionMode = 3;\r\n\r\n @io.persist\r\n @type.uint32\r\n meshIndex = 0;\r\n\r\n @io.persist\r\n @type.list(\"EveChildInstancedMeshArea\")\r\n areas = [];\r\n\r\n @io.persist\r\n @type.list(\"EveChildInstancedMeshInstance\")\r\n instances = [];\r\n\r\n @io.persist\r\n @type.string\r\n sofHullName = \"\";\r\n\r\n @io.persist\r\n @type.string\r\n sofLocatorSetName = \"\";\r\n\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n /** Carbon Mesh::sphereHandle (h:110) - manager registration handle;\r\n * runtime state, not persisted. */\r\n sphereHandle = null;\r\n\r\n /** Carbon Mesh::worldBoundingSphere - stamped by UpdateAsyncronous\r\n * (cpp:270); the TriFrustum sphere-duck shape. */\r\n worldBoundingSphere = { center: vec3.create(), radius: 0 };\r\n\r\n /** Carbon Mesh::instanceSpheres - per-instance world cull spheres, stamped\r\n * by UpdateAsyncronous (cpp:259-269). */\r\n instanceSpheres = [];\r\n\r\n /** Carbon Mesh::flags (InstanceFlags uint32) - batch-type bits stamped at\r\n * AddMesh (cpp:422-425), CASTS_SHADOW at AddMesh (cpp:418-421),\r\n * RENDER_IN_REFLECTION refreshed each async pass (cpp:251). */\r\n flags = 0;\r\n\r\n #geometry = null;\r\n\r\n GetGeometryResource()\r\n {\r\n return this.#geometry;\r\n }\r\n\r\n SetGeometryResource(resource)\r\n {\r\n this.#geometry = resource ?? null;\r\n }\r\n}\r\n\r\n\r\n@type.define({ className: \"EveChildInstancedMeshes\", family: \"eve/child\" })\r\nexport class EveChildInstancedMeshes extends EveEntity\r\n{\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n @io.read\r\n @type.mat4\r\n worldTransform = mat4.create();\r\n\r\n @io.read\r\n @type.boolean\r\n hasUpdated = false;\r\n\r\n @io.persist\r\n @type.list(\"EveChildInstancedMesh\")\r\n meshes = [];\r\n\r\n #revision = 0;\r\n\r\n /** Carbon m_perObjectDataHandle (h:143) - manager registration handle. */\r\n #perObjectDataHandle = null;\r\n\r\n /** Carbon m_allRegistered (h:147) - the AddMeshesToManager retry latch:\r\n * set optimistically each pass, cleared by ANY not-ready mesh/area so the\r\n * per-frame CollectMeshes retries until geometry streams in. */\r\n #allRegistered = false;\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetName()\r\n {\r\n return this.name;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetName(name)\r\n {\r\n this.name = String(name ?? \"\");\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n UpdateVisibility()\r\n {\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetRenderables(renderables = [])\r\n {\r\n return renderables;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphere()\r\n {\r\n return false;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n UpdateSyncronous(_updateContext, params)\r\n {\r\n if (params?.localToWorldTransform?.length === 16)\r\n {\r\n mat4.copy(this.worldTransform, params.localToWorldTransform);\r\n }\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::UpdateAsyncronous (cpp:202-328), the CPU\r\n * half: per-mesh RENDER_IN_REFLECTION refresh (cpp:251), the mesh-local\r\n * bounds sphere radius = |center| + radius (cpp:254-255), per-instance\r\n * world cull spheres - position from the instance translation (Carbon reads\r\n * the packed rows' w = _41.._43, i.e. the transform translation) moved\r\n * through the child world transform, radius scaled by the instance's max\r\n * basis length times the child worldScale (cpp:259-269; NOTE Carbon's two\r\n * scale extractions deliberately differ - worldScale uses the world\r\n * transform's basis ROWS while the instance scale uses the packed rows'\r\n * xyz = the transpose's rows; equal under rotation + uniform scale,\r\n * ported exactly) - the world bounding sphere over all instance spheres\r\n * (cpp:257-270), a live SetSphereGroupBounds refresh on registered handles\r\n * (cpp:272-278), and the hasUpdated stamp (cpp:281). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The EveSpaceObjectVS/PSData per-object constant copy (cpp:204-238) and the raytracing mesh build (cpp:283-327) are engine-owned; mesh bounds come from a GetMeshData duck ({minBounds, maxBounds}) and meshes without one are skipped fail-closed.\")\r\n UpdateAsyncronous(_updateContext, _params)\r\n {\r\n const w = this.worldTransform;\r\n // cpp:240-242 - worldScale from the world transform's basis rows.\r\n const worldScale = Math.max(\r\n Math.hypot(w[0], w[1], w[2]),\r\n Math.hypot(w[4], w[5], w[6]),\r\n Math.hypot(w[8], w[9], w[10])\r\n );\r\n\r\n for (const mesh of this.meshes)\r\n {\r\n const geometry = mesh.GetGeometryResource();\r\n if (!geometry || geometry.IsGood?.() === false)\r\n {\r\n continue;\r\n }\r\n\r\n // cpp:251 - refreshed every pass (set OR cleared).\r\n mesh.flags = ShouldReflect(mesh.reflectionMode)\r\n ? (mesh.flags | INSTANCE_FLAG_RENDER_IN_REFLECTION) >>> 0\r\n : (mesh.flags & ~INSTANCE_FLAG_RENDER_IN_REFLECTION) >>> 0;\r\n\r\n const meshData = geometry.GetMeshData?.(mesh.meshIndex);\r\n const minBounds = meshData?.minBounds ?? meshData?.m_minBounds;\r\n const maxBounds = meshData?.maxBounds ?? meshData?.m_maxBounds;\r\n if (!minBounds || !maxBounds)\r\n {\r\n continue;\r\n }\r\n // cpp:254-255 - Sphere(AABB): center (min+max)/2, radius |max-min|/2;\r\n // then radius = sphere.radius + |sphere.center| (origin-inclusive).\r\n const centerX = (minBounds[0] + maxBounds[0]) * 0.5;\r\n const centerY = (minBounds[1] + maxBounds[1]) * 0.5;\r\n const centerZ = (minBounds[2] + maxBounds[2]) * 0.5;\r\n const localRadius =\r\n Math.hypot(maxBounds[0] - minBounds[0], maxBounds[1] - minBounds[1], maxBounds[2] - minBounds[2]) * 0.5 +\r\n Math.hypot(centerX, centerY, centerZ);\r\n\r\n mesh.instanceSpheres.length = mesh.instances.length;\r\n let boundsMinX = Infinity, boundsMinY = Infinity, boundsMinZ = Infinity;\r\n let boundsMaxX = -Infinity, boundsMaxY = -Infinity, boundsMaxZ = -Infinity;\r\n for (let index = 0; index < mesh.instances.length; index++)\r\n {\r\n const transform = mesh.instances[index].transform;\r\n // cpp:261 - packed rows' w = the transform translation (gl [12..14]).\r\n POSITION_SCRATCH[0] = transform[12];\r\n POSITION_SCRATCH[1] = transform[13];\r\n POSITION_SCRATCH[2] = transform[14];\r\n // cpp:262-264 - instance scale from the packed rows' xyz (the\r\n // transpose's rows: gl (t[0],t[4],t[8]) / (t[1],t[5],t[9]) /\r\n // (t[2],t[6],t[10])) - deliberately NOT the same extraction as\r\n // worldScale above.\r\n const scale = Math.max(\r\n Math.hypot(transform[0], transform[4], transform[8]),\r\n Math.hypot(transform[1], transform[5], transform[9]),\r\n Math.hypot(transform[2], transform[6], transform[10])\r\n ) * worldScale;\r\n vec3.transformMat4(POSITION_SCRATCH, POSITION_SCRATCH, w);\r\n\r\n const radius = localRadius * scale;\r\n const sphere = mesh.instanceSpheres[index] ??= { center: vec3.create(), radius: 0 };\r\n vec3.copy(sphere.center, POSITION_SCRATCH);\r\n sphere.radius = radius;\r\n\r\n boundsMinX = Math.min(boundsMinX, POSITION_SCRATCH[0] - radius);\r\n boundsMinY = Math.min(boundsMinY, POSITION_SCRATCH[1] - radius);\r\n boundsMinZ = Math.min(boundsMinZ, POSITION_SCRATCH[2] - radius);\r\n boundsMaxX = Math.max(boundsMaxX, POSITION_SCRATCH[0] + radius);\r\n boundsMaxY = Math.max(boundsMaxY, POSITION_SCRATCH[1] + radius);\r\n boundsMaxZ = Math.max(boundsMaxZ, POSITION_SCRATCH[2] + radius);\r\n }\r\n if (mesh.instances.length)\r\n {\r\n // cpp:270 - Sphere(worldBounds).\r\n const sphereCenter = mesh.worldBoundingSphere.center;\r\n sphereCenter[0] = (boundsMinX + boundsMaxX) * 0.5;\r\n sphereCenter[1] = (boundsMinY + boundsMaxY) * 0.5;\r\n sphereCenter[2] = (boundsMinZ + boundsMaxZ) * 0.5;\r\n mesh.worldBoundingSphere.radius =\r\n Math.hypot(boundsMaxX - boundsMinX, boundsMaxY - boundsMinY, boundsMaxZ - boundsMinZ) * 0.5;\r\n\r\n // cpp:272-278 - live refresh of a registered sphere group.\r\n if (mesh.sphereHandle)\r\n {\r\n mesh.sphereHandle.owner?.SetSphereGroupBounds?.(mesh.sphereHandle, mesh.worldBoundingSphere, mesh.flags);\r\n }\r\n }\r\n }\r\n\r\n this.hasUpdated = true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetLocalToWorldTransform(out = null)\r\n {\r\n if (out)\r\n {\r\n return mat4.copy(out, this.worldTransform);\r\n }\r\n return this.worldTransform;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n Setup()\r\n {\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n ChangeLOD()\r\n {\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n SetOrigin()\r\n {\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n IsAlwaysOn()\r\n {\r\n return false;\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::SetShaderOption (cpp:343-359): flips the\r\n * option and refreshes the effect hash on every area, then removes any\r\n * registered mesh-group handle and clears the latch - so the groups\r\n * re-register with the NEW effectHash on the next AddMeshesToManager pass.\r\n * Sphere/per-object handles deliberately stay registered. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon dereferences area.effect unguarded; the JS option write is optional-chained. Handle removal + latch clear are ported.\")\r\n SetShaderOption(name, value)\r\n {\r\n for (const mesh of this.meshes)\r\n {\r\n for (const area of mesh.areas)\r\n {\r\n area.effect?.SetOption?.(name, value);\r\n area.effectHash = EveChildInstancedMeshes.#GetEffectHash(area.effect);\r\n if (area.meshGroupHandle)\r\n {\r\n area.meshGroupHandle.owner?.RemoveMeshGroup?.(area.meshGroupHandle);\r\n area.meshGroupHandle = null;\r\n this.#allRegistered = false;\r\n }\r\n }\r\n }\r\n this.#revision++;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n AddMesh(\r\n geometryPath,\r\n castsShadow,\r\n reflectionMode,\r\n meshIndex,\r\n areas,\r\n instanceTransforms,\r\n sofHullName = \"\",\r\n sofLocatorSetName = \"\"\r\n )\r\n {\r\n const sourceAreas = Array.from(areas ?? []);\r\n const sourceTransforms = Array.from(instanceTransforms ?? []);\r\n if (!sourceAreas.length || !sourceTransforms.length)\r\n {\r\n return false;\r\n }\r\n\r\n const normalizedAreas = sourceAreas.map(area => EveChildInstancedMeshes.#CreateArea(area));\r\n const instances = sourceTransforms.map((transform, sphereIndex) =>\r\n {\r\n if (!transform || transform.length !== 16)\r\n {\r\n throw new TypeError(\"EveChildInstancedMeshes instance transforms must contain 16 values\");\r\n }\r\n const instance = new EveChildInstancedMeshInstance();\r\n mat4.copy(instance.transform, transform);\r\n instance.sphereIndex = sphereIndex;\r\n return instance;\r\n });\r\n\r\n const mesh = new EveChildInstancedMesh();\r\n mesh.geometryPath = String(geometryPath ?? \"\");\r\n mesh.castsShadow = !!castsShadow;\r\n mesh.reflectionMode = reflectionMode === undefined ? 3 : Number(reflectionMode) | 0;\r\n mesh.meshIndex = Number(meshIndex) >>> 0;\r\n mesh.areas = normalizedAreas;\r\n mesh.instances = instances;\r\n mesh.sofHullName = String(sofHullName ?? \"\");\r\n mesh.sofLocatorSetName = String(sofLocatorSetName ?? \"\");\r\n // Carbon (cpp:418-425): the CASTS_SHADOW flag and one bit per area batch\r\n // type are stamped at add time; RENDER_IN_REFLECTION is refreshed each\r\n // async pass. cpp:428 clears the registration latch.\r\n if (mesh.castsShadow)\r\n {\r\n mesh.flags = (mesh.flags | INSTANCE_FLAG_CASTS_SHADOW) >>> 0;\r\n }\r\n for (const area of mesh.areas)\r\n {\r\n mesh.flags = (mesh.flags | (1 << area.batchType)) >>> 0;\r\n }\r\n this.meshes.push(mesh);\r\n this.#allRegistered = false;\r\n this.#revision++;\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n Clear()\r\n {\r\n this.meshes.length = 0;\r\n this.hasUpdated = false;\r\n this.#revision++;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetSofSourceLocator(areaId)\r\n {\r\n const value = Number(areaId) >>> 0;\r\n const mesh = this.meshes[value >>> 16];\r\n if (!mesh || !mesh.sofHullName)\r\n {\r\n return null;\r\n }\r\n return [mesh.sofHullName, mesh.sofLocatorSetName, value & 0xffff];\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetMeshCount()\r\n {\r\n return this.meshes.length;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n GetMeshInfo(meshId)\r\n {\r\n const mesh = EveChildInstancedMeshes.#GetMesh(this.meshes, meshId);\r\n return [\r\n mesh.geometryPath,\r\n mesh.GetGeometryResource(),\r\n mesh.meshIndex,\r\n mesh.castsShadow,\r\n mesh.reflectionMode,\r\n mesh.areas.length,\r\n mesh.instances.length\r\n ];\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n GetAreaInfo(meshId, areaId)\r\n {\r\n const mesh = EveChildInstancedMeshes.#GetMesh(this.meshes, meshId);\r\n const index = Number(areaId) >>> 0;\r\n if (index >= mesh.areas.length)\r\n {\r\n throw new RangeError(`EveChildInstancedMeshes area index ${index} is out of range`);\r\n }\r\n const area = mesh.areas[index];\r\n return [area.effect, area.batchType, area.areaIndex, area.areaCount];\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n GetMeshDisplay(meshId)\r\n {\r\n return EveChildInstancedMeshes.#GetMesh(this.meshes, meshId).display;\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::SetMeshDisplay (cpp:663-691): a toggle\r\n * clears the latch; turning a mesh OFF eagerly removes its sphere and\r\n * mesh-group handles - which is why AddMeshesToManager's display-off skip\r\n * does NOT clear the latch (the handles are already gone). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Handle invalidation after removal is explicit (Carbon's DataHandle is invalidated by the manager by reference).\")\r\n SetMeshDisplay(meshId, display)\r\n {\r\n const mesh = EveChildInstancedMeshes.#GetMesh(this.meshes, meshId);\r\n const next = !!display;\r\n if (mesh.display !== next)\r\n {\r\n mesh.display = next;\r\n this.#allRegistered = false;\r\n if (!next)\r\n {\r\n if (mesh.sphereHandle)\r\n {\r\n mesh.sphereHandle.owner?.RemoveBoundingSphereGroup?.(mesh.sphereHandle);\r\n mesh.sphereHandle = null;\r\n }\r\n for (const area of mesh.areas)\r\n {\r\n if (area.meshGroupHandle)\r\n {\r\n area.meshGroupHandle.owner?.RemoveMeshGroup?.(area.meshGroupHandle);\r\n area.meshGroupHandle = null;\r\n }\r\n }\r\n }\r\n this.#revision++;\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n SetGeometryResource(meshId, geometry)\r\n {\r\n const mesh = EveChildInstancedMeshes.#GetMesh(this.meshes, meshId);\r\n if (mesh.GetGeometryResource() !== geometry)\r\n {\r\n mesh.SetGeometryResource(geometry);\r\n this.#revision++;\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n GetMeshData(meshId)\r\n {\r\n const mesh = EveChildInstancedMeshes.#GetMesh(this.meshes, meshId);\r\n return EveChildInstancedMeshes.#CloneMesh(mesh);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetRevision()\r\n {\r\n return this.#revision;\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::RegisterComponents (cpp:36-43):\r\n * unconditional InstancedMeshProvider + ShadowCaster leaf\r\n * self-registration. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n registry.RegisterComponent(EveComponentType.InstancedMeshProvider, this);\r\n registry.RegisterComponent(EveComponentType.ShadowCaster, this);\r\n }\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::UnRegisterComponents (cpp:45-48) only\r\n * calls UnregisterFromMeshManager; own components were already removed by\r\n * EveEntity::UnRegister (EveEntity.cpp:90). */\r\n @carbon.method\r\n @impl.implemented\r\n UnRegisterComponents()\r\n {\r\n this.UnregisterFromMeshManager();\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::UnregisterFromMeshManager (cpp:50-71):\r\n * every registered mesh-group / sphere-group / per-object handle is removed\r\n * through ITS OWN handle.owner (handles may span managers after a switch),\r\n * then the latch clears. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Handle invalidation after removal is explicit (Carbon's DataHandle is invalidated by the manager by reference).\")\r\n UnregisterFromMeshManager()\r\n {\r\n for (const mesh of this.meshes)\r\n {\r\n for (const area of mesh.areas)\r\n {\r\n if (area.meshGroupHandle)\r\n {\r\n area.meshGroupHandle.owner?.RemoveMeshGroup?.(area.meshGroupHandle);\r\n area.meshGroupHandle = null;\r\n }\r\n }\r\n if (mesh.sphereHandle)\r\n {\r\n mesh.sphereHandle.owner?.RemoveBoundingSphereGroup?.(mesh.sphereHandle);\r\n mesh.sphereHandle = null;\r\n }\r\n }\r\n if (this.#perObjectDataHandle)\r\n {\r\n this.#perObjectDataHandle.owner?.RemovePerObjectData?.(this.#perObjectDataHandle);\r\n this.#perObjectDataHandle = null;\r\n }\r\n this.#allRegistered = false;\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::AddMeshesToManager (cpp:472-553), the\r\n * InstancedMeshProvider entry the engine's CollectMeshes drives\r\n * (EveInstancedMeshManager.cpp:45-56; scene EveSpaceScene.cpp:1516).\r\n * Contract quirks preserved: nothing registers before the first update\r\n * pass (cpp:474); switching managers tears EVERYTHING down BEFORE the\r\n * latch early-out (cpp:478-481); the latch is set optimistically and\r\n * cleared by ANY not-ready mesh/area so the per-frame caller retries until\r\n * geometry streams in - EXCEPT display-off meshes, which skip WITHOUT\r\n * clearing it (their handles were already removed by SetMeshDisplay);\r\n * handles are add-once (partial re-registration after SetShaderOption /\r\n * display toggles); an area-level effect failure clears the latch while\r\n * the mesh's sphere group STAYS registered (Carbon's asymmetry);\r\n * pickingOwnerIndex is the mesh ordinal (pairs with GetSofSourceLocator's\r\n * meshIndex<<16 decode). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The manager is an injected engine duck returning handles (out-params become returns; .owner is stamped when the duck omits it); Carbon's combinedVertexDeclaration gate (cpp:499, a D3D declaration handle rebuilt in RebuildCachedData cpp:435-457) reduces to geometry presence + IsGood, and the declaration argument is passed as 0 for the engine to rebuild; GetRawRoot() becomes the object itself as picking owner.\")\r\n AddMeshesToManager(manager)\r\n {\r\n if (!this.hasUpdated)\r\n {\r\n return;\r\n }\r\n if (this.#perObjectDataHandle && this.#perObjectDataHandle.owner !== manager)\r\n {\r\n this.UnregisterFromMeshManager();\r\n }\r\n if (this.#allRegistered)\r\n {\r\n return;\r\n }\r\n\r\n if (!this.#perObjectDataHandle)\r\n {\r\n const handle = manager?.AddPerObjectData?.(this) ?? null;\r\n if (handle && typeof handle === \"object\" && !handle.owner)\r\n {\r\n handle.owner = manager;\r\n }\r\n this.#perObjectDataHandle = handle;\r\n }\r\n\r\n this.#allRegistered = true;\r\n for (let meshIndex = 0; meshIndex < this.meshes.length; meshIndex++)\r\n {\r\n const mesh = this.meshes[meshIndex];\r\n if (!mesh.display)\r\n {\r\n continue;\r\n }\r\n const geometry = mesh.GetGeometryResource();\r\n if (!geometry || geometry.IsGood?.() === false)\r\n {\r\n this.#allRegistered = false;\r\n continue;\r\n }\r\n if (!mesh.instances.length)\r\n {\r\n this.#allRegistered = false;\r\n continue;\r\n }\r\n if (mesh.instances.length !== mesh.instanceSpheres.length)\r\n {\r\n this.#allRegistered = false;\r\n continue;\r\n }\r\n\r\n if (!mesh.sphereHandle)\r\n {\r\n const handle = manager?.AddBoundingSphereGroup?.(\r\n mesh.worldBoundingSphere,\r\n mesh.flags,\r\n mesh.instanceSpheres,\r\n mesh.instanceSpheres.length\r\n ) ?? null;\r\n if (handle && typeof handle === \"object\" && !handle.owner)\r\n {\r\n handle.owner = manager;\r\n }\r\n mesh.sphereHandle = handle;\r\n }\r\n\r\n for (const area of mesh.areas)\r\n {\r\n if (area.meshGroupHandle)\r\n {\r\n continue;\r\n }\r\n if (!area.effect)\r\n {\r\n this.#allRegistered = false;\r\n continue;\r\n }\r\n const handle = manager?.AddMeshGroup?.(\r\n geometry,\r\n 0,\r\n area.batchType,\r\n mesh.meshIndex,\r\n area.areaIndex,\r\n area.areaCount,\r\n area.effect,\r\n area.effectHash,\r\n this.#perObjectDataHandle,\r\n mesh.sphereHandle,\r\n mesh.instances,\r\n mesh.instances.length,\r\n this,\r\n meshIndex\r\n ) ?? null;\r\n if (handle && typeof handle === \"object\" && !handle.owner)\r\n {\r\n handle.owner = manager;\r\n }\r\n area.meshGroupHandle = handle;\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::IsCastingShadow (cpp:73-76) always\r\n * returns false (instanced shadows cull per instance group); presence\r\n * satisfies the \"ShadowCaster\" duck contract. */\r\n @carbon.method\r\n @impl.implemented\r\n IsCastingShadow(..._args)\r\n {\r\n return false;\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::GetShadowBatches (cpp:78-80) is an\r\n * intentional no-op (the instanced mesh manager emits the batches). */\r\n @carbon.method\r\n @impl.noop\r\n GetShadowBatches(..._args)\r\n {\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::GetShadowPerObjectData (cpp:82-85)\r\n * returns null (per-object data flows through the mesh manager). */\r\n @carbon.method\r\n @impl.implemented\r\n GetShadowPerObjectData(..._args)\r\n {\r\n return null;\r\n }\r\n\r\n static #GetMesh(meshes, meshId)\r\n {\r\n const index = Number(meshId) >>> 0;\r\n if (index >= meshes.length)\r\n {\r\n throw new RangeError(`EveChildInstancedMeshes mesh index ${index} is out of range`);\r\n }\r\n return meshes[index];\r\n }\r\n\r\n static #CreateArea(value)\r\n {\r\n const source = value ?? {};\r\n const area = new EveChildInstancedMeshArea();\r\n area.effect = source.effect ?? null;\r\n area.batchType = Number(source.batchType) >>> 0;\r\n area.areaIndex = Number(source.areaIndex) >>> 0;\r\n area.areaCount = source.areaCount === undefined ? 1 : Number(source.areaCount) >>> 0;\r\n area.effectHash = EveChildInstancedMeshes.#GetEffectHash(area.effect);\r\n return area;\r\n }\r\n\r\n static #CloneMesh(mesh)\r\n {\r\n return {\r\n geometryPath: mesh.geometryPath,\r\n geometry: mesh.GetGeometryResource(),\r\n castsShadow: mesh.castsShadow,\r\n reflectionMode: mesh.reflectionMode,\r\n meshIndex: mesh.meshIndex,\r\n areas: mesh.areas.map(area => ({ ...area })),\r\n instances: mesh.instances.map(instance => ({\r\n transform: mat4.clone(instance.transform),\r\n sphereIndex: instance.sphereIndex\r\n })),\r\n sofHullName: mesh.sofHullName,\r\n sofLocatorSetName: mesh.sofLocatorSetName,\r\n display: mesh.display\r\n };\r\n }\r\n\r\n static #GetEffectHash(effect)\r\n {\r\n const hash = effect?.GetHashValue?.() ?? effect?.hash ?? 0;\r\n return Number(hash) || 0;\r\n }\r\n\r\n}\r\n"],"names":["INSTANCE_FLAG_CASTS_SHADOW","INSTANCE_FLAG_RENDER_IN_REFLECTION","POSITION_SCRATCH","vec3","create","_EveChildInstancedMes","EveChildInstancedMeshArea","CjsModel","e","_init_effect","_init_extra_effect","_init_batchType","_init_extra_batchType","_init_areaIndex","_init_extra_areaIndex","_init_areaCount","_init_extra_areaCount","_init_effectHash","_init_extra_effectHash","c","_initClass","_applyDecs","type","define","className","family","io","rebuild","persist","objectRef","uint32","read","float32","effect","batchType","areaIndex","areaCount","effectHash","meshGroupHandle","_EveChildInstancedMes2","EveChildInstancedMeshInstance","_init_transform","_init_extra_transform","_init_sphereIndex","_init_extra_sphereIndex","_initClass2","mat4","constructor","args","transform","sphereIndex","_EveChildInstancedMes3","EveChildInstancedMesh","_init_geometryPath","_init_extra_geometryPath","_init_castsShadow","_init_extra_castsShadow","_init_reflectionMode","_init_extra_reflectionMode","_init_meshIndex","_init_extra_meshIndex","_init_areas","_init_extra_areas","_init_instances","_init_extra_instances","_init_sofHullName","_init_extra_sofHullName","_init_sofLocatorSetName","_init_extra_sofLocatorSetName","_init_display","_init_extra_display","_initClass3","string","boolean","int32","list","geometryPath","castsShadow","reflectionMode","meshIndex","areas","instances","sofHullName","sofLocatorSetName","display","sphereHandle","worldBoundingSphere","center","radius","instanceSpheres","flags","GetGeometryResource","SetGeometryResource","resource","_EveChildInstancedMes4","_identity","EveChildInstancedMeshes","EveEntity","_init_name","_init_extra_name","_init_worldTransform","_init_extra_worldTransform","_init_hasUpdated","_init_extra_hasUpdated","_init_meshes","_init_extra_meshes","_initProto","_initClass4","carbon","method","impl","implemented","adapted","reason","noop","name","worldTransform","hasUpdated","meshes","GetName","SetName","String","UpdateVisibility","GetRenderables","renderables","GetBoundingSphere","UpdateSyncronous","_updateContext","params","localToWorldTransform","length","copy","UpdateAsyncronous","_params","w","worldScale","Math","max","hypot","mesh","geometry","IsGood","ShouldReflect","meshData","GetMeshData","minBounds","m_minBounds","maxBounds","m_maxBounds","centerX","centerY","centerZ","localRadius","boundsMinX","Infinity","boundsMinY","boundsMinZ","boundsMaxX","boundsMaxY","boundsMaxZ","index","scale","transformMat4","sphere","min","sphereCenter","owner","SetSphereGroupBounds","GetLocalToWorldTransform","out","Setup","ChangeLOD","SetOrigin","IsAlwaysOn","SetShaderOption","value","area","SetOption","RemoveMeshGroup","AddMesh","instanceTransforms","sourceAreas","Array","from","sourceTransforms","normalizedAreas","map","TypeError","instance","undefined","Number","push","Clear","GetSofSourceLocator","areaId","GetMeshCount","GetMeshInfo","meshId","GetAreaInfo","RangeError","GetMeshDisplay","SetMeshDisplay","next","RemoveBoundingSphereGroup","GetRevision","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","InstancedMeshProvider","ShadowCaster","UnRegisterComponents","UnregisterFromMeshManager","RemovePerObjectData","AddMeshesToManager","manager","handle","AddPerObjectData","AddBoundingSphereGroup","AddMeshGroup","IsCastingShadow","_args","GetShadowBatches","GetShadowPerObjectData","#GetMesh","#CreateArea","source","#CloneMesh","clone","#GetEffectHash","hash","GetHashValue"],"mappings":";;;;;;;;;;AAUA;AACA;AACA;AACO,MAAMA,0BAA0B,GAAG;AACnC,MAAMC,kCAAkC,GAAG;AAElD,MAAMC,gBAAgB,GAAGC,IAAI,CAACC,MAAM,EAAE;AAAC,IAAAC;AAGvC,MAAAC,yBAAA,SAC+CC,QAAQ,CACvD;AAAA,EAAA;AAAA,IAAA,CAAA;AAAAC,MAAAA,CAAA,GAAAC,YAAA,EAAAC,kBAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,gBAAA,EAAAC,sBAAA,CAAA;MAAAC,CAAA,EAAA,CAAAd,qBAAA,EAAAe,UAAA;AAAA,KAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,MAAAA,SAAS,EAAE,2BAA2B;AAAEC,MAAAA,MAAM,EAAE;AAAY,KAAC,CAAC,CAAA,EAAA,CAAA,CAAA,CAAA,MAAA,EAG1EC,EAAE,CAACC,OAAO,CAAC,gBAAgB,CAAC,EAC5BD,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACO,SAAS,CAAC,WAAW,CAAC,4BAG3BH,EAAE,CAACC,OAAO,CAAC,gBAAgB,CAAC,EAC5BD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACQ,MAAM,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,MAAA,EAGXJ,EAAE,CAACC,OAAO,CAAC,gBAAgB,CAAC,EAC5BD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACQ,MAAM,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,MAAA,EAGXJ,EAAE,CAACC,OAAO,CAAC,gBAAgB,CAAC,EAC5BD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACQ,MAAM,uBAGXJ,EAAE,EAAFA,EAAE,CAACK,IAAI,EACPT,IAAI,EAAJA,IAAI,CAACU,OAAO,kCAvBgCzB,QAAQ,CAAA;AAAA;EAKrD0B,MAAM,GAAAxB,YAAA,CAAA,IAAA,EAAG,IAAI,CAAA;AAKbyB,EAAAA,SAAS,IAAAxB,kBAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,CAAC,CAAA;AAKbwB,EAAAA,SAAS,IAAAvB,qBAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,CAAC,CAAA;AAKbuB,EAAAA,SAAS,IAAAtB,qBAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,CAAC,CAAA;AAIbsB,EAAAA,UAAU,IAAArB,qBAAA,CAAA,IAAA,CAAA,EAAAC,gBAAA,OAAG,CAAC,CAAA;;AAEd;AACF;AACA;EACEqB,eAAe,IAAApB,sBAAA,CAAA,IAAA,CAAA,EAAG,IAAI;AAAC,EAAA;IAAAE,UAAA,EAAA;AAAA;AACzB;AAAC,IAAAmB;AAGD,MAAAC,6BAAA,SACmDjC,QAAQ,CAC3D;AAAA,EAAA;AAAA,IAAA,CAAA;AAAAC,MAAAA,CAAA,GAAAiC,eAAA,EAAAC,qBAAA,EAAAC,iBAAA,EAAAC,uBAAA,CAAA;MAAAzB,CAAA,EAAA,CAAAoB,sBAAA,EAAAM,WAAA;AAAA,KAAA,GAAAxB,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,MAAAA,SAAS,EAAE,+BAA+B;AAAEC,MAAAA,MAAM,EAAE;AAAY,KAAC,CAAC,CAAA,EAAA,CAAA,CAAA,CAAA,MAAA,EAG9EC,EAAE,CAACC,OAAO,CAAC,gBAAgB,CAAC,EAC5BD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACwB,IAAI,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,MAAA,EAGTpB,EAAE,CAACC,OAAO,CAAC,gBAAgB,CAAC,EAC5BD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACQ,MAAM,mCATqCvB,QAAQ,CAAA;AAAA;AAAAwC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAAJ,uBAAA,CAAA,IAAA,CAAA;AAAA,EAAA;AAKzDK,EAAAA,SAAS,GAAAR,eAAA,CAAA,IAAA,EAAGK,IAAI,CAAC1C,MAAM,EAAE,CAAA;AAKzB8C,EAAAA,WAAW,IAAAR,qBAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,CAAC,CAAA;AAAC,EAAA;IAAAE,WAAA,EAAA;AAAA;AAClB;AAAC,IAAAM;AAGD,MAAAC,qBAAA,SAC2C7C,QAAQ,CACnD;AAAA,EAAA;AAAA,IAAA,CAAA;AAAAC,MAAAA,CAAA,EAAA,CAAA6C,kBAAA,EAAAC,wBAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,oBAAA,EAAAC,0BAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,WAAA,EAAAC,iBAAA,EAAAC,eAAA,EAAAC,qBAAA,EAAAC,iBAAA,EAAAC,uBAAA,EAAAC,uBAAA,EAAAC,6BAAA,EAAAC,aAAA,EAAAC,mBAAA,CAAA;MAAAnD,CAAA,EAAA,CAAAgC,sBAAA,EAAAoB,WAAA;AAAA,KAAA,GAAAlD,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,MAAAA,SAAS,EAAE,uBAAuB;AAAEC,MAAAA,MAAM,EAAE;KAAa,CAAC,CAAA,EAAA,CAAA,CAAA,CAGtEC,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACkD,MAAM,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAGX9C,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACmD,OAAO,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAGZ/C,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACoD,KAAK,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAGVhD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACQ,MAAM,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAGXJ,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACqD,IAAI,CAAC,2BAA2B,CAAC,CAAA,EAAA,EAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAGtCjD,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACqD,IAAI,CAAC,+BAA+B,CAAC,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAG1CjD,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACkD,MAAM,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAGX9C,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACkD,MAAM,+BAGX9C,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACmD,OAAO,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAnC4BlE,QAAQ,CAAA;AAAA;EAIjDqE,YAAY,GAAAvB,kBAAA,CAAA,IAAA,EAAG,EAAE,CAAA;AAIjBwB,EAAAA,WAAW,IAAAvB,wBAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,KAAK,CAAA;AAInBuB,EAAAA,cAAc,IAAAtB,uBAAA,CAAA,IAAA,CAAA,EAAAC,oBAAA,OAAG,CAAC,CAAA;AAIlBsB,EAAAA,SAAS,IAAArB,0BAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,CAAC,CAAA;AAIbqB,EAAAA,KAAK,IAAApB,qBAAA,CAAA,IAAA,CAAA,EAAAC,WAAA,OAAG,EAAE,CAAA;AAIVoB,EAAAA,SAAS,IAAAnB,iBAAA,CAAA,IAAA,CAAA,EAAAC,eAAA,OAAG,EAAE,CAAA;AAIdmB,EAAAA,WAAW,IAAAlB,qBAAA,CAAA,IAAA,CAAA,EAAAC,iBAAA,OAAG,EAAE,CAAA;AAIhBkB,EAAAA,iBAAiB,IAAAjB,uBAAA,CAAA,IAAA,CAAA,EAAAC,uBAAA,OAAG,EAAE,CAAA;AAItBiB,EAAAA,OAAO,IAAAhB,6BAAA,CAAA,IAAA,CAAA,EAAAC,aAAA,OAAG,IAAI,CAAA;;AAEd;AACF;EACEgB,YAAY,IAAAf,mBAAA,CAAA,IAAA,CAAA,EAAG,IAAI;;AAEnB;AACF;AACEgB,EAAAA,mBAAmB,GAAG;AAAEC,IAAAA,MAAM,EAAEpF,IAAI,CAACC,MAAM,EAAE;AAAEoF,IAAAA,MAAM,EAAE;GAAG;;AAE1D;AACF;AACEC,EAAAA,eAAe,GAAG,EAAE;;AAEpB;AACF;AACA;AACEC,EAAAA,KAAK,GAAG,CAAC;EAET,SAAS,GAAG,IAAI;AAEhBC,EAAAA,mBAAmBA,GACnB;IACE,OAAO,IAAI,CAAC,SAAS;AACvB,EAAA;EAEAC,mBAAmBA,CAACC,QAAQ,EAC5B;AACE,IAAA,IAAI,CAAC,SAAS,GAAGA,QAAQ,IAAI,IAAI;AACnC,EAAA;AAAC,EAAA;IAAAtB,WAAA,EAAA;AAAA;AACH;AAAC,IAAAuB;AAAA,IAAA,cAAAC,SAAA,CAAA;AAAA,EAAA,QAGD,MAAAC,uBAAA,SAC6CC,UAAS,CACtD;AAAA,IAAA;AAAA,MAAA,CAAA;AAAAzF,QAAAA,CAAA,GAAA0F,UAAA,EAAAC,gBAAA,EAAAC,oBAAA,EAAAC,0BAAA,EAAAC,gBAAA,EAAAC,sBAAA,EAAAC,YAAA,EAAAC,kBAAA,EAAAC,UAAA,CAAA;QAAAvF,CAAA,EAAA,CAAA2E,sBAAA,EAAAa,WAAA;AAAA,OAAA,GAAAtF,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,QAAAA,SAAS,EAAE,yBAAyB;AAAEC,QAAAA,MAAM,EAAE;OAAa,CAAC,CAAA,EAAA,CAAA,CAAA,CAGxEC,EAAE,EAAFA,EAAE,CAACE,OAAO,EACVN,IAAI,EAAJA,IAAI,CAACkD,MAAM,CAAA,EAAA,EAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAGX9C,EAAE,EAAFA,EAAE,CAACK,IAAI,EACPT,IAAI,EAAJA,IAAI,CAACwB,IAAI,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAGTpB,EAAE,EAAFA,EAAE,CAACK,IAAI,EACPT,IAAI,EAAJA,IAAI,CAACmD,OAAO,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAGZ/C,EAAE,EAAFA,EAAE,CAACE,OAAO,EAAA,MAAA,EACVN,IAAI,CAACqD,IAAI,CAAC,uBAAuB,CAAC,CAAA,EAAA,EAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAalCiC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,qBAMhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CAMhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAKZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,4BAMhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CAMhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAsBhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,EAAA,MAAA,EACZF,IAAI,CAACG,MAAM,CAAC,oPAAoP,CAAC,CAAA,EAAA,EAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,CA8FjQL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAKhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAKhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAKZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,EAAA,MAAA,EACZF,IAAI,CAACG,MAAM,CAAC,8HAA8H,CAAC,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAoB3IL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,SAAA,CAAA,EAAA,CAAA,CA0DZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,OAAA,CAAA,EAAA,CAAA,CAQZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAYhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAMhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAeZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAaZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAUZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,EAAA,MAAA,EACZF,IAAI,CAACG,MAAM,CAAC,iHAAiH,CAAC,CAAA,EAAA,EAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CA6B9HL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,CAWZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAOZJ,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAShBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAchBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,CAUhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,EAAA,MAAA,EACZF,IAAI,CAACG,MAAM,CAAC,iHAAiH,CAAC,uCAyC9HL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACE,OAAO,EAAA,MAAA,EACZF,IAAI,CAACG,MAAM,CAAC,6ZAA6Z,CAAC,CAAA,EAAA,EAAA,EAAA,oBAAA,CAAA,EAAA,CAAA,CAyG1aL,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAQhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACI,IAAI,8BAOTN,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,wBAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EApnB0Bd,UAAS,CAAA;AAAA;AAIpDkB,IAAAA,IAAI,IAAAT,UAAA,CAAA,IAAA,CAAA,EAAAR,UAAA,OAAG,EAAE,CAAA;IAITkB,cAAc,IAAAjB,gBAAA,CAAA,IAAA,CAAA,EAAAC,oBAAA,OAAGtD,IAAI,CAAC1C,MAAM,EAAE,CAAA;AAI9BiH,IAAAA,UAAU,IAAAhB,0BAAA,CAAA,IAAA,CAAA,EAAAC,gBAAA,OAAG,KAAK,CAAA;AAIlBgB,IAAAA,MAAM,IAAAf,sBAAA,CAAA,IAAA,CAAA,EAAAC,YAAA,OAAG,EAAE,CAAA;AAEX,IAAA,SAAS,IAAAC,kBAAA,CAAA,IAAA,CAAA,EAAG,CAAC;;AAEb;IACA,oBAAoB,GAAG,IAAI;;AAE3B;AACF;AACA;IACE,cAAc,GAAG,KAAK;AAItBc,IAAAA,OAAOA,GACP;MACE,OAAO,IAAI,CAACJ,IAAI;AAClB,IAAA;IAIAK,OAAOA,CAACL,IAAI,EACZ;MACE,IAAI,CAACA,IAAI,GAAGM,MAAM,CAACN,IAAI,IAAI,EAAE,CAAC;AAChC,IAAA;IAIAO,gBAAgBA,GAChB,CACA;AAIAC,IAAAA,cAAcA,CAACC,WAAW,GAAG,EAAE,EAC/B;AACE,MAAA,OAAOA,WAAW;AACpB,IAAA;AAIAC,IAAAA,iBAAiBA,GACjB;AACE,MAAA,OAAO,KAAK;AACd,IAAA;AAIAC,IAAAA,gBAAgBA,CAACC,cAAc,EAAEC,MAAM,EACvC;AACE,MAAA,IAAIA,MAAM,EAAEC,qBAAqB,EAAEC,MAAM,KAAK,EAAE,EAChD;QACEpF,IAAI,CAACqF,IAAI,CAAC,IAAI,CAACf,cAAc,EAAEY,MAAM,CAACC,qBAAqB,CAAC;AAC9D,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIEG,IAAAA,iBAAiBA,CAACL,cAAc,EAAEM,OAAO,EACzC;AACE,MAAA,MAAMC,CAAC,GAAG,IAAI,CAAClB,cAAc;AAC7B;AACA,MAAA,MAAMmB,UAAU,GAAGC,IAAI,CAACC,GAAG,CACzBD,IAAI,CAACE,KAAK,CAACJ,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5BE,IAAI,CAACE,KAAK,CAACJ,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5BE,IAAI,CAACE,KAAK,CAACJ,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAC,CAC9B,CAAC;AAED,MAAA,KAAK,MAAMK,IAAI,IAAI,IAAI,CAACrB,MAAM,EAC9B;AACE,QAAA,MAAMsB,QAAQ,GAAGD,IAAI,CAAChD,mBAAmB,EAAE;QAC3C,IAAI,CAACiD,QAAQ,IAAIA,QAAQ,CAACC,MAAM,IAAI,KAAK,KAAK,EAC9C;AACE,UAAA;AACF,QAAA;;AAEA;QACAF,IAAI,CAACjD,KAAK,GAAGoD,aAAa,CAACH,IAAI,CAAC7D,cAAc,CAAC,GAC3C,CAAC6D,IAAI,CAACjD,KAAK,GAAGzF,kCAAkC,MAAM,CAAC,GACvD,CAAC0I,IAAI,CAACjD,KAAK,GAAG,CAACzF,kCAAkC,MAAM,CAAC;QAE5D,MAAM8I,QAAQ,GAAGH,QAAQ,CAACI,WAAW,GAAGL,IAAI,CAAC5D,SAAS,CAAC;QACvD,MAAMkE,SAAS,GAAGF,QAAQ,EAAEE,SAAS,IAAIF,QAAQ,EAAEG,WAAW;QAC9D,MAAMC,SAAS,GAAGJ,QAAQ,EAAEI,SAAS,IAAIJ,QAAQ,EAAEK,WAAW;AAC9D,QAAA,IAAI,CAACH,SAAS,IAAI,CAACE,SAAS,EAC5B;AACE,UAAA;AACF,QAAA;AACA;AACA;AACA,QAAA,MAAME,OAAO,GAAG,CAACJ,SAAS,CAAC,CAAC,CAAC,GAAGE,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG;AACnD,QAAA,MAAMG,OAAO,GAAG,CAACL,SAAS,CAAC,CAAC,CAAC,GAAGE,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG;AACnD,QAAA,MAAMI,OAAO,GAAG,CAACN,SAAS,CAAC,CAAC,CAAC,GAAGE,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG;QACnD,MAAMK,WAAW,GACfhB,IAAI,CAACE,KAAK,CAACS,SAAS,CAAC,CAAC,CAAC,GAAGF,SAAS,CAAC,CAAC,CAAC,EAAEE,SAAS,CAAC,CAAC,CAAC,GAAGF,SAAS,CAAC,CAAC,CAAC,EAAEE,SAAS,CAAC,CAAC,CAAC,GAAGF,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GACvGT,IAAI,CAACE,KAAK,CAACW,OAAO,EAAEC,OAAO,EAAEC,OAAO,CAAC;QAEvCZ,IAAI,CAAClD,eAAe,CAACyC,MAAM,GAAGS,IAAI,CAAC1D,SAAS,CAACiD,MAAM;QACnD,IAAIuB,UAAU,GAAGC,QAAQ;AAAEC,UAAAA,UAAU,GAAGD,QAAQ;AAAEE,UAAAA,UAAU,GAAGF,QAAQ;QACvE,IAAIG,UAAU,GAAG,CAACH,QAAQ;UAAEI,UAAU,GAAG,CAACJ,QAAQ;UAAEK,UAAU,GAAG,CAACL,QAAQ;AAC1E,QAAA,KAAK,IAAIM,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGrB,IAAI,CAAC1D,SAAS,CAACiD,MAAM,EAAE8B,KAAK,EAAE,EAC1D;UACE,MAAM/G,SAAS,GAAG0F,IAAI,CAAC1D,SAAS,CAAC+E,KAAK,CAAC,CAAC/G,SAAS;AACjD;AACA/C,UAAAA,gBAAgB,CAAC,CAAC,CAAC,GAAG+C,SAAS,CAAC,EAAE,CAAC;AACnC/C,UAAAA,gBAAgB,CAAC,CAAC,CAAC,GAAG+C,SAAS,CAAC,EAAE,CAAC;AACnC/C,UAAAA,gBAAgB,CAAC,CAAC,CAAC,GAAG+C,SAAS,CAAC,EAAE,CAAC;AACnC;AACA;AACA;AACA;AACA,UAAA,MAAMgH,KAAK,GAAGzB,IAAI,CAACC,GAAG,CACpBD,IAAI,CAACE,KAAK,CAACzF,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,CAAC,EACpDuF,IAAI,CAACE,KAAK,CAACzF,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,CAAC,EACpDuF,IAAI,CAACE,KAAK,CAACzF,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,CAAC,CAAC,EAAEA,SAAS,CAAC,EAAE,CAAC,CACtD,CAAC,GAAGsF,UAAU;UACdpI,IAAI,CAAC+J,aAAa,CAAChK,gBAAgB,EAAEA,gBAAgB,EAAEoI,CAAC,CAAC;AAEzD,UAAA,MAAM9C,MAAM,GAAGgE,WAAW,GAAGS,KAAK;UAClC,MAAME,MAAM,GAAGxB,IAAI,CAAClD,eAAe,CAACuE,KAAK,CAAC,KAAK;AAAEzE,YAAAA,MAAM,EAAEpF,IAAI,CAACC,MAAM,EAAE;AAAEoF,YAAAA,MAAM,EAAE;WAAG;UACnFrF,IAAI,CAACgI,IAAI,CAACgC,MAAM,CAAC5E,MAAM,EAAErF,gBAAgB,CAAC;UAC1CiK,MAAM,CAAC3E,MAAM,GAAGA,MAAM;AAEtBiE,UAAAA,UAAU,GAAGjB,IAAI,CAAC4B,GAAG,CAACX,UAAU,EAAEvJ,gBAAgB,CAAC,CAAC,CAAC,GAAGsF,MAAM,CAAC;AAC/DmE,UAAAA,UAAU,GAAGnB,IAAI,CAAC4B,GAAG,CAACT,UAAU,EAAEzJ,gBAAgB,CAAC,CAAC,CAAC,GAAGsF,MAAM,CAAC;AAC/DoE,UAAAA,UAAU,GAAGpB,IAAI,CAAC4B,GAAG,CAACR,UAAU,EAAE1J,gBAAgB,CAAC,CAAC,CAAC,GAAGsF,MAAM,CAAC;AAC/DqE,UAAAA,UAAU,GAAGrB,IAAI,CAACC,GAAG,CAACoB,UAAU,EAAE3J,gBAAgB,CAAC,CAAC,CAAC,GAAGsF,MAAM,CAAC;AAC/DsE,UAAAA,UAAU,GAAGtB,IAAI,CAACC,GAAG,CAACqB,UAAU,EAAE5J,gBAAgB,CAAC,CAAC,CAAC,GAAGsF,MAAM,CAAC;AAC/DuE,UAAAA,UAAU,GAAGvB,IAAI,CAACC,GAAG,CAACsB,UAAU,EAAE7J,gBAAgB,CAAC,CAAC,CAAC,GAAGsF,MAAM,CAAC;AACjE,QAAA;AACA,QAAA,IAAImD,IAAI,CAAC1D,SAAS,CAACiD,MAAM,EACzB;AACE;AACA,UAAA,MAAMmC,YAAY,GAAG1B,IAAI,CAACrD,mBAAmB,CAACC,MAAM;UACpD8E,YAAY,CAAC,CAAC,CAAC,GAAG,CAACZ,UAAU,GAAGI,UAAU,IAAI,GAAG;UACjDQ,YAAY,CAAC,CAAC,CAAC,GAAG,CAACV,UAAU,GAAGG,UAAU,IAAI,GAAG;UACjDO,YAAY,CAAC,CAAC,CAAC,GAAG,CAACT,UAAU,GAAGG,UAAU,IAAI,GAAG;UACjDpB,IAAI,CAACrD,mBAAmB,CAACE,MAAM,GAC7BgD,IAAI,CAACE,KAAK,CAACmB,UAAU,GAAGJ,UAAU,EAAEK,UAAU,GAAGH,UAAU,EAAEI,UAAU,GAAGH,UAAU,CAAC,GAAG,GAAG;;AAE7F;UACA,IAAIjB,IAAI,CAACtD,YAAY,EACrB;AACEsD,YAAAA,IAAI,CAACtD,YAAY,CAACiF,KAAK,EAAEC,oBAAoB,GAAG5B,IAAI,CAACtD,YAAY,EAAEsD,IAAI,CAACrD,mBAAmB,EAAEqD,IAAI,CAACjD,KAAK,CAAC;AAC1G,UAAA;AACF,QAAA;AACF,MAAA;MAEA,IAAI,CAAC2B,UAAU,GAAG,IAAI;AACxB,IAAA;AAIAmD,IAAAA,wBAAwBA,CAACC,GAAG,GAAG,IAAI,EACnC;AACE,MAAA,IAAIA,GAAG,EACP;QACE,OAAO3H,IAAI,CAACqF,IAAI,CAACsC,GAAG,EAAE,IAAI,CAACrD,cAAc,CAAC;AAC5C,MAAA;MACA,OAAO,IAAI,CAACA,cAAc;AAC5B,IAAA;IAIAsD,KAAKA,GACL,CACA;IAIAC,SAASA,GACT,CACA;IAIAC,SAASA,GACT,CACA;AAIAC,IAAAA,UAAUA,GACV;AACE,MAAA,OAAO,KAAK;AACd,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAIEC,IAAAA,eAAeA,CAAC3D,IAAI,EAAE4D,KAAK,EAC3B;AACE,MAAA,KAAK,MAAMpC,IAAI,IAAI,IAAI,CAACrB,MAAM,EAC9B;AACE,QAAA,KAAK,MAAM0D,IAAI,IAAIrC,IAAI,CAAC3D,KAAK,EAC7B;UACEgG,IAAI,CAAC/I,MAAM,EAAEgJ,SAAS,GAAG9D,IAAI,EAAE4D,KAAK,CAAC;UACrCC,IAAI,CAAC3I,UAAU,GAAG2D,sBAAuB,CAAC,cAAc,CAACgF,IAAI,CAAC/I,MAAM,CAAC;UACrE,IAAI+I,IAAI,CAAC1I,eAAe,EACxB;YACE0I,IAAI,CAAC1I,eAAe,CAACgI,KAAK,EAAEY,eAAe,GAAGF,IAAI,CAAC1I,eAAe,CAAC;YACnE0I,IAAI,CAAC1I,eAAe,GAAG,IAAI;AAC3B,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC7B,UAAA;AACF,QAAA;AACF,MAAA;MACA,IAAI,CAAC,SAAS,EAAE;AAClB,IAAA;IAIA6I,OAAOA,CACLvG,YAAY,EACZC,WAAW,EACXC,cAAc,EACdC,SAAS,EACTC,KAAK,EACLoG,kBAAkB,EAClBlG,WAAW,GAAG,EAAE,EAChBC,iBAAiB,GAAG,EAAE,EAExB;MACE,MAAMkG,WAAW,GAAGC,KAAK,CAACC,IAAI,CAACvG,KAAK,IAAI,EAAE,CAAC;MAC3C,MAAMwG,gBAAgB,GAAGF,KAAK,CAACC,IAAI,CAACH,kBAAkB,IAAI,EAAE,CAAC;MAC7D,IAAI,CAACC,WAAW,CAACnD,MAAM,IAAI,CAACsD,gBAAgB,CAACtD,MAAM,EACnD;AACE,QAAA,OAAO,KAAK;AACd,MAAA;AAEA,MAAA,MAAMuD,eAAe,GAAGJ,WAAW,CAACK,GAAG,CAACV,IAAI,IAAIhF,sBAAuB,CAAC,WAAW,CAACgF,IAAI,CAAC,CAAC;MAC1F,MAAM/F,SAAS,GAAGuG,gBAAgB,CAACE,GAAG,CAAC,CAACzI,SAAS,EAAEC,WAAW,KAC9D;QACE,IAAI,CAACD,SAAS,IAAIA,SAAS,CAACiF,MAAM,KAAK,EAAE,EACzC;AACE,UAAA,MAAM,IAAIyD,SAAS,CAAC,oEAAoE,CAAC;AAC3F,QAAA;AACA,QAAA,MAAMC,QAAQ,GAAG,IAAIpJ,sBAA6B,EAAE;QACpDM,IAAI,CAACqF,IAAI,CAACyD,QAAQ,CAAC3I,SAAS,EAAEA,SAAS,CAAC;QACxC2I,QAAQ,CAAC1I,WAAW,GAAGA,WAAW;AAClC,QAAA,OAAO0I,QAAQ;AACjB,MAAA,CAAC,CAAC;AAEF,MAAA,MAAMjD,IAAI,GAAG,IAAIvF,sBAAqB,EAAE;MACxCuF,IAAI,CAAC/D,YAAY,GAAG6C,MAAM,CAAC7C,YAAY,IAAI,EAAE,CAAC;AAC9C+D,MAAAA,IAAI,CAAC9D,WAAW,GAAG,CAAC,CAACA,WAAW;AAChC8D,MAAAA,IAAI,CAAC7D,cAAc,GAAGA,cAAc,KAAK+G,SAAS,GAAG,CAAC,GAAGC,MAAM,CAAChH,cAAc,CAAC,GAAG,CAAC;MACnF6D,IAAI,CAAC5D,SAAS,GAAG+G,MAAM,CAAC/G,SAAS,CAAC,KAAK,CAAC;MACxC4D,IAAI,CAAC3D,KAAK,GAAGyG,eAAe;MAC5B9C,IAAI,CAAC1D,SAAS,GAAGA,SAAS;MAC1B0D,IAAI,CAACzD,WAAW,GAAGuC,MAAM,CAACvC,WAAW,IAAI,EAAE,CAAC;MAC5CyD,IAAI,CAACxD,iBAAiB,GAAGsC,MAAM,CAACtC,iBAAiB,IAAI,EAAE,CAAC;AACxD;AACA;AACA;MACA,IAAIwD,IAAI,CAAC9D,WAAW,EACpB;QACE8D,IAAI,CAACjD,KAAK,GAAG,CAACiD,IAAI,CAACjD,KAAK,GAAG1F,0BAA0B,MAAM,CAAC;AAC9D,MAAA;AACA,MAAA,KAAK,MAAMgL,IAAI,IAAIrC,IAAI,CAAC3D,KAAK,EAC7B;AACE2D,QAAAA,IAAI,CAACjD,KAAK,GAAG,CAACiD,IAAI,CAACjD,KAAK,GAAI,CAAC,IAAIsF,IAAI,CAAC9I,SAAU,MAAM,CAAC;AACzD,MAAA;AACA,MAAA,IAAI,CAACoF,MAAM,CAACyE,IAAI,CAACpD,IAAI,CAAC;AACtB,MAAA,IAAI,CAAC,cAAc,GAAG,KAAK;MAC3B,IAAI,CAAC,SAAS,EAAE;AAChB,MAAA,OAAO,IAAI;AACb,IAAA;AAIAqD,IAAAA,KAAKA,GACL;AACE,MAAA,IAAI,CAAC1E,MAAM,CAACY,MAAM,GAAG,CAAC;MACtB,IAAI,CAACb,UAAU,GAAG,KAAK;MACvB,IAAI,CAAC,SAAS,EAAE;AAClB,IAAA;IAIA4E,mBAAmBA,CAACC,MAAM,EAC1B;AACE,MAAA,MAAMnB,KAAK,GAAGe,MAAM,CAACI,MAAM,CAAC,KAAK,CAAC;MAClC,MAAMvD,IAAI,GAAG,IAAI,CAACrB,MAAM,CAACyD,KAAK,KAAK,EAAE,CAAC;AACtC,MAAA,IAAI,CAACpC,IAAI,IAAI,CAACA,IAAI,CAACzD,WAAW,EAC9B;AACE,QAAA,OAAO,IAAI;AACb,MAAA;AACA,MAAA,OAAO,CAACyD,IAAI,CAACzD,WAAW,EAAEyD,IAAI,CAACxD,iBAAiB,EAAE4F,KAAK,GAAG,MAAM,CAAC;AACnE,IAAA;AAIAoB,IAAAA,YAAYA,GACZ;AACE,MAAA,OAAO,IAAI,CAAC7E,MAAM,CAACY,MAAM;AAC3B,IAAA;IAIAkE,WAAWA,CAACC,MAAM,EAClB;AACE,MAAA,MAAM1D,IAAI,GAAG3C,sBAAuB,CAAC,QAAQ,CAAC,IAAI,CAACsB,MAAM,EAAE+E,MAAM,CAAC;AAClE,MAAA,OAAO,CACL1D,IAAI,CAAC/D,YAAY,EACjB+D,IAAI,CAAChD,mBAAmB,EAAE,EAC1BgD,IAAI,CAAC5D,SAAS,EACd4D,IAAI,CAAC9D,WAAW,EAChB8D,IAAI,CAAC7D,cAAc,EACnB6D,IAAI,CAAC3D,KAAK,CAACkD,MAAM,EACjBS,IAAI,CAAC1D,SAAS,CAACiD,MAAM,CACtB;AACH,IAAA;AAIAoE,IAAAA,WAAWA,CAACD,MAAM,EAAEH,MAAM,EAC1B;AACE,MAAA,MAAMvD,IAAI,GAAG3C,sBAAuB,CAAC,QAAQ,CAAC,IAAI,CAACsB,MAAM,EAAE+E,MAAM,CAAC;AAClE,MAAA,MAAMrC,KAAK,GAAG8B,MAAM,CAACI,MAAM,CAAC,KAAK,CAAC;AAClC,MAAA,IAAIlC,KAAK,IAAIrB,IAAI,CAAC3D,KAAK,CAACkD,MAAM,EAC9B;AACE,QAAA,MAAM,IAAIqE,UAAU,CAAC,CAAA,mCAAA,EAAsCvC,KAAK,kBAAkB,CAAC;AACrF,MAAA;AACA,MAAA,MAAMgB,IAAI,GAAGrC,IAAI,CAAC3D,KAAK,CAACgF,KAAK,CAAC;AAC9B,MAAA,OAAO,CAACgB,IAAI,CAAC/I,MAAM,EAAE+I,IAAI,CAAC9I,SAAS,EAAE8I,IAAI,CAAC7I,SAAS,EAAE6I,IAAI,CAAC5I,SAAS,CAAC;AACtE,IAAA;IAIAoK,cAAcA,CAACH,MAAM,EACrB;AACE,MAAA,OAAOrG,sBAAuB,CAAC,QAAQ,CAAC,IAAI,CAACsB,MAAM,EAAE+E,MAAM,CAAC,CAACjH,OAAO;AACtE,IAAA;;AAEA;AACF;AACA;AACA;AAIEqH,IAAAA,cAAcA,CAACJ,MAAM,EAAEjH,OAAO,EAC9B;AACE,MAAA,MAAMuD,IAAI,GAAG3C,sBAAuB,CAAC,QAAQ,CAAC,IAAI,CAACsB,MAAM,EAAE+E,MAAM,CAAC;AAClE,MAAA,MAAMK,IAAI,GAAG,CAAC,CAACtH,OAAO;AACtB,MAAA,IAAIuD,IAAI,CAACvD,OAAO,KAAKsH,IAAI,EACzB;QACE/D,IAAI,CAACvD,OAAO,GAAGsH,IAAI;AACnB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAACA,IAAI,EACT;UACE,IAAI/D,IAAI,CAACtD,YAAY,EACrB;YACEsD,IAAI,CAACtD,YAAY,CAACiF,KAAK,EAAEqC,yBAAyB,GAAGhE,IAAI,CAACtD,YAAY,CAAC;YACvEsD,IAAI,CAACtD,YAAY,GAAG,IAAI;AAC1B,UAAA;AACA,UAAA,KAAK,MAAM2F,IAAI,IAAIrC,IAAI,CAAC3D,KAAK,EAC7B;YACE,IAAIgG,IAAI,CAAC1I,eAAe,EACxB;cACE0I,IAAI,CAAC1I,eAAe,CAACgI,KAAK,EAAEY,eAAe,GAAGF,IAAI,CAAC1I,eAAe,CAAC;cACnE0I,IAAI,CAAC1I,eAAe,GAAG,IAAI;AAC7B,YAAA;AACF,UAAA;AACF,QAAA;QACA,IAAI,CAAC,SAAS,EAAE;AAClB,MAAA;AACF,IAAA;AAIAsD,IAAAA,mBAAmBA,CAACyG,MAAM,EAAEzD,QAAQ,EACpC;AACE,MAAA,MAAMD,IAAI,GAAG3C,sBAAuB,CAAC,QAAQ,CAAC,IAAI,CAACsB,MAAM,EAAE+E,MAAM,CAAC;AAClE,MAAA,IAAI1D,IAAI,CAAChD,mBAAmB,EAAE,KAAKiD,QAAQ,EAC3C;AACED,QAAAA,IAAI,CAAC/C,mBAAmB,CAACgD,QAAQ,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE;AAClB,MAAA;AACF,IAAA;IAIAI,WAAWA,CAACqD,MAAM,EAClB;AACE,MAAA,MAAM1D,IAAI,GAAG3C,sBAAuB,CAAC,QAAQ,CAAC,IAAI,CAACsB,MAAM,EAAE+E,MAAM,CAAC;AAClE,MAAA,OAAOrG,sBAAuB,CAAC,UAAU,CAAC2C,IAAI,CAAC;AACjD,IAAA;AAIAiE,IAAAA,WAAWA,GACX;MACE,OAAO,IAAI,CAAC,SAAS;AACvB,IAAA;;AAEA;AACF;AACA;AAGEC,IAAAA,kBAAkBA,GAClB;AACE,MAAA,MAAMC,QAAQ,GAAG,IAAI,CAACC,oBAAoB,EAAE;AAC5C,MAAA,IAAID,QAAQ,EACZ;QACEA,QAAQ,CAACE,iBAAiB,CAACC,gBAAgB,CAACC,qBAAqB,EAAE,IAAI,CAAC;QACxEJ,QAAQ,CAACE,iBAAiB,CAACC,gBAAgB,CAACE,YAAY,EAAE,IAAI,CAAC;AACjE,MAAA;AACF,IAAA;;AAEA;AACF;AACA;AAGEC,IAAAA,oBAAoBA,GACpB;MACE,IAAI,CAACC,yBAAyB,EAAE;AAClC,IAAA;;AAEA;AACF;AACA;AACA;AAIEA,IAAAA,yBAAyBA,GACzB;AACE,MAAA,KAAK,MAAM1E,IAAI,IAAI,IAAI,CAACrB,MAAM,EAC9B;AACE,QAAA,KAAK,MAAM0D,IAAI,IAAIrC,IAAI,CAAC3D,KAAK,EAC7B;UACE,IAAIgG,IAAI,CAAC1I,eAAe,EACxB;YACE0I,IAAI,CAAC1I,eAAe,CAACgI,KAAK,EAAEY,eAAe,GAAGF,IAAI,CAAC1I,eAAe,CAAC;YACnE0I,IAAI,CAAC1I,eAAe,GAAG,IAAI;AAC7B,UAAA;AACF,QAAA;QACA,IAAIqG,IAAI,CAACtD,YAAY,EACrB;UACEsD,IAAI,CAACtD,YAAY,CAACiF,KAAK,EAAEqC,yBAAyB,GAAGhE,IAAI,CAACtD,YAAY,CAAC;UACvEsD,IAAI,CAACtD,YAAY,GAAG,IAAI;AAC1B,QAAA;AACF,MAAA;AACA,MAAA,IAAI,IAAI,CAAC,oBAAoB,EAC7B;AACE,QAAA,IAAI,CAAC,oBAAoB,CAACiF,KAAK,EAAEgD,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACjF,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAClC,MAAA;AACA,MAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC7B,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAIEC,kBAAkBA,CAACC,OAAO,EAC1B;AACE,MAAA,IAAI,CAAC,IAAI,CAACnG,UAAU,EACpB;AACE,QAAA;AACF,MAAA;AACA,MAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAACiD,KAAK,KAAKkD,OAAO,EAC5E;QACE,IAAI,CAACH,yBAAyB,EAAE;AAClC,MAAA;AACA,MAAA,IAAI,IAAI,CAAC,cAAc,EACvB;AACE,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAC9B;QACE,MAAMI,MAAM,GAAGD,OAAO,EAAEE,gBAAgB,GAAG,IAAI,CAAC,IAAI,IAAI;QACxD,IAAID,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAI,CAACA,MAAM,CAACnD,KAAK,EACzD;UACEmD,MAAM,CAACnD,KAAK,GAAGkD,OAAO;AACxB,QAAA;AACA,QAAA,IAAI,CAAC,oBAAoB,GAAGC,MAAM;AACpC,MAAA;AAEA,MAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,MAAA,KAAK,IAAI1I,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,IAAI,CAACuC,MAAM,CAACY,MAAM,EAAEnD,SAAS,EAAE,EACnE;AACE,QAAA,MAAM4D,IAAI,GAAG,IAAI,CAACrB,MAAM,CAACvC,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC4D,IAAI,CAACvD,OAAO,EACjB;AACE,UAAA;AACF,QAAA;AACA,QAAA,MAAMwD,QAAQ,GAAGD,IAAI,CAAChD,mBAAmB,EAAE;QAC3C,IAAI,CAACiD,QAAQ,IAAIA,QAAQ,CAACC,MAAM,IAAI,KAAK,KAAK,EAC9C;AACE,UAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,UAAA;AACF,QAAA;AACA,QAAA,IAAI,CAACF,IAAI,CAAC1D,SAAS,CAACiD,MAAM,EAC1B;AACE,UAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,UAAA;AACF,QAAA;QACA,IAAIS,IAAI,CAAC1D,SAAS,CAACiD,MAAM,KAAKS,IAAI,CAAClD,eAAe,CAACyC,MAAM,EACzD;AACE,UAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,UAAA;AACF,QAAA;AAEA,QAAA,IAAI,CAACS,IAAI,CAACtD,YAAY,EACtB;UACE,MAAMoI,MAAM,GAAGD,OAAO,EAAEG,sBAAsB,GAC5ChF,IAAI,CAACrD,mBAAmB,EACxBqD,IAAI,CAACjD,KAAK,EACViD,IAAI,CAAClD,eAAe,EACpBkD,IAAI,CAAClD,eAAe,CAACyC,MACvB,CAAC,IAAI,IAAI;UACT,IAAIuF,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAI,CAACA,MAAM,CAACnD,KAAK,EACzD;YACEmD,MAAM,CAACnD,KAAK,GAAGkD,OAAO;AACxB,UAAA;UACA7E,IAAI,CAACtD,YAAY,GAAGoI,MAAM;AAC5B,QAAA;AAEA,QAAA,KAAK,MAAMzC,IAAI,IAAIrC,IAAI,CAAC3D,KAAK,EAC7B;UACE,IAAIgG,IAAI,CAAC1I,eAAe,EACxB;AACE,YAAA;AACF,UAAA;AACA,UAAA,IAAI,CAAC0I,IAAI,CAAC/I,MAAM,EAChB;AACE,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,YAAA;AACF,UAAA;UACA,MAAMwL,MAAM,GAAGD,OAAO,EAAEI,YAAY,GAClChF,QAAQ,EACR,CAAC,EACDoC,IAAI,CAAC9I,SAAS,EACdyG,IAAI,CAAC5D,SAAS,EACdiG,IAAI,CAAC7I,SAAS,EACd6I,IAAI,CAAC5I,SAAS,EACd4I,IAAI,CAAC/I,MAAM,EACX+I,IAAI,CAAC3I,UAAU,EACf,IAAI,CAAC,oBAAoB,EACzBsG,IAAI,CAACtD,YAAY,EACjBsD,IAAI,CAAC1D,SAAS,EACd0D,IAAI,CAAC1D,SAAS,CAACiD,MAAM,EACrB,IAAI,EACJnD,SACF,CAAC,IAAI,IAAI;UACT,IAAI0I,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAI,CAACA,MAAM,CAACnD,KAAK,EACzD;YACEmD,MAAM,CAACnD,KAAK,GAAGkD,OAAO;AACxB,UAAA;UACAxC,IAAI,CAAC1I,eAAe,GAAGmL,MAAM;AAC/B,QAAA;AACF,MAAA;AACF,IAAA;;AAEA;AACF;AACA;IAGEI,eAAeA,CAAC,GAAGC,KAAK,EACxB;AACE,MAAA,OAAO,KAAK;AACd,IAAA;;AAEA;AACF;AAGEC,IAAAA,gBAAgBA,CAAC,GAAGD,KAAK,EACzB,CACA;;AAEA;AACF;IAGEE,sBAAsBA,CAAC,GAAGF,KAAK,EAC/B;AACE,MAAA,OAAO,IAAI;AACb,IAAA;GAiDD;AA/CQ,EAAA,QAAQG,CAAC3G,MAAM,EAAE+E,MAAM,EAC9B;AACE,IAAA,MAAMrC,KAAK,GAAG8B,MAAM,CAACO,MAAM,CAAC,KAAK,CAAC;AAClC,IAAA,IAAIrC,KAAK,IAAI1C,MAAM,CAACY,MAAM,EAC1B;AACE,MAAA,MAAM,IAAIqE,UAAU,CAAC,CAAA,mCAAA,EAAsCvC,KAAK,kBAAkB,CAAC;AACrF,IAAA;IACA,OAAO1C,MAAM,CAAC0C,KAAK,CAAC;AACtB,EAAA;EAEO,WAAWkE,CAACnD,KAAK,EACxB;AACE,IAAA,MAAMoD,MAAM,GAAGpD,KAAK,IAAI,EAAE;AAC1B,IAAA,MAAMC,IAAI,GAAG,IAAI1K,qBAAyB,EAAE;AAC5C0K,IAAAA,IAAI,CAAC/I,MAAM,GAAGkM,MAAM,CAAClM,MAAM,IAAI,IAAI;IACnC+I,IAAI,CAAC9I,SAAS,GAAG4J,MAAM,CAACqC,MAAM,CAACjM,SAAS,CAAC,KAAK,CAAC;IAC/C8I,IAAI,CAAC7I,SAAS,GAAG2J,MAAM,CAACqC,MAAM,CAAChM,SAAS,CAAC,KAAK,CAAC;AAC/C6I,IAAAA,IAAI,CAAC5I,SAAS,GAAG+L,MAAM,CAAC/L,SAAS,KAAKyJ,SAAS,GAAG,CAAC,GAAGC,MAAM,CAACqC,MAAM,CAAC/L,SAAS,CAAC,KAAK,CAAC;IACpF4I,IAAI,CAAC3I,UAAU,GAAG2D,sBAAuB,CAAC,cAAc,CAACgF,IAAI,CAAC/I,MAAM,CAAC;AACrE,IAAA,OAAO+I,IAAI;AACb,EAAA;EAEO,UAAUoD,CAACzF,IAAI,EACtB;IACE,OAAO;MACL/D,YAAY,EAAE+D,IAAI,CAAC/D,YAAY;AAC/BgE,MAAAA,QAAQ,EAAED,IAAI,CAAChD,mBAAmB,EAAE;MACpCd,WAAW,EAAE8D,IAAI,CAAC9D,WAAW;MAC7BC,cAAc,EAAE6D,IAAI,CAAC7D,cAAc;MACnCC,SAAS,EAAE4D,IAAI,CAAC5D,SAAS;MACzBC,KAAK,EAAE2D,IAAI,CAAC3D,KAAK,CAAC0G,GAAG,CAACV,IAAI,KAAK;QAAE,GAAGA;AAAK,OAAC,CAAC,CAAC;MAC5C/F,SAAS,EAAE0D,IAAI,CAAC1D,SAAS,CAACyG,GAAG,CAACE,QAAQ,KAAK;QACzC3I,SAAS,EAAEH,IAAI,CAACuL,KAAK,CAACzC,QAAQ,CAAC3I,SAAS,CAAC;QACzCC,WAAW,EAAE0I,QAAQ,CAAC1I;AACxB,OAAC,CAAC,CAAC;MACHgC,WAAW,EAAEyD,IAAI,CAACzD,WAAW;MAC7BC,iBAAiB,EAAEwD,IAAI,CAACxD,iBAAiB;MACzCC,OAAO,EAAEuD,IAAI,CAACvD;KACf;AACH,EAAA;EAEO,cAAckJ,CAACrM,MAAM,EAC5B;AACE,IAAA,MAAMsM,IAAI,GAAGtM,MAAM,EAAEuM,YAAY,IAAI,IAAIvM,MAAM,EAAEsM,IAAI,IAAI,CAAC;AAC1D,IAAA,OAAOzC,MAAM,CAACyC,IAAI,CAAC,IAAI,CAAC;AAC1B,EAAA;EAACxL,WAAAA,GAAA;IAAA,KAAA,CAAA+C,sBAAA,GAAAa,WAAA,EAAA;AAAA,EAAA;AAAA,CAAA,EAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"EveChildInstancedMeshes.js","sources":["../../../../src/eve/child/EveChildInstancedMeshes.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildInstancedMeshes.h\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildInstancedMeshes.cpp\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\Children\\EveChildInstancedMeshes_Blue.cpp\r\nimport { mat4 } from \"@carbonenginejs/runtime-utils/mat4\";\r\nimport { vec3 } from \"@carbonenginejs/runtime-utils/vec3\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\nimport { carbon, impl, io, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { EveEntity } from \"../EveEntity.js\";\r\nimport { EveComponentType, ShouldReflect } from \"../EveComponentTypes.js\";\r\nimport { RawData } from \"../../trinityCore/rawData/RawData.js\";\r\n\r\n/** Carbon EveInstancedMeshManager::InstanceFlags (EveInstancedMeshManager.h:\r\n * 13-26, cpp:998-1048): a uint32 bitfield - bit (1 << batchType) per present\r\n * batch type, CASTS_SHADOW = 1 << 30, RENDER_IN_REFLECTION = 1 << 31. */\r\nexport const INSTANCE_FLAG_CASTS_SHADOW = 0x40000000;\r\nexport const INSTANCE_FLAG_RENDER_IN_REFLECTION = 0x80000000;\r\n\r\nconst POSITION_SCRATCH = vec3.create();\r\n\r\n\r\n/**\r\n * One shader area of an instanced mesh: the effect, its batch type, the area\r\n * range within the mesh, its cached effect hash and the mesh-group handle it is\r\n * registered under.\r\n */\r\n@type.define({ className: \"EveChildInstancedMeshArea\", family: \"eve/child\" })\r\nexport class EveChildInstancedMeshArea extends CjsModel\r\n{\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.objectRef(\"Tr2Effect\")\r\n effect = null;\r\n\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.uint32\r\n batchType = 0;\r\n\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.uint32\r\n areaIndex = 0;\r\n\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.uint32\r\n areaCount = 1;\r\n\r\n @io.read\r\n @type.float32\r\n effectHash = 0;\r\n\r\n /** Carbon MeshArea::meshGroupHandle (EveChildInstancedMeshes.h:72) - the\r\n * manager registration handle; runtime state, not persisted. Truthy handles\r\n * carry .owner for the removal routing (EveInstancedMeshManager.h:41-72). */\r\n meshGroupHandle = null;\r\n}\r\n\r\n\r\n/**\r\n * A single placement of an instanced mesh: its transform and the index of its\r\n * cull sphere in the owning mesh's instance sphere list.\r\n */\r\n@type.define({ className: \"EveChildInstancedMeshInstance\", family: \"eve/child\" })\r\nexport class EveChildInstancedMeshInstance extends CjsModel\r\n{\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.mat4\r\n transform = mat4.create();\r\n\r\n @io.rebuild(\"instanceBuffer\")\r\n @io.persist\r\n @type.uint32\r\n sphereIndex = 0;\r\n}\r\n\r\n\r\n/**\r\n * One geometry-and-areas record inside an EveChildInstancedMeshes child, holding\r\n * its instance placements, per-instance world cull spheres, instance flags and\r\n * manager registration handles.\r\n */\r\n@type.define({ className: \"EveChildInstancedMesh\", family: \"eve/child\" })\r\nexport class EveChildInstancedMesh extends CjsModel\r\n{\r\n @io.persist\r\n @type.string\r\n geometryPath = \"\";\r\n\r\n @io.persist\r\n @type.boolean\r\n castsShadow = false;\r\n\r\n @io.persist\r\n @type.int32\r\n reflectionMode = 3;\r\n\r\n @io.persist\r\n @type.uint32\r\n meshIndex = 0;\r\n\r\n @io.persist\r\n @type.list(\"EveChildInstancedMeshArea\")\r\n areas = [];\r\n\r\n @io.persist\r\n @type.list(\"EveChildInstancedMeshInstance\")\r\n instances = [];\r\n\r\n @io.persist\r\n @type.string\r\n sofHullName = \"\";\r\n\r\n @io.persist\r\n @type.string\r\n sofLocatorSetName = \"\";\r\n\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n /** Carbon Mesh::sphereHandle (h:110) - manager registration handle;\r\n * runtime state, not persisted. */\r\n sphereHandle = null;\r\n\r\n /** Carbon Mesh::worldBoundingSphere - stamped by UpdateAsyncronous\r\n * (cpp:270); the TriFrustum sphere-duck shape. */\r\n worldBoundingSphere = { center: vec3.create(), radius: 0 };\r\n\r\n /** Carbon Mesh::instanceSpheres - per-instance world cull spheres, stamped\r\n * by UpdateAsyncronous (cpp:259-269). */\r\n instanceSpheres = [];\r\n\r\n /** Carbon Mesh::flags (InstanceFlags uint32) - batch-type bits stamped at\r\n * AddMesh (cpp:422-425), CASTS_SHADOW at AddMesh (cpp:418-421),\r\n * RENDER_IN_REFLECTION refreshed each async pass (cpp:251). */\r\n flags = 0;\r\n\r\n #geometry = null;\r\n\r\n /**\r\n * Returns the geometry resource backing this mesh, or null while none has been\r\n * assigned; the mesh does not register with the manager until it is present\r\n * and good.\r\n */\r\n GetGeometryResource()\r\n {\r\n return this.#geometry;\r\n }\r\n\r\n /**\r\n * Assigns the geometry resource this mesh renders from; a nullish value clears\r\n * it. Runtime state, deliberately not persisted.\r\n */\r\n SetGeometryResource(resource)\r\n {\r\n this.#geometry = resource ?? null;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Space-object child that hands batches of instanced meshes to the engine's\r\n * instanced mesh manager, owning their registration handles, instance flags and\r\n * world cull bounds.\r\n */\r\n@type.define({ className: \"EveChildInstancedMeshes\", family: \"eve/child\" })\r\nexport class EveChildInstancedMeshes extends EveEntity\r\n{\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n @io.read\r\n @type.mat4\r\n worldTransform = mat4.create();\r\n\r\n @io.read\r\n @type.boolean\r\n hasUpdated = false;\r\n\r\n @io.persist\r\n @type.list(\"EveChildInstancedMesh\")\r\n meshes = [];\r\n\r\n #revision = 0;\r\n\r\n /** Carbon m_perObjectDataHandle (h:143) - manager registration handle. */\r\n #perObjectDataHandle = null;\r\n\r\n /**\r\n * Carbon m_perObjectData (EveSpacePerObjectData): the PERSISTENT per-instance\r\n * record the mesh manager uploads into its structured buffer.\r\n */\r\n #perObjectData = RawData.create(\"EveSpacePerObjectData\");\r\n\r\n static #inverseScratch = mat4.create();\n\n /** EVE_SPACEOBJECT_CUSTOWMASK_MAX (EveSpaceObject2.h:49). */\n static CUSTOM_MASK_COUNT = 2;\r\n\r\n /** Carbon m_allRegistered (h:147) - the AddMeshesToManager retry latch:\r\n * set optimistically each pass, cleared by ANY not-ready mesh/area so the\r\n * per-frame CollectMeshes retries until geometry streams in. */\r\n #allRegistered = false;\r\n\r\n /**\r\n * The authored name, persisted with the child and used to identify it in the\r\n * parent graph.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetName()\r\n {\r\n return this.name;\r\n }\r\n\r\n /** Sets the authored child name, coercing nullish to the empty string. */\r\n @carbon.method\r\n @impl.implemented\r\n SetName(name)\r\n {\r\n this.name = String(name ?? \"\");\r\n }\r\n\r\n /**\r\n * Carbon EveChildInstancedMeshes::UpdateVisibility (cpp:183-186) only caches\r\n * the frame's camera frustum for later use; the JS port has no consumer for\r\n * that cache, so the frame hook does nothing.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n UpdateVisibility()\r\n {\r\n }\r\n\r\n /**\r\n * Carbon EveChildInstancedMeshes::GetRenderables (cpp:188-190) collects\r\n * nothing: the instanced mesh manager emits the draws, so the accumulator\r\n * comes back unchanged.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetRenderables(renderables = [])\r\n {\r\n return renderables;\r\n }\r\n\r\n /**\r\n * Carbon EveChildInstancedMeshes::GetBoundingSphere (cpp:192-195) always\r\n * returns false - the child publishes no bounds of its own, because each mesh\r\n * registers its own sphere group with the manager.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphere()\r\n {\r\n return false;\r\n }\r\n\r\n /**\r\n * Carbon EveChildInstancedMeshes::UpdateAsyncronous (cpp:204-238): the\r\n * per-instance record is this child's own transforms plus the hull values it\r\n * inherits, flattened into ONE struct - EveSpacePerObjectData carries both\r\n * the VS and PS halves because the manager uploads it as a single instance.\r\n * @param {Object} parent - the space-object parent, when there is one\r\n */\r\n #UpdatePerObjectData(parent)\r\n {\r\n const record = this.#perObjectData;\r\n\r\n // cpp:211: the STORED (already transposed) transform rolls into last.\r\n record.SetAndTranspose(\"worldTransformLast\", record.GetTransposed(\"worldTransform\"));\r\n record.SetAndTranspose(\"worldTransform\", this.worldTransform);\r\n\r\n // cpp:214 inverts the transposed matrix; by carbon-math-conventions F2 that\r\n // equals the transpose of the logical inverse, which is what this produces.\r\n const inverse = EveChildInstancedMeshes.#inverseScratch;\r\n if (!mat4.invert(inverse, this.worldTransform))\r\n {\r\n mat4.identity(inverse);\r\n }\r\n record.SetAndTranspose(\"invWorldTransform\", inverse);\r\n\r\n if (typeof parent?.GetPerObjectStructs !== \"function\")\r\n {\r\n return;\r\n }\r\n\r\n const { vs, ps } = parent.GetPerObjectStructs();\r\n\r\n for (const name of [ \"shipData\", \"clipSphereCenter\", \"clipRadiusSq\", \"clipRadius2Sq\",\r\n \"impactDataOffset\", \"clipSphereFactor2\", \"clipSphereFactor\" ])\r\n {\r\n record.Set(name, ps.Get(name));\r\n }\r\n for (const name of [ \"ellpsoidRadii\", \"ellpsoidCenter\", \"customData\" ])\r\n {\r\n record.Set(name, vs.Get(name));\r\n }\r\n record.Set(\"customMaskClamps\", ps.Get(\"customMaskClamps\"));\r\n record.Set(\"boneOffsets\", vs.Get(\"boneOffsets\"));\r\n\r\n for (let slot = 0; slot < EveChildInstancedMeshes.CUSTOM_MASK_COUNT; slot++)\r\n {\r\n record.SetAndTransposeIndex(\"customMaskMatrix\", slot, vs.GetTransposedIndex(\"customMaskMatrix\", slot));\r\n record.SetIndex(\"customMaskData\", slot, vs.GetIndex(\"customMaskData\", slot));\r\n record.SetIndex(\"customMaskMaterialIDs\", slot, ps.GetIndex(\"customMaskMaterialIDs\", slot));\r\n record.SetIndex(\"customMaskTargets\", slot, ps.GetIndex(\"customMaskTargets\", slot));\r\n }\r\n\r\n // cpp:238: the PS record's coefficients land in the record's shLighting.\r\n record.Set(\"shLighting\", ps.Get(\"shLightingCoefficients\"));\r\n }\r\n\r\n /**\r\n * Stamps the child's world transform from the parent's localToWorldTransform\r\n * (Carbon cpp:197-200); every per-instance cull sphere the async pass builds\r\n * is derived from it.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateSyncronous(_updateContext, params)\r\n {\r\n if (params?.localToWorldTransform?.length === 16)\r\n {\r\n mat4.copy(this.worldTransform, params.localToWorldTransform);\r\n }\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::UpdateAsyncronous (cpp:202-328), the CPU\r\n * half: per-mesh RENDER_IN_REFLECTION refresh (cpp:251), the mesh-local\r\n * bounds sphere radius = |center| + radius (cpp:254-255), per-instance\r\n * world cull spheres - position from the instance translation (Carbon reads\r\n * the packed rows' w = _41.._43, i.e. the transform translation) moved\r\n * through the child world transform, radius scaled by the instance's max\r\n * basis length times the child worldScale (cpp:259-269; NOTE Carbon's two\r\n * scale extractions deliberately differ - worldScale uses the world\r\n * transform's basis ROWS while the instance scale uses the packed rows'\r\n * xyz = the transpose's rows; equal under rotation + uniform scale,\r\n * ported exactly) - the world bounding sphere over all instance spheres\r\n * (cpp:257-270), a live SetSphereGroupBounds refresh on registered handles\r\n * (cpp:272-278), and the hasUpdated stamp (cpp:281). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The EveSpaceObjectVS/PSData per-object constant copy (cpp:204-238) and the raytracing mesh build (cpp:283-327) are engine-owned; mesh bounds come from a GetMeshData duck ({minBounds, maxBounds}) and meshes without one are skipped fail-closed.\")\r\n UpdateAsyncronous(_updateContext, _params)\r\n {\r\n const w = this.worldTransform;\r\n // cpp:240-242 - worldScale from the world transform's basis rows.\r\n const worldScale = Math.max(\r\n Math.hypot(w[0], w[1], w[2]),\r\n Math.hypot(w[4], w[5], w[6]),\r\n Math.hypot(w[8], w[9], w[10])\r\n );\r\n\r\n for (const mesh of this.meshes)\r\n {\r\n const geometry = mesh.GetGeometryResource();\r\n if (!geometry || geometry.IsGood?.() === false)\r\n {\r\n continue;\r\n }\r\n\r\n // cpp:251 - refreshed every pass (set OR cleared).\r\n mesh.flags = ShouldReflect(mesh.reflectionMode)\r\n ? (mesh.flags | INSTANCE_FLAG_RENDER_IN_REFLECTION) >>> 0\r\n : (mesh.flags & ~INSTANCE_FLAG_RENDER_IN_REFLECTION) >>> 0;\r\n\r\n const meshData = geometry.GetMeshData?.(mesh.meshIndex);\r\n const minBounds = meshData?.minBounds ?? meshData?.m_minBounds;\r\n const maxBounds = meshData?.maxBounds ?? meshData?.m_maxBounds;\r\n if (!minBounds || !maxBounds)\r\n {\r\n continue;\r\n }\r\n // cpp:254-255 - Sphere(AABB): center (min+max)/2, radius |max-min|/2;\r\n // then radius = sphere.radius + |sphere.center| (origin-inclusive).\r\n const centerX = (minBounds[0] + maxBounds[0]) * 0.5;\r\n const centerY = (minBounds[1] + maxBounds[1]) * 0.5;\r\n const centerZ = (minBounds[2] + maxBounds[2]) * 0.5;\r\n const localRadius =\r\n Math.hypot(maxBounds[0] - minBounds[0], maxBounds[1] - minBounds[1], maxBounds[2] - minBounds[2]) * 0.5 +\r\n Math.hypot(centerX, centerY, centerZ);\r\n\r\n mesh.instanceSpheres.length = mesh.instances.length;\r\n let boundsMinX = Infinity, boundsMinY = Infinity, boundsMinZ = Infinity;\r\n let boundsMaxX = -Infinity, boundsMaxY = -Infinity, boundsMaxZ = -Infinity;\r\n for (let index = 0; index < mesh.instances.length; index++)\r\n {\r\n const transform = mesh.instances[index].transform;\r\n // cpp:261 - packed rows' w = the transform translation (gl [12..14]).\r\n POSITION_SCRATCH[0] = transform[12];\r\n POSITION_SCRATCH[1] = transform[13];\r\n POSITION_SCRATCH[2] = transform[14];\r\n // cpp:262-264 - instance scale from the packed rows' xyz (the\r\n // transpose's rows: gl (t[0],t[4],t[8]) / (t[1],t[5],t[9]) /\r\n // (t[2],t[6],t[10])) - deliberately NOT the same extraction as\r\n // worldScale above.\r\n const scale = Math.max(\r\n Math.hypot(transform[0], transform[4], transform[8]),\r\n Math.hypot(transform[1], transform[5], transform[9]),\r\n Math.hypot(transform[2], transform[6], transform[10])\r\n ) * worldScale;\r\n vec3.transformMat4(POSITION_SCRATCH, POSITION_SCRATCH, w);\r\n\r\n const radius = localRadius * scale;\r\n const sphere = mesh.instanceSpheres[index] ??= { center: vec3.create(), radius: 0 };\r\n vec3.copy(sphere.center, POSITION_SCRATCH);\r\n sphere.radius = radius;\r\n\r\n boundsMinX = Math.min(boundsMinX, POSITION_SCRATCH[0] - radius);\r\n boundsMinY = Math.min(boundsMinY, POSITION_SCRATCH[1] - radius);\r\n boundsMinZ = Math.min(boundsMinZ, POSITION_SCRATCH[2] - radius);\r\n boundsMaxX = Math.max(boundsMaxX, POSITION_SCRATCH[0] + radius);\r\n boundsMaxY = Math.max(boundsMaxY, POSITION_SCRATCH[1] + radius);\r\n boundsMaxZ = Math.max(boundsMaxZ, POSITION_SCRATCH[2] + radius);\r\n }\r\n if (mesh.instances.length)\r\n {\r\n // cpp:270 - Sphere(worldBounds).\r\n const sphereCenter = mesh.worldBoundingSphere.center;\r\n sphereCenter[0] = (boundsMinX + boundsMaxX) * 0.5;\r\n sphereCenter[1] = (boundsMinY + boundsMaxY) * 0.5;\r\n sphereCenter[2] = (boundsMinZ + boundsMaxZ) * 0.5;\r\n mesh.worldBoundingSphere.radius =\r\n Math.hypot(boundsMaxX - boundsMinX, boundsMaxY - boundsMinY, boundsMaxZ - boundsMinZ) * 0.5;\r\n\r\n // cpp:272-278 - live refresh of a registered sphere group.\r\n if (mesh.sphereHandle)\r\n {\r\n mesh.sphereHandle.owner?.SetSphereGroupBounds?.(mesh.sphereHandle, mesh.worldBoundingSphere, mesh.flags);\r\n }\r\n }\r\n }\r\n\r\n this.hasUpdated = true;\r\n }\r\n\r\n /**\r\n * Returns the child's world transform as stamped by the last sync update.\r\n * @param {Float32Array} [out] - caller-owned; when given, receives a copy and is returned instead of the live matrix\r\n * @returns {Float32Array} out when supplied, otherwise the live internal matrix\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocalToWorldTransform(out = null)\r\n {\r\n if (out)\r\n {\r\n return mat4.copy(out, this.worldTransform);\r\n }\r\n return this.worldTransform;\r\n }\r\n\r\n /**\r\n * Carbon EveChildInstancedMeshes::Setup (cpp:335-337) is an intentional no-op:\r\n * placement comes from the authored per-instance transforms, not from an SRT\r\n * setup.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n Setup()\r\n {\r\n }\r\n\r\n /**\r\n * Carbon EveChildInstancedMeshes::ChangeLOD (cpp:339-341) is an intentional\r\n * no-op; the child keeps no LOD state.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ChangeLOD()\r\n {\r\n }\r\n\r\n /**\r\n * Accepts and discards the placement origin; this child has no Carbon origin\r\n * field and stores none.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetOrigin()\r\n {\r\n }\r\n\r\n /**\r\n * Returns false, so owners treat this child as subject to normal activation\r\n * gating.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n IsAlwaysOn()\r\n {\r\n return false;\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::SetShaderOption (cpp:343-359): flips the\r\n * option and refreshes the effect hash on every area, then removes any\r\n * registered mesh-group handle and clears the latch - so the groups\r\n * re-register with the NEW effectHash on the next AddMeshesToManager pass.\r\n * Sphere/per-object handles deliberately stay registered. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon dereferences area.effect unguarded; the JS option write is optional-chained. Handle removal + latch clear are ported.\")\r\n SetShaderOption(name, value)\r\n {\r\n for (const mesh of this.meshes)\r\n {\r\n for (const area of mesh.areas)\r\n {\r\n area.effect?.SetOption?.(name, value);\r\n area.effectHash = EveChildInstancedMeshes.#GetEffectHash(area.effect);\r\n if (area.meshGroupHandle)\r\n {\r\n area.meshGroupHandle.owner?.RemoveMeshGroup?.(area.meshGroupHandle);\r\n area.meshGroupHandle = null;\r\n this.#allRegistered = false;\r\n }\r\n }\r\n }\r\n this.#revision++;\r\n }\r\n\r\n /**\r\n * Appends one instanced mesh: normalizes the area ducks, copies the instance transforms, stamps CASTS_SHADOW plus one flag bit per area batch type (Carbon cpp:418-425), and clears the registration latch so the next AddMeshesToManager pass picks it up.\r\n * @param {Iterable} areas - area ducks ({effect, batchType, areaIndex, areaCount})\r\n * @param {Iterable<Float32Array>} instanceTransforms - 16-value matrices; copied, not retained\r\n * @returns {Boolean} false when no areas or no instances were supplied (nothing is added)\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n AddMesh(\r\n geometryPath,\r\n castsShadow,\r\n reflectionMode,\r\n meshIndex,\r\n areas,\r\n instanceTransforms,\r\n sofHullName = \"\",\r\n sofLocatorSetName = \"\"\r\n )\r\n {\r\n const sourceAreas = Array.from(areas ?? []);\r\n const sourceTransforms = Array.from(instanceTransforms ?? []);\r\n if (!sourceAreas.length || !sourceTransforms.length)\r\n {\r\n return false;\r\n }\r\n\r\n const normalizedAreas = sourceAreas.map(area => EveChildInstancedMeshes.#CreateArea(area));\r\n const instances = sourceTransforms.map((transform, sphereIndex) =>\r\n {\r\n if (!transform || transform.length !== 16)\r\n {\r\n throw new TypeError(\"EveChildInstancedMeshes instance transforms must contain 16 values\");\r\n }\r\n const instance = new EveChildInstancedMeshInstance();\r\n mat4.copy(instance.transform, transform);\r\n instance.sphereIndex = sphereIndex;\r\n return instance;\r\n });\r\n\r\n const mesh = new EveChildInstancedMesh();\r\n mesh.geometryPath = String(geometryPath ?? \"\");\r\n mesh.castsShadow = !!castsShadow;\r\n mesh.reflectionMode = reflectionMode === undefined ? 3 : Number(reflectionMode) | 0;\r\n mesh.meshIndex = Number(meshIndex) >>> 0;\r\n mesh.areas = normalizedAreas;\r\n mesh.instances = instances;\r\n mesh.sofHullName = String(sofHullName ?? \"\");\r\n mesh.sofLocatorSetName = String(sofLocatorSetName ?? \"\");\r\n // Carbon (cpp:418-425): the CASTS_SHADOW flag and one bit per area batch\r\n // type are stamped at add time; RENDER_IN_REFLECTION is refreshed each\r\n // async pass. cpp:428 clears the registration latch.\r\n if (mesh.castsShadow)\r\n {\r\n mesh.flags = (mesh.flags | INSTANCE_FLAG_CASTS_SHADOW) >>> 0;\r\n }\r\n for (const area of mesh.areas)\r\n {\r\n mesh.flags = (mesh.flags | (1 << area.batchType)) >>> 0;\r\n }\r\n this.meshes.push(mesh);\r\n this.#allRegistered = false;\r\n this.#revision++;\r\n return true;\r\n }\r\n\r\n /**\r\n * Drops every mesh and clears the hasUpdated stamp so nothing re-registers\r\n * until another update pass runs; registration handles are NOT released here,\r\n * so call UnregisterFromMeshManager first when a manager still holds them.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n Clear()\r\n {\r\n this.meshes.length = 0;\r\n this.hasUpdated = false;\r\n this.#revision++;\r\n }\r\n\r\n /**\r\n * Decodes a picking area id back to the SOF locator it came from.\r\n * @param {Number} areaId - mesh ordinal in the high 16 bits, locator index in the low 16 (the pairing AddMeshesToManager registers)\r\n * @returns {Array|null} [sofHullName, sofLocatorSetName, locatorIndex], or null when the mesh is unknown or carries no SOF hull name\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetSofSourceLocator(areaId)\r\n {\r\n const value = Number(areaId) >>> 0;\r\n const mesh = this.meshes[value >>> 16];\r\n if (!mesh || !mesh.sofHullName)\r\n {\r\n return null;\r\n }\r\n return [mesh.sofHullName, mesh.sofLocatorSetName, value & 0xffff];\r\n }\r\n\r\n /** Number of meshes currently held. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMeshCount()\r\n {\r\n return this.meshes.length;\r\n }\r\n\r\n /**\r\n * Reports one mesh's authoring state as a positional tuple (Carbon's multiple out-params).\r\n * @param {Number} meshId - mesh index; RangeError when out of range\r\n * @returns {Array} [geometryPath, geometryResource, meshIndex, castsShadow, reflectionMode, areaCount, instanceCount]\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetMeshInfo(meshId)\r\n {\r\n const mesh = EveChildInstancedMeshes.#GetMesh(this.meshes, meshId);\r\n return [\r\n mesh.geometryPath,\r\n mesh.GetGeometryResource(),\r\n mesh.meshIndex,\r\n mesh.castsShadow,\r\n mesh.reflectionMode,\r\n mesh.areas.length,\r\n mesh.instances.length\r\n ];\r\n }\r\n\r\n /**\r\n * Reports one area of one mesh as a positional tuple (Carbon's multiple out-params).\r\n * @param {Number} meshId - mesh index; RangeError when out of range\r\n * @param {Number} areaId - area index within that mesh; RangeError when out of range\r\n * @returns {Array} [effect, batchType, areaIndex, areaCount] - the effect is the live reference\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetAreaInfo(meshId, areaId)\r\n {\r\n const mesh = EveChildInstancedMeshes.#GetMesh(this.meshes, meshId);\r\n const index = Number(areaId) >>> 0;\r\n if (index >= mesh.areas.length)\r\n {\r\n throw new RangeError(`EveChildInstancedMeshes area index ${index} is out of range`);\r\n }\r\n const area = mesh.areas[index];\r\n return [area.effect, area.batchType, area.areaIndex, area.areaCount];\r\n }\r\n\r\n /**\r\n * Whether the given mesh is currently displayed; throws RangeError for an\r\n * unknown mesh index.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetMeshDisplay(meshId)\r\n {\r\n return EveChildInstancedMeshes.#GetMesh(this.meshes, meshId).display;\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::SetMeshDisplay (cpp:663-691): a toggle\r\n * clears the latch; turning a mesh OFF eagerly removes its sphere and\r\n * mesh-group handles - which is why AddMeshesToManager's display-off skip\r\n * does NOT clear the latch (the handles are already gone). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Handle invalidation after removal is explicit (Carbon's DataHandle is invalidated by the manager by reference).\")\r\n SetMeshDisplay(meshId, display)\r\n {\r\n const mesh = EveChildInstancedMeshes.#GetMesh(this.meshes, meshId);\r\n const next = !!display;\r\n if (mesh.display !== next)\r\n {\r\n mesh.display = next;\r\n this.#allRegistered = false;\r\n if (!next)\r\n {\r\n if (mesh.sphereHandle)\r\n {\r\n mesh.sphereHandle.owner?.RemoveBoundingSphereGroup?.(mesh.sphereHandle);\r\n mesh.sphereHandle = null;\r\n }\r\n for (const area of mesh.areas)\r\n {\r\n if (area.meshGroupHandle)\r\n {\r\n area.meshGroupHandle.owner?.RemoveMeshGroup?.(area.meshGroupHandle);\r\n area.meshGroupHandle = null;\r\n }\r\n }\r\n }\r\n this.#revision++;\r\n }\r\n }\r\n\r\n /**\r\n * Assigns one mesh's geometry resource, bumping the revision only when it\r\n * actually changes; registration waits for the next AddMeshesToManager pass.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n SetGeometryResource(meshId, geometry)\r\n {\r\n const mesh = EveChildInstancedMeshes.#GetMesh(this.meshes, meshId);\r\n if (mesh.GetGeometryResource() !== geometry)\r\n {\r\n mesh.SetGeometryResource(geometry);\r\n this.#revision++;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a detached snapshot of one mesh - instance transforms cloned, areas\r\n * shallow-copied, geometry resource shared by reference - so callers can read\r\n * it without touching live registration state.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetMeshData(meshId)\r\n {\r\n const mesh = EveChildInstancedMeshes.#GetMesh(this.meshes, meshId);\r\n return EveChildInstancedMeshes.#CloneMesh(mesh);\r\n }\r\n\r\n /**\r\n * Monotonic counter bumped by every structural change (AddMesh, Clear,\r\n * SetMeshDisplay, SetGeometryResource, SetShaderOption), for consumers caching\r\n * derived data.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetRevision()\r\n {\r\n return this.#revision;\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::RegisterComponents (cpp:36-43):\r\n * unconditional InstancedMeshProvider + ShadowCaster leaf\r\n * self-registration. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n registry.RegisterComponent(EveComponentType.InstancedMeshProvider, this);\r\n registry.RegisterComponent(EveComponentType.ShadowCaster, this);\r\n }\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::UnRegisterComponents (cpp:45-48) only\r\n * calls UnregisterFromMeshManager; own components were already removed by\r\n * EveEntity::UnRegister (EveEntity.cpp:90). */\r\n @carbon.method\r\n @impl.implemented\r\n UnRegisterComponents()\r\n {\r\n this.UnregisterFromMeshManager();\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::UnregisterFromMeshManager (cpp:50-71):\r\n * every registered mesh-group / sphere-group / per-object handle is removed\r\n * through ITS OWN handle.owner (handles may span managers after a switch),\r\n * then the latch clears. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Handle invalidation after removal is explicit (Carbon's DataHandle is invalidated by the manager by reference).\")\r\n UnregisterFromMeshManager()\r\n {\r\n for (const mesh of this.meshes)\r\n {\r\n for (const area of mesh.areas)\r\n {\r\n if (area.meshGroupHandle)\r\n {\r\n area.meshGroupHandle.owner?.RemoveMeshGroup?.(area.meshGroupHandle);\r\n area.meshGroupHandle = null;\r\n }\r\n }\r\n if (mesh.sphereHandle)\r\n {\r\n mesh.sphereHandle.owner?.RemoveBoundingSphereGroup?.(mesh.sphereHandle);\r\n mesh.sphereHandle = null;\r\n }\r\n }\r\n if (this.#perObjectDataHandle)\r\n {\r\n this.#perObjectDataHandle.owner?.RemovePerObjectData?.(this.#perObjectDataHandle);\r\n this.#perObjectDataHandle = null;\r\n }\r\n this.#allRegistered = false;\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::AddMeshesToManager (cpp:472-553), the\r\n * InstancedMeshProvider entry the engine's CollectMeshes drives\r\n * (EveInstancedMeshManager.cpp:45-56; scene EveSpaceScene.cpp:1516).\r\n * Contract quirks preserved: nothing registers before the first update\r\n * pass (cpp:474); switching managers tears EVERYTHING down BEFORE the\r\n * latch early-out (cpp:478-481); the latch is set optimistically and\r\n * cleared by ANY not-ready mesh/area so the per-frame caller retries until\r\n * geometry streams in - EXCEPT display-off meshes, which skip WITHOUT\r\n * clearing it (their handles were already removed by SetMeshDisplay);\r\n * handles are add-once (partial re-registration after SetShaderOption /\r\n * display toggles); an area-level effect failure clears the latch while\r\n * the mesh's sphere group STAYS registered (Carbon's asymmetry);\r\n * pickingOwnerIndex is the mesh ordinal (pairs with GetSofSourceLocator's\r\n * meshIndex<<16 decode). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The manager is an injected engine duck returning handles (out-params become returns; .owner is stamped when the duck omits it); Carbon's combinedVertexDeclaration gate (cpp:499, a D3D declaration handle rebuilt in RebuildCachedData cpp:435-457) reduces to geometry presence + IsGood, and the declaration argument is passed as 0 for the engine to rebuild; GetRawRoot() becomes the object itself as picking owner.\")\r\n AddMeshesToManager(manager)\r\n {\r\n if (!this.hasUpdated)\r\n {\r\n return;\r\n }\r\n if (this.#perObjectDataHandle && this.#perObjectDataHandle.owner !== manager)\r\n {\r\n this.UnregisterFromMeshManager();\r\n }\r\n if (this.#allRegistered)\r\n {\r\n return;\r\n }\r\n\r\n if (!this.#perObjectDataHandle)\r\n {\r\n const handle = manager?.AddPerObjectData?.(this) ?? null;\r\n if (handle && typeof handle === \"object\" && !handle.owner)\r\n {\r\n handle.owner = manager;\r\n }\r\n this.#perObjectDataHandle = handle;\r\n }\r\n\r\n this.#allRegistered = true;\r\n for (let meshIndex = 0; meshIndex < this.meshes.length; meshIndex++)\r\n {\r\n const mesh = this.meshes[meshIndex];\r\n if (!mesh.display)\r\n {\r\n continue;\r\n }\r\n const geometry = mesh.GetGeometryResource();\r\n if (!geometry || geometry.IsGood?.() === false)\r\n {\r\n this.#allRegistered = false;\r\n continue;\r\n }\r\n if (!mesh.instances.length)\r\n {\r\n this.#allRegistered = false;\r\n continue;\r\n }\r\n if (mesh.instances.length !== mesh.instanceSpheres.length)\r\n {\r\n this.#allRegistered = false;\r\n continue;\r\n }\r\n\r\n if (!mesh.sphereHandle)\r\n {\r\n const handle = manager?.AddBoundingSphereGroup?.(\r\n mesh.worldBoundingSphere,\r\n mesh.flags,\r\n mesh.instanceSpheres,\r\n mesh.instanceSpheres.length\r\n ) ?? null;\r\n if (handle && typeof handle === \"object\" && !handle.owner)\r\n {\r\n handle.owner = manager;\r\n }\r\n mesh.sphereHandle = handle;\r\n }\r\n\r\n for (const area of mesh.areas)\r\n {\r\n if (area.meshGroupHandle)\r\n {\r\n continue;\r\n }\r\n if (!area.effect)\r\n {\r\n this.#allRegistered = false;\r\n continue;\r\n }\r\n const handle = manager?.AddMeshGroup?.(\r\n geometry,\r\n 0,\r\n area.batchType,\r\n mesh.meshIndex,\r\n area.areaIndex,\r\n area.areaCount,\r\n area.effect,\r\n area.effectHash,\r\n this.#perObjectDataHandle,\r\n mesh.sphereHandle,\r\n mesh.instances,\r\n mesh.instances.length,\r\n this,\r\n meshIndex\r\n ) ?? null;\r\n if (handle && typeof handle === \"object\" && !handle.owner)\r\n {\r\n handle.owner = manager;\r\n }\r\n area.meshGroupHandle = handle;\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::IsCastingShadow (cpp:73-76) always\r\n * returns false (instanced shadows cull per instance group); presence\r\n * satisfies the \"ShadowCaster\" duck contract. */\r\n @carbon.method\r\n @impl.implemented\r\n IsCastingShadow(..._args)\r\n {\r\n return false;\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::GetShadowBatches (cpp:78-80) is an\r\n * intentional no-op (the instanced mesh manager emits the batches). */\r\n @carbon.method\r\n @impl.noop\r\n GetShadowBatches(..._args)\r\n {\r\n }\r\n\r\n /** Carbon EveChildInstancedMeshes::GetShadowPerObjectData (cpp:82-85)\r\n * returns null (per-object data flows through the mesh manager). */\r\n @carbon.method\r\n @impl.implemented\r\n GetShadowPerObjectData(..._args)\r\n {\r\n return null;\r\n }\r\n\r\n /**\r\n * Resolves a mesh index against the list, throwing RangeError rather than\r\n * returning undefined so every public accessor fails loudly.\r\n */\r\n static #GetMesh(meshes, meshId)\r\n {\r\n const index = Number(meshId) >>> 0;\r\n if (index >= meshes.length)\r\n {\r\n throw new RangeError(`EveChildInstancedMeshes mesh index ${index} is out of range`);\r\n }\r\n return meshes[index];\r\n }\r\n\r\n /**\r\n * Builds an area record from a plain duck, defaulting areaCount to 1 and\r\n * caching the effect hash the manager registers the mesh group under.\r\n */\r\n static #CreateArea(value)\r\n {\r\n const source = value ?? {};\r\n const area = new EveChildInstancedMeshArea();\r\n area.effect = source.effect ?? null;\r\n area.batchType = Number(source.batchType) >>> 0;\r\n area.areaIndex = Number(source.areaIndex) >>> 0;\r\n area.areaCount = source.areaCount === undefined ? 1 : Number(source.areaCount) >>> 0;\r\n area.effectHash = EveChildInstancedMeshes.#GetEffectHash(area.effect);\r\n return area;\r\n }\r\n\r\n /**\r\n * Deep-copies a mesh into a plain object for GetMeshData: instance transforms\r\n * cloned, areas spread-copied, the geometry resource shared by reference.\r\n */\r\n static #CloneMesh(mesh)\r\n {\r\n return {\r\n geometryPath: mesh.geometryPath,\r\n geometry: mesh.GetGeometryResource(),\r\n castsShadow: mesh.castsShadow,\r\n reflectionMode: mesh.reflectionMode,\r\n meshIndex: mesh.meshIndex,\r\n areas: mesh.areas.map(area => ({ ...area })),\r\n instances: mesh.instances.map(instance => ({\r\n transform: mat4.clone(instance.transform),\r\n sphereIndex: instance.sphereIndex\r\n })),\r\n sofHullName: mesh.sofHullName,\r\n sofLocatorSetName: mesh.sofLocatorSetName,\r\n display: mesh.display\r\n };\r\n }\r\n\r\n /**\r\n * Reads an effect's hash through GetHashValue() or a .hash field, yielding 0\r\n * when neither is available so a hashless effect still registers\r\n * deterministically.\r\n */\r\n static #GetEffectHash(effect)\r\n {\r\n const hash = effect?.GetHashValue?.() ?? effect?.hash ?? 0;\r\n return Number(hash) || 0;\r\n }\r\n\r\n}\r\n"],"names":["INSTANCE_FLAG_CASTS_SHADOW","INSTANCE_FLAG_RENDER_IN_REFLECTION","POSITION_SCRATCH","vec3","create","_EveChildInstancedMes","EveChildInstancedMeshArea","CjsModel","e","_init_effect","_init_extra_effect","_init_batchType","_init_extra_batchType","_init_areaIndex","_init_extra_areaIndex","_init_areaCount","_init_extra_areaCount","_init_effectHash","_init_extra_effectHash","c","_initClass","_applyDecs","type","define","className","family","io","rebuild","persist","objectRef","uint32","read","float32","effect","batchType","areaIndex","areaCount","effectHash","meshGroupHandle","_EveChildInstancedMes2","EveChildInstancedMeshInstance","_init_transform","_init_extra_transform","_init_sphereIndex","_init_extra_sphereIndex","_initClass2","mat4","constructor","args","transform","sphereIndex","_EveChildInstancedMes3","EveChildInstancedMesh","_init_geometryPath","_init_extra_geometryPath","_init_castsShadow","_init_extra_castsShadow","_init_reflectionMode","_init_extra_reflectionMode","_init_meshIndex","_init_extra_meshIndex","_init_areas","_init_extra_areas","_init_instances","_init_extra_instances","_init_sofHullName","_init_extra_sofHullName","_init_sofLocatorSetName","_init_extra_sofLocatorSetName","_init_display","_init_extra_display","_initClass3","string","boolean","int32","list","geometryPath","castsShadow","reflectionMode","meshIndex","areas","instances","sofHullName","sofLocatorSetName","display","sphereHandle","worldBoundingSphere","center","radius","instanceSpheres","flags","GetGeometryResource","SetGeometryResource","resource","_EveChildInstancedMes4","_identity","EveChildInstancedMeshes","EveEntity","_init_name","_init_extra_name","_init_worldTransform","_init_extra_worldTransform","_init_hasUpdated","_init_extra_hasUpdated","_init_meshes","_init_extra_meshes","_initProto","_initClass4","carbon","method","impl","implemented","adapted","reason","noop","name","worldTransform","hasUpdated","meshes","RawData","GetName","SetName","String","UpdateVisibility","GetRenderables","renderables","GetBoundingSphere","#UpdatePerObjectData","parent","record","SetAndTranspose","GetTransposed","inverse","invert","identity","GetPerObjectStructs","vs","ps","Set","Get","slot","CUSTOM_MASK_COUNT","SetAndTransposeIndex","GetTransposedIndex","SetIndex","GetIndex","UpdateSyncronous","_updateContext","params","localToWorldTransform","length","copy","UpdateAsyncronous","_params","w","worldScale","Math","max","hypot","mesh","geometry","IsGood","ShouldReflect","meshData","GetMeshData","minBounds","m_minBounds","maxBounds","m_maxBounds","centerX","centerY","centerZ","localRadius","boundsMinX","Infinity","boundsMinY","boundsMinZ","boundsMaxX","boundsMaxY","boundsMaxZ","index","scale","transformMat4","sphere","min","sphereCenter","owner","SetSphereGroupBounds","GetLocalToWorldTransform","out","Setup","ChangeLOD","SetOrigin","IsAlwaysOn","SetShaderOption","value","area","SetOption","RemoveMeshGroup","AddMesh","instanceTransforms","sourceAreas","Array","from","sourceTransforms","normalizedAreas","map","TypeError","instance","undefined","Number","push","Clear","GetSofSourceLocator","areaId","GetMeshCount","GetMeshInfo","meshId","GetAreaInfo","RangeError","GetMeshDisplay","SetMeshDisplay","next","RemoveBoundingSphereGroup","GetRevision","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","InstancedMeshProvider","ShadowCaster","UnRegisterComponents","UnregisterFromMeshManager","RemovePerObjectData","AddMeshesToManager","manager","handle","AddPerObjectData","AddBoundingSphereGroup","AddMeshGroup","IsCastingShadow","_args","GetShadowBatches","GetShadowPerObjectData","#GetMesh","#CreateArea","source","#CloneMesh","clone","#GetEffectHash","hash","GetHashValue"],"mappings":"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"}
|
|
@@ -7,6 +7,12 @@ import { EveChildTransform as _EveChildTransform } from './EveChildTransform.js'
|
|
|
7
7
|
import { EveComponentType } from '../EveComponentTypes.js';
|
|
8
8
|
|
|
9
9
|
let _initProto, _initClass, _init_priority, _init_extra_priority, _init_name, _init_extra_name, _init_backgroundIntensity, _init_extra_backgroundIntensity, _init_intensity, _init_extra_intensity, _init_reflectionIntensity, _init_extra_reflectionIntensity, _init_sunIntensity, _init_extra_sunIntensity, _init_sunColor, _init_extra_sunColor, _init_volumes, _init_extra_volumes;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Space-object child that overrides scene sun, background and reflection
|
|
13
|
+
* lighting, its blend strength driven by how deeply the camera sits inside the
|
|
14
|
+
* volumes it owns.
|
|
15
|
+
*/
|
|
10
16
|
let _EveChildLightingOver;
|
|
11
17
|
new class extends _identity {
|
|
12
18
|
static [class EveChildLightingOverride extends _EveChildTransform {
|
|
@@ -49,6 +55,12 @@ new class extends _identity {
|
|
|
49
55
|
registry.RegisterComponent(EveComponentType.EveLightingOverride, this);
|
|
50
56
|
}
|
|
51
57
|
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Returns this child's contribution to the lighting system: its priority, the
|
|
61
|
+
* blend intensity resolved by the last async update, and the sun
|
|
62
|
+
* colour/intensity plus background and reflection intensities to blend toward.
|
|
63
|
+
*/
|
|
52
64
|
GetOverrides() {
|
|
53
65
|
return {
|
|
54
66
|
priority: this.priority,
|
|
@@ -61,17 +73,41 @@ new class extends _identity {
|
|
|
61
73
|
}
|
|
62
74
|
};
|
|
63
75
|
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The authored name, persisted with the override and used to identify it in
|
|
79
|
+
* the parent graph.
|
|
80
|
+
*/
|
|
64
81
|
GetName() {
|
|
65
82
|
return this.name;
|
|
66
83
|
}
|
|
84
|
+
|
|
85
|
+
/** Sets the authored override name, coercing nullish to the empty string. */
|
|
67
86
|
SetName(name) {
|
|
68
87
|
this.name = String(name ?? "");
|
|
69
88
|
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Copies the cached local-space bounding sphere into out and always reports success, even before any volume has contributed.
|
|
92
|
+
* @param {Float32Array} [out] - caller-owned; receives (x, y, z, radius)
|
|
93
|
+
* @returns {Boolean} always true
|
|
94
|
+
*/
|
|
70
95
|
GetBoundingSphere(out = vec4.create()) {
|
|
71
96
|
vec4.set(out, this.#boundingSphere.center[0], this.#boundingSphere.center[1], this.#boundingSphere.center[2], this.#boundingSphere.radius);
|
|
72
97
|
return true;
|
|
73
98
|
}
|
|
99
|
+
|
|
100
|
+
/** No-op: a lighting override carries no sync-side frame work. */
|
|
74
101
|
UpdateSyncronous(_updateContext, _params) {}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Rebuilds the world transform and bounding sphere, then resolves the override
|
|
105
|
+
* strength for the frame: with no volumes the authored intensity applies
|
|
106
|
+
* directly; otherwise the camera is moved into local space and, only while it
|
|
107
|
+
* is inside the bounding sphere, the strongest volume intensity there
|
|
108
|
+
* (short-circuiting at 1) is scaled by the authored intensity - a camera
|
|
109
|
+
* outside leaves the strength at zero.
|
|
110
|
+
*/
|
|
75
111
|
UpdateAsyncronous(updateContext, params = {}) {
|
|
76
112
|
this.UpdateTransform(params.localToWorldTransform ?? mat4.create());
|
|
77
113
|
this.#RebuildBoundingSphere();
|
|
@@ -91,22 +127,54 @@ new class extends _identity {
|
|
|
91
127
|
}
|
|
92
128
|
this.#overrideIntensity *= this.intensity;
|
|
93
129
|
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Copies the child's world transform, as rebuilt by the last async update.
|
|
133
|
+
* @param {Float32Array} [out] - caller-owned; allocated when omitted
|
|
134
|
+
* @returns {Float32Array} out
|
|
135
|
+
*/
|
|
94
136
|
GetLocalToWorldTransform(out = mat4.create()) {
|
|
95
137
|
return mat4.copy(out, this.worldTransform);
|
|
96
138
|
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Applies the authored scale/rotation/translation through the shared child
|
|
142
|
+
* transform setup.
|
|
143
|
+
*/
|
|
97
144
|
Setup(scale, rotation, translation, lowestLodVisible) {
|
|
98
145
|
return super.Setup(scale, rotation, translation, lowestLodVisible);
|
|
99
146
|
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Returns true unconditionally - a lighting override reports itself as always
|
|
150
|
+
* on.
|
|
151
|
+
*/
|
|
100
152
|
IsAlwaysOn() {
|
|
101
153
|
return true;
|
|
102
154
|
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Builds the initial bounding sphere from the authored volumes so the first
|
|
158
|
+
* frame can already reject an outside camera.
|
|
159
|
+
*/
|
|
103
160
|
Initialize() {
|
|
104
161
|
this.#RebuildBoundingSphere();
|
|
105
162
|
return true;
|
|
106
163
|
}
|
|
164
|
+
|
|
165
|
+
/** No-op: a lighting override is not renderable and keeps no visibility state. */
|
|
107
166
|
UpdateVisibility(_updateContext, _parentTransform, _parentLod) {}
|
|
167
|
+
|
|
168
|
+
/** No-op: a lighting override contributes settings, never renderables. */
|
|
108
169
|
GetRenderables(_renderables) {}
|
|
170
|
+
|
|
171
|
+
/** No-op: a lighting override has no LOD levels. */
|
|
109
172
|
ChangeLOD(_lod) {}
|
|
173
|
+
/**
|
|
174
|
+
* Recomputes the cached bounding sphere as the union of the child volumes'
|
|
175
|
+
* spheres, skipping volumes with a missing centre or a non-finite/negative
|
|
176
|
+
* radius, and records whether any volume contributed.
|
|
177
|
+
*/
|
|
110
178
|
#RebuildBoundingSphere() {
|
|
111
179
|
const target = this.#boundingSphere;
|
|
112
180
|
vec3.set(target.center, 0, 0, 0);
|
|
@@ -124,6 +192,12 @@ new class extends _identity {
|
|
|
124
192
|
_EveChildLightingOver.#UnionSphere(target, sphere);
|
|
125
193
|
}
|
|
126
194
|
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Grows the target sphere in place so it also encloses the given sphere,
|
|
198
|
+
* short-circuiting when either already contains the other and handling
|
|
199
|
+
* coincident centres.
|
|
200
|
+
*/
|
|
127
201
|
}];
|
|
128
202
|
Priority = Object.freeze({
|
|
129
203
|
SCENE_DEFAULT_PRIORITY: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveChildLightingOverride.js","sources":["../../../../src/eve/child/EveChildLightingOverride.js"],"sourcesContent":["// Ported/adapted from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/SpaceObject/Children/EveChildLightingOverride.h\r\n// trinity/trinity/Eve/SpaceObject/Children/EveChildLightingOverride.cpp\r\nimport { mat4 } from \"@carbonenginejs/runtime-utils/mat4\";\r\nimport { vec3 } from \"@carbonenginejs/runtime-utils/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/runtime-utils/vec4\";\r\nimport { impl, io, schema, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { EveChildTransform } from \"./EveChildTransform.js\";\r\nimport { EveComponentType } from \"../EveComponentTypes.js\";\r\n\r\n\r\n@type.define({ className: \"EveChildLightingOverride\", family: \"eve/child\" })\r\nexport class EveChildLightingOverride extends EveChildTransform\r\n{\r\n #overrideIntensity = 0;\r\n #boundingSphere = { center: vec3.create(), radius: 0, initialized: false };\r\n\r\n @io.persist\r\n @type.int32\r\n @schema.enum(\"Priority\")\r\n priority = 2;\r\n\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n @io.persist\r\n @type.float32\r\n backgroundIntensity = 1;\r\n\r\n @io.persist\r\n @type.float32\r\n intensity = 1;\r\n\r\n @io.persist\r\n @type.float32\r\n reflectionIntensity = 1;\r\n\r\n @io.persist\r\n @type.float32\r\n sunIntensity = 1;\r\n\r\n @io.persist\r\n @type.color\r\n sunColor = vec4.fromValues(1, 1, 1, 1);\r\n\r\n @io.persist\r\n @type.list(\"IEveVolume\")\r\n volumes = [];\r\n\r\n /** Carbon EveChildLightingOverride::RegisterComponents (cpp:47-50):\r\n * unconditional EveLightingOverride leaf self-registration. Carbon's\r\n * UnRegisterComponents (cpp:52-55) only removes this same component, which\r\n * EveEntity::UnRegister already did via UnRegisterAllComponents\r\n * (EveEntity.cpp:90), so the JS un-side keeps the base no-op. */\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n registry.RegisterComponent(EveComponentType.EveLightingOverride, this);\r\n }\r\n }\r\n\r\n @impl.implemented\r\n GetOverrides()\r\n {\r\n return {\r\n priority: this.priority,\r\n intensity: this.#overrideIntensity,\r\n value: {\r\n sunColor: vec4.clone(this.sunColor),\r\n sunIntensity: this.sunIntensity,\r\n backgroundIntensity: this.backgroundIntensity,\r\n reflectionIntensity: this.reflectionIntensity\r\n }\r\n };\r\n }\r\n\r\n GetName()\r\n {\r\n return this.name;\r\n }\r\n\r\n SetName(name)\r\n {\r\n this.name = String(name ?? \"\");\r\n }\r\n\r\n @impl.adapted\r\n GetBoundingSphere(out = vec4.create())\r\n {\r\n vec4.set(out, this.#boundingSphere.center[0], this.#boundingSphere.center[1], this.#boundingSphere.center[2], this.#boundingSphere.radius);\r\n return true;\r\n }\r\n\r\n UpdateSyncronous(_updateContext, _params)\r\n {\r\n }\r\n\r\n @impl.adapted\r\n UpdateAsyncronous(updateContext, params = {})\r\n {\r\n this.UpdateTransform(params.localToWorldTransform ?? mat4.create());\r\n this.#RebuildBoundingSphere();\r\n\r\n if (this.volumes.length === 0)\r\n {\r\n this.#overrideIntensity = this.intensity;\r\n return;\r\n }\r\n\r\n this.#overrideIntensity = 0;\r\n const viewPosition = updateContext?.renderContext?.GetViewPosition?.();\r\n const inverse = mat4.invert(mat4.create(), this.worldTransform);\r\n if (!viewPosition || !inverse || !this.#boundingSphere.initialized) return;\r\n const localView = vec3.transformMat4(vec3.create(), viewPosition, inverse);\r\n if (vec3.distance(localView, this.#boundingSphere.center) > this.#boundingSphere.radius) return;\r\n\r\n for (const volume of this.volumes)\r\n {\r\n this.#overrideIntensity = Math.max(this.#overrideIntensity, Number(volume?.GetIntensity?.(localView)) || 0);\r\n if (this.#overrideIntensity >= 1) break;\r\n }\r\n this.#overrideIntensity *= this.intensity;\r\n }\r\n\r\n GetLocalToWorldTransform(out = mat4.create())\r\n {\r\n return mat4.copy(out, this.worldTransform);\r\n }\r\n\r\n Setup(scale, rotation, translation, lowestLodVisible)\r\n {\r\n return super.Setup(scale, rotation, translation, lowestLodVisible);\r\n }\r\n\r\n IsAlwaysOn()\r\n {\r\n return true;\r\n }\r\n\r\n Initialize()\r\n {\r\n this.#RebuildBoundingSphere();\r\n return true;\r\n }\r\n\r\n UpdateVisibility(_updateContext, _parentTransform, _parentLod)\r\n {\r\n }\r\n\r\n GetRenderables(_renderables)\r\n {\r\n }\r\n\r\n ChangeLOD(_lod)\r\n {\r\n }\r\n\r\n static Priority = Object.freeze({\r\n SCENE_DEFAULT_PRIORITY: 0,\r\n LOW_PRIORITY: 1,\r\n MEDIUM_PRIORITY: 2,\r\n HIGH_PRIORITY: 3,\r\n UI_PRIORITY: 4,\r\n PRIORITY_COUNT: 5\r\n });\r\n\r\n #RebuildBoundingSphere()\r\n {\r\n const target = this.#boundingSphere;\r\n vec3.set(target.center, 0, 0, 0);\r\n target.radius = 0;\r\n target.initialized = false;\r\n\r\n for (const volume of this.volumes)\r\n {\r\n const sphere = volume?.GetBoundingSphere?.();\r\n if (!sphere?.center || !Number.isFinite(sphere.radius) || sphere.radius < 0) continue;\r\n if (!target.initialized)\r\n {\r\n vec3.copy(target.center, sphere.center);\r\n target.radius = sphere.radius;\r\n target.initialized = true;\r\n continue;\r\n }\r\n EveChildLightingOverride.#UnionSphere(target, sphere);\r\n }\r\n }\r\n\r\n static #UnionSphere(target, sphere)\r\n {\r\n const delta = vec3.subtract(vec3.create(), sphere.center, target.center);\r\n const distance = vec3.length(delta);\r\n if (distance + sphere.radius <= target.radius) return;\r\n if (distance + target.radius <= sphere.radius)\r\n {\r\n vec3.copy(target.center, sphere.center);\r\n target.radius = sphere.radius;\r\n return;\r\n }\r\n if (distance === 0)\r\n {\r\n target.radius = Math.max(target.radius, sphere.radius);\r\n return;\r\n }\r\n const radius = (target.radius + sphere.radius + distance) * 0.5;\r\n vec3.scaleAndAdd(target.center, target.center, delta, (radius - target.radius) / distance);\r\n target.radius = radius;\r\n }\r\n}\r\n"],"names":["_EveChildLightingOver","_identity","EveChildLightingOverride","EveChildTransform","e","_init_priority","_init_extra_priority","_init_name","_init_extra_name","_init_backgroundIntensity","_init_extra_backgroundIntensity","_init_intensity","_init_extra_intensity","_init_reflectionIntensity","_init_extra_reflectionIntensity","_init_sunIntensity","_init_extra_sunIntensity","_init_sunColor","_init_extra_sunColor","_init_volumes","_init_extra_volumes","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","int32","schema","enum","string","float32","color","list","impl","implemented","adapted","constructor","args","center","vec3","create","radius","initialized","priority","name","backgroundIntensity","intensity","reflectionIntensity","sunIntensity","sunColor","vec4","fromValues","volumes","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","EveLightingOverride","GetOverrides","value","clone","GetName","SetName","String","GetBoundingSphere","out","set","UpdateSyncronous","_updateContext","_params","UpdateAsyncronous","updateContext","params","UpdateTransform","localToWorldTransform","mat4","length","viewPosition","renderContext","GetViewPosition","inverse","invert","worldTransform","localView","transformMat4","distance","volume","Math","max","Number","GetIntensity","GetLocalToWorldTransform","copy","Setup","scale","rotation","translation","lowestLodVisible","IsAlwaysOn","Initialize","UpdateVisibility","_parentTransform","_parentLod","GetRenderables","_renderables","ChangeLOD","_lod","#RebuildBoundingSphere","target","sphere","isFinite","Priority","Object","freeze","SCENE_DEFAULT_PRIORITY","LOW_PRIORITY","MEDIUM_PRIORITY","HIGH_PRIORITY","UI_PRIORITY","PRIORITY_COUNT","#UnionSphere","delta","subtract","scaleAndAdd"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveChildLightingOverride.js","sources":["../../../../src/eve/child/EveChildLightingOverride.js"],"sourcesContent":["// Ported/adapted from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/SpaceObject/Children/EveChildLightingOverride.h\r\n// trinity/trinity/Eve/SpaceObject/Children/EveChildLightingOverride.cpp\r\nimport { mat4 } from \"@carbonenginejs/runtime-utils/mat4\";\r\nimport { vec3 } from \"@carbonenginejs/runtime-utils/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/runtime-utils/vec4\";\r\nimport { impl, io, schema, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { EveChildTransform } from \"./EveChildTransform.js\";\r\nimport { EveComponentType } from \"../EveComponentTypes.js\";\r\n\r\n\r\n/**\r\n * Space-object child that overrides scene sun, background and reflection\r\n * lighting, its blend strength driven by how deeply the camera sits inside the\r\n * volumes it owns.\r\n */\r\n@type.define({ className: \"EveChildLightingOverride\", family: \"eve/child\" })\r\nexport class EveChildLightingOverride extends EveChildTransform\r\n{\r\n #overrideIntensity = 0;\r\n #boundingSphere = { center: vec3.create(), radius: 0, initialized: false };\r\n\r\n @io.persist\r\n @type.int32\r\n @schema.enum(\"Priority\")\r\n priority = 2;\r\n\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n @io.persist\r\n @type.float32\r\n backgroundIntensity = 1;\r\n\r\n @io.persist\r\n @type.float32\r\n intensity = 1;\r\n\r\n @io.persist\r\n @type.float32\r\n reflectionIntensity = 1;\r\n\r\n @io.persist\r\n @type.float32\r\n sunIntensity = 1;\r\n\r\n @io.persist\r\n @type.color\r\n sunColor = vec4.fromValues(1, 1, 1, 1);\r\n\r\n @io.persist\r\n @type.list(\"IEveVolume\")\r\n volumes = [];\r\n\r\n /** Carbon EveChildLightingOverride::RegisterComponents (cpp:47-50):\r\n * unconditional EveLightingOverride leaf self-registration. Carbon's\r\n * UnRegisterComponents (cpp:52-55) only removes this same component, which\r\n * EveEntity::UnRegister already did via UnRegisterAllComponents\r\n * (EveEntity.cpp:90), so the JS un-side keeps the base no-op. */\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n registry.RegisterComponent(EveComponentType.EveLightingOverride, this);\r\n }\r\n }\r\n\r\n /**\r\n * Returns this child's contribution to the lighting system: its priority, the\r\n * blend intensity resolved by the last async update, and the sun\r\n * colour/intensity plus background and reflection intensities to blend toward.\r\n */\r\n @impl.implemented\r\n GetOverrides()\r\n {\r\n return {\r\n priority: this.priority,\r\n intensity: this.#overrideIntensity,\r\n value: {\r\n sunColor: vec4.clone(this.sunColor),\r\n sunIntensity: this.sunIntensity,\r\n backgroundIntensity: this.backgroundIntensity,\r\n reflectionIntensity: this.reflectionIntensity\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * The authored name, persisted with the override and used to identify it in\r\n * the parent graph.\r\n */\r\n GetName()\r\n {\r\n return this.name;\r\n }\r\n\r\n /** Sets the authored override name, coercing nullish to the empty string. */\r\n SetName(name)\r\n {\r\n this.name = String(name ?? \"\");\r\n }\r\n\r\n /**\r\n * Copies the cached local-space bounding sphere into out and always reports success, even before any volume has contributed.\r\n * @param {Float32Array} [out] - caller-owned; receives (x, y, z, radius)\r\n * @returns {Boolean} always true\r\n */\r\n @impl.adapted\r\n GetBoundingSphere(out = vec4.create())\r\n {\r\n vec4.set(out, this.#boundingSphere.center[0], this.#boundingSphere.center[1], this.#boundingSphere.center[2], this.#boundingSphere.radius);\r\n return true;\r\n }\r\n\r\n /** No-op: a lighting override carries no sync-side frame work. */\r\n UpdateSyncronous(_updateContext, _params)\r\n {\r\n }\r\n\r\n /**\r\n * Rebuilds the world transform and bounding sphere, then resolves the override\r\n * strength for the frame: with no volumes the authored intensity applies\r\n * directly; otherwise the camera is moved into local space and, only while it\r\n * is inside the bounding sphere, the strongest volume intensity there\r\n * (short-circuiting at 1) is scaled by the authored intensity - a camera\r\n * outside leaves the strength at zero.\r\n */\r\n @impl.adapted\r\n UpdateAsyncronous(updateContext, params = {})\r\n {\r\n this.UpdateTransform(params.localToWorldTransform ?? mat4.create());\r\n this.#RebuildBoundingSphere();\r\n\r\n if (this.volumes.length === 0)\r\n {\r\n this.#overrideIntensity = this.intensity;\r\n return;\r\n }\r\n\r\n this.#overrideIntensity = 0;\r\n const viewPosition = updateContext?.renderContext?.GetViewPosition?.();\r\n const inverse = mat4.invert(mat4.create(), this.worldTransform);\r\n if (!viewPosition || !inverse || !this.#boundingSphere.initialized) return;\r\n const localView = vec3.transformMat4(vec3.create(), viewPosition, inverse);\r\n if (vec3.distance(localView, this.#boundingSphere.center) > this.#boundingSphere.radius) return;\r\n\r\n for (const volume of this.volumes)\r\n {\r\n this.#overrideIntensity = Math.max(this.#overrideIntensity, Number(volume?.GetIntensity?.(localView)) || 0);\r\n if (this.#overrideIntensity >= 1) break;\r\n }\r\n this.#overrideIntensity *= this.intensity;\r\n }\r\n\r\n /**\r\n * Copies the child's world transform, as rebuilt by the last async update.\r\n * @param {Float32Array} [out] - caller-owned; allocated when omitted\r\n * @returns {Float32Array} out\r\n */\r\n GetLocalToWorldTransform(out = mat4.create())\r\n {\r\n return mat4.copy(out, this.worldTransform);\r\n }\r\n\r\n /**\r\n * Applies the authored scale/rotation/translation through the shared child\r\n * transform setup.\r\n */\r\n Setup(scale, rotation, translation, lowestLodVisible)\r\n {\r\n return super.Setup(scale, rotation, translation, lowestLodVisible);\r\n }\r\n\r\n /**\r\n * Returns true unconditionally - a lighting override reports itself as always\r\n * on.\r\n */\r\n IsAlwaysOn()\r\n {\r\n return true;\r\n }\r\n\r\n /**\r\n * Builds the initial bounding sphere from the authored volumes so the first\r\n * frame can already reject an outside camera.\r\n */\r\n Initialize()\r\n {\r\n this.#RebuildBoundingSphere();\r\n return true;\r\n }\r\n\r\n /** No-op: a lighting override is not renderable and keeps no visibility state. */\r\n UpdateVisibility(_updateContext, _parentTransform, _parentLod)\r\n {\r\n }\r\n\r\n /** No-op: a lighting override contributes settings, never renderables. */\r\n GetRenderables(_renderables)\r\n {\r\n }\r\n\r\n /** No-op: a lighting override has no LOD levels. */\r\n ChangeLOD(_lod)\r\n {\r\n }\r\n\r\n static Priority = Object.freeze({\r\n SCENE_DEFAULT_PRIORITY: 0,\r\n LOW_PRIORITY: 1,\r\n MEDIUM_PRIORITY: 2,\r\n HIGH_PRIORITY: 3,\r\n UI_PRIORITY: 4,\r\n PRIORITY_COUNT: 5\r\n });\r\n\r\n /**\r\n * Recomputes the cached bounding sphere as the union of the child volumes'\r\n * spheres, skipping volumes with a missing centre or a non-finite/negative\r\n * radius, and records whether any volume contributed.\r\n */\r\n #RebuildBoundingSphere()\r\n {\r\n const target = this.#boundingSphere;\r\n vec3.set(target.center, 0, 0, 0);\r\n target.radius = 0;\r\n target.initialized = false;\r\n\r\n for (const volume of this.volumes)\r\n {\r\n const sphere = volume?.GetBoundingSphere?.();\r\n if (!sphere?.center || !Number.isFinite(sphere.radius) || sphere.radius < 0) continue;\r\n if (!target.initialized)\r\n {\r\n vec3.copy(target.center, sphere.center);\r\n target.radius = sphere.radius;\r\n target.initialized = true;\r\n continue;\r\n }\r\n EveChildLightingOverride.#UnionSphere(target, sphere);\r\n }\r\n }\r\n\r\n /**\r\n * Grows the target sphere in place so it also encloses the given sphere,\r\n * short-circuiting when either already contains the other and handling\r\n * coincident centres.\r\n */\r\n static #UnionSphere(target, sphere)\r\n {\r\n const delta = vec3.subtract(vec3.create(), sphere.center, target.center);\r\n const distance = vec3.length(delta);\r\n if (distance + sphere.radius <= target.radius) return;\r\n if (distance + target.radius <= sphere.radius)\r\n {\r\n vec3.copy(target.center, sphere.center);\r\n target.radius = sphere.radius;\r\n return;\r\n }\r\n if (distance === 0)\r\n {\r\n target.radius = Math.max(target.radius, sphere.radius);\r\n return;\r\n }\r\n const radius = (target.radius + sphere.radius + distance) * 0.5;\r\n vec3.scaleAndAdd(target.center, target.center, delta, (radius - target.radius) / distance);\r\n target.radius = radius;\r\n }\r\n}\r\n"],"names":["_EveChildLightingOver","_identity","EveChildLightingOverride","EveChildTransform","e","_init_priority","_init_extra_priority","_init_name","_init_extra_name","_init_backgroundIntensity","_init_extra_backgroundIntensity","_init_intensity","_init_extra_intensity","_init_reflectionIntensity","_init_extra_reflectionIntensity","_init_sunIntensity","_init_extra_sunIntensity","_init_sunColor","_init_extra_sunColor","_init_volumes","_init_extra_volumes","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","int32","schema","enum","string","float32","color","list","impl","implemented","adapted","constructor","args","center","vec3","create","radius","initialized","priority","name","backgroundIntensity","intensity","reflectionIntensity","sunIntensity","sunColor","vec4","fromValues","volumes","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","EveLightingOverride","GetOverrides","value","clone","GetName","SetName","String","GetBoundingSphere","out","set","UpdateSyncronous","_updateContext","_params","UpdateAsyncronous","updateContext","params","UpdateTransform","localToWorldTransform","mat4","length","viewPosition","renderContext","GetViewPosition","inverse","invert","worldTransform","localView","transformMat4","distance","volume","Math","max","Number","GetIntensity","GetLocalToWorldTransform","copy","Setup","scale","rotation","translation","lowestLodVisible","IsAlwaysOn","Initialize","UpdateVisibility","_parentTransform","_parentLod","GetRenderables","_renderables","ChangeLOD","_lod","#RebuildBoundingSphere","target","sphere","isFinite","Priority","Object","freeze","SCENE_DEFAULT_PRIORITY","LOW_PRIORITY","MEDIUM_PRIORITY","HIGH_PRIORITY","UI_PRIORITY","PRIORITY_COUNT","#UnionSphere","delta","subtract","scaleAndAdd"],"mappings":"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"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { identity as _identity, applyDecs2311 as _applyDecs2311 } from '
|
|
1
|
+
import { identity as _identity, applyDecs2311 as _applyDecs2311 } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import { io, type, carbon, impl } from '@carbonenginejs/runtime-utils/schema';
|
|
3
|
-
import { EveChildMesh as _EveChildMesh } from '
|
|
3
|
+
import { EveChildMesh as _EveChildMesh } from './EveChildMesh.js';
|
|
4
4
|
import { mat4 } from '@carbonenginejs/runtime-utils/mat4';
|
|
5
5
|
import { quat } from '@carbonenginejs/runtime-utils/quat';
|
|
6
6
|
import { sph3 } from '@carbonenginejs/runtime-utils/sph3';
|
|
7
7
|
import { vec3 } from '@carbonenginejs/runtime-utils/vec3';
|
|
8
8
|
import { vec4 } from '@carbonenginejs/runtime-utils/vec4';
|
|
9
|
-
import { EveSpaceObjectPSData as _EveSpaceObjectPSData } from '../../../eve/EveSpaceObjectPSData.js';
|
|
10
|
-
import { EveSpaceObjectVSData as _EveSpaceObjectVSData } from '../../../eve/EveSpaceObjectVSData.js';
|
|
11
9
|
|
|
12
10
|
let _initProto, _initClass, _init_linkStrengthCurves, _init_extra_linkStrengthCurves, _init_linkStrengthBindings, _init_extra_linkStrengthBindings, _init_linkBarrier, _init_extra_linkBarrier, _init_currentDistance, _init_extra_currentDistance, _init_currentDirection, _init_extra_currentDirection, _init_target, _init_extra_target, _init_linkStrength, _init_extra_linkStrength, _init_targetRadius, _init_extra_targetRadius;
|
|
13
11
|
|
|
14
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* A stretched link between a shield hull and an arc target: it orients itself
|
|
14
|
+
* along the arc, keeps its own final world placement, and inherits the hull per-object values.
|
|
15
|
+
*/
|
|
15
16
|
let _EveChildLink;
|
|
16
17
|
new class extends _identity {
|
|
17
18
|
static [class EveChildLink extends _EveChildMesh {
|
|
@@ -51,12 +52,6 @@ new class extends _identity {
|
|
|
51
52
|
/** m_isVisible (bool, EveChildMesh) - result of the last UpdateVisibility pass. */
|
|
52
53
|
#isVisible = (_init_extra_targetRadius(this), false);
|
|
53
54
|
|
|
54
|
-
/** m_vsData (EveSpaceObjectVSData, EveChildMesh) - CPU record for the per-object VS constants. */
|
|
55
|
-
#vsData = new _EveSpaceObjectVSData();
|
|
56
|
-
|
|
57
|
-
/** m_psData (EveSpaceObjectPSData, EveChildMesh) - CPU record for the per-object PS constants. */
|
|
58
|
-
#psData = new _EveSpaceObjectPSData();
|
|
59
|
-
|
|
60
55
|
/**
|
|
61
56
|
* Resolves the link direction and distance from the parent's model center to
|
|
62
57
|
* the target function (EveChildLink.cpp:40-68).
|
|
@@ -159,11 +154,17 @@ new class extends _identity {
|
|
|
159
154
|
const finalWorld = _EveChildLink.#finalWorld;
|
|
160
155
|
mat4.translate(finalWorld, this.worldTransform, shieldEllipsoidCenter);
|
|
161
156
|
|
|
162
|
-
//
|
|
163
|
-
//
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
157
|
+
// Carbon cpp:143-151: invalidate, inherit the hull's structs, then stamp
|
|
158
|
+
// the link's own placement into the records EveChildMesh owns - Carbon
|
|
159
|
+
// inherits the same pair. worldTransformLast deliberately carries the LINK
|
|
160
|
+
// ROTATION rather than the previous transform, so a stretched link resolves
|
|
161
|
+
// its motion vector along the arc.
|
|
162
|
+
const records = this.GetPerObjectRecords();
|
|
163
|
+
records.vs.Invalidate();
|
|
164
|
+
records.ps.Invalidate();
|
|
165
|
+
params.spaceObjectParent?.GetPerObjectStructs?.(records.vs, records.ps);
|
|
166
|
+
records.vs.SetAndTranspose("worldTransform", finalWorld);
|
|
167
|
+
records.vs.SetAndTranspose("worldTransformLast", linkRotation);
|
|
167
168
|
}
|
|
168
169
|
|
|
169
170
|
/**
|