@carbonenginejs/runtime 0.1.0-alpha.3 → 0.1.0-alpha.4
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/NOTICE +5 -4
- package/dist/audio/generated/audio/AudEventKey.js +2 -2
- package/dist/audio/generated/audio/AudEventKey.js.map +1 -1
- package/dist/audio/generated/audio/AudSettings.js +2 -2
- package/dist/audio/generated/audio/AudSettings.js.map +1 -1
- package/dist/audio/index.js +1 -1
- package/dist/audio/trinity/audio/AudEmitter.js +4 -5
- package/dist/audio/trinity/audio/AudEmitter.js.map +1 -1
- package/dist/audio/trinity/audio/AudEventCurve.js +14 -14
- package/dist/audio/trinity/audio/AudEventCurve.js.map +1 -1
- package/dist/audio/trinity/audio/AudGameObjResource.js +13 -25
- package/dist/audio/trinity/audio/AudGameObjResource.js.map +1 -1
- package/dist/audio/trinity/audio/AudManager.js +2 -2
- package/dist/audio/trinity/audio/AudManager.js.map +1 -1
- package/dist/audio/trinity/audio/AudParameter.js +7 -11
- package/dist/audio/trinity/audio/AudParameter.js.map +1 -1
- package/dist/audio/trinity/audio/AudUIPlayer.js +2 -2
- package/dist/audio/trinity/audio/AudUIPlayer.js.map +1 -1
- package/dist/audio/trinity/audio/AudioCurveSetDriver.js +2 -2
- package/dist/audio/trinity/audio/AudioCurveSetDriver.js.map +1 -1
- package/dist/audio/trinity/audio/StretchAudio.js +2 -2
- package/dist/audio/trinity/audio/StretchAudio.js.map +1 -1
- package/dist/audio/trinity/index.js +1 -1
- package/dist/audio/trinity/trinityAudio/Tr2AudioStretchAuto.js +2 -2
- package/dist/audio/trinity/trinityAudio/Tr2AudioStretchAuto.js.map +1 -1
- package/dist/audio/trinity/trinityAudio/Tr2AudioStretchBase.js +2 -2
- package/dist/audio/trinity/trinityAudio/Tr2AudioStretchBase.js.map +1 -1
- package/dist/audio/trinity/trinityAudioApi/ITr2AudEmitter.js +1 -37
- package/dist/audio/trinity/trinityAudioApi/ITr2AudEmitter.js.map +1 -1
- package/dist/character/incarna/curves/Tr2ColorCurve.js +2 -2
- package/dist/character/incarna/curves/Tr2ColorCurve.js.map +1 -1
- package/dist/character/incarna/curves/Tr2ColorKey.js +2 -2
- package/dist/character/incarna/curves/Tr2ColorKey.js.map +1 -1
- package/dist/character/incarna/curves/Tr2ScalarCurve.js +2 -2
- package/dist/character/incarna/curves/Tr2ScalarCurve.js.map +1 -1
- package/dist/character/incarna/curves/Tr2ScalarKey.js +2 -2
- package/dist/character/incarna/curves/Tr2ScalarKey.js.map +1 -1
- package/dist/character/incarna/interior/Tr2InteriorCell.js +2 -2
- package/dist/character/incarna/interior/Tr2InteriorCell.js.map +1 -1
- package/dist/character/library/CjsCharacterLibrary.js +9 -16
- package/dist/character/library/CjsCharacterLibrary.js.map +1 -1
- package/dist/character/library/CjsCharacterLibraryDocuments.js +20 -4
- package/dist/character/library/CjsCharacterLibraryDocuments.js.map +1 -1
- package/dist/character/model/CjsCharacterRecord.js +2 -2
- package/dist/character/model/CjsCharacterRecord.js.map +1 -1
- package/dist/character/model/activity/CjsCharacterArchetype.js +2 -2
- package/dist/character/model/activity/CjsCharacterArchetype.js.map +1 -1
- package/dist/character/model/appearance/CjsCharacterColorLocation.js +2 -2
- package/dist/character/model/appearance/CjsCharacterColorLocation.js.map +1 -1
- package/dist/character/model/appearance/CjsCharacterColorName.js +2 -2
- package/dist/character/model/appearance/CjsCharacterColorName.js.map +1 -1
- package/dist/character/model/appearance/CjsCharacterColorSelection.js +2 -2
- package/dist/character/model/appearance/CjsCharacterColorSelection.js.map +1 -1
- package/dist/character/model/appearance/CjsCharacterSculptSelection.js +2 -2
- package/dist/character/model/appearance/CjsCharacterSculptSelection.js.map +1 -1
- package/dist/character/model/appearance/CjsCharacterSculptingLocation.js +2 -2
- package/dist/character/model/appearance/CjsCharacterSculptingLocation.js.map +1 -1
- package/dist/character/model/behavior/CjsCharacterAvatarBehavior.js +2 -2
- package/dist/character/model/behavior/CjsCharacterAvatarBehavior.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterColorValue.js +2 -2
- package/dist/character/model/catalog/CjsCharacterColorValue.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterDefinition.js +2 -2
- package/dist/character/model/catalog/CjsCharacterDefinition.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterMaterialProfile.js +2 -2
- package/dist/character/model/catalog/CjsCharacterMaterialProfile.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterModifierReference.js +2 -2
- package/dist/character/model/catalog/CjsCharacterModifierReference.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterPartMetadata.js +2 -2
- package/dist/character/model/catalog/CjsCharacterPartMetadata.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterPartModelBundle.js +2 -2
- package/dist/character/model/catalog/CjsCharacterPartModelBundle.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterPartSource.js +2 -2
- package/dist/character/model/catalog/CjsCharacterPartSource.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterPartSourceVersion.js +2 -2
- package/dist/character/model/catalog/CjsCharacterPartSourceVersion.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterPartType.js +2 -2
- package/dist/character/model/catalog/CjsCharacterPartType.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterProjectionProfile.js +2 -2
- package/dist/character/model/catalog/CjsCharacterProjectionProfile.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterRecipeEntry.js +2 -2
- package/dist/character/model/catalog/CjsCharacterRecipeEntry.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterRecipeProfile.js +2 -2
- package/dist/character/model/catalog/CjsCharacterRecipeProfile.js.map +1 -1
- package/dist/character/model/catalog/CjsCharacterTextureMetadata.js +2 -2
- package/dist/character/model/catalog/CjsCharacterTextureMetadata.js.map +1 -1
- package/dist/character/model/composition/CjsCharacterModifierLocation.js +2 -2
- package/dist/character/model/composition/CjsCharacterModifierLocation.js.map +1 -1
- package/dist/character/model/composition/CjsCharacterModifierSelection.js +2 -2
- package/dist/character/model/composition/CjsCharacterModifierSelection.js.map +1 -1
- package/dist/character/model/creation/CjsCharacterPaperdoll.js +2 -2
- package/dist/character/model/creation/CjsCharacterPaperdoll.js.map +1 -1
- package/dist/character/model/demographics/CjsCharacterAncestry.js +2 -2
- package/dist/character/model/demographics/CjsCharacterAncestry.js.map +1 -1
- package/dist/character/model/demographics/CjsCharacterBloodline.js +2 -2
- package/dist/character/model/demographics/CjsCharacterBloodline.js.map +1 -1
- package/dist/character/model/demographics/CjsCharacterRace.js +2 -2
- package/dist/character/model/demographics/CjsCharacterRace.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterAppearanceBinding.js +2 -2
- package/dist/character/model/planning/CjsCharacterAppearanceBinding.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterAppearanceColorSelection.js +2 -2
- package/dist/character/model/planning/CjsCharacterAppearanceColorSelection.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterAppearanceDiagnostic.js +2 -2
- package/dist/character/model/planning/CjsCharacterAppearanceDiagnostic.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterAppearanceLayer.js +2 -2
- package/dist/character/model/planning/CjsCharacterAppearanceLayer.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterAppearancePlan.js +2 -2
- package/dist/character/model/planning/CjsCharacterAppearancePlan.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterAppearanceSelection.js +2 -2
- package/dist/character/model/planning/CjsCharacterAppearanceSelection.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterBindingAlpha.js +2 -2
- package/dist/character/model/planning/CjsCharacterBindingAlpha.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterCompositionInput.js +2 -2
- package/dist/character/model/planning/CjsCharacterCompositionInput.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterCompositionPass.js +2 -2
- package/dist/character/model/planning/CjsCharacterCompositionPass.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterCompositionTarget.js +2 -2
- package/dist/character/model/planning/CjsCharacterCompositionTarget.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterCoverage.js +2 -2
- package/dist/character/model/planning/CjsCharacterCoverage.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterMorphTargetWeight.js +2 -2
- package/dist/character/model/planning/CjsCharacterMorphTargetWeight.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterOrigin.js +2 -2
- package/dist/character/model/planning/CjsCharacterOrigin.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterResolvedPart.js +2 -2
- package/dist/character/model/planning/CjsCharacterResolvedPart.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterTextureAsset.js +2 -2
- package/dist/character/model/planning/CjsCharacterTextureAsset.js.map +1 -1
- package/dist/character/model/planning/CjsCharacterTextureChannel.js +2 -2
- package/dist/character/model/planning/CjsCharacterTextureChannel.js.map +1 -1
- package/dist/character/model/resources/CjsCharacterPortraitResource.js +2 -2
- package/dist/character/model/resources/CjsCharacterPortraitResource.js.map +1 -1
- package/dist/character/model/resources/CjsCharacterResource.js +2 -2
- package/dist/character/model/resources/CjsCharacterResource.js.map +1 -1
- package/dist/character/trinity/interior/Tr2IntSkinnedObject.js +6 -5
- package/dist/character/trinity/interior/Tr2IntSkinnedObject.js.map +1 -1
- package/dist/character/trinity/interior/Tr2InteriorLightSource.js +2 -2
- package/dist/character/trinity/interior/Tr2InteriorLightSource.js.map +1 -1
- package/dist/character/trinity/interior/Tr2InteriorPlaceable.js +4 -5
- package/dist/character/trinity/interior/Tr2InteriorPlaceable.js.map +1 -1
- package/dist/character/trinity/interior/Tr2InteriorScene.js +2 -2
- package/dist/character/trinity/interior/Tr2InteriorScene.js.map +1 -1
- package/dist/character/trinity/trinityCore/Tr2GStateAnimation.js +2 -2
- package/dist/character/trinity/trinityCore/Tr2GStateAnimation.js.map +1 -1
- package/dist/character/trinity/trinityCore/Tr2GStateParameter.js +2 -2
- package/dist/character/trinity/trinityCore/Tr2GStateParameter.js.map +1 -1
- package/dist/character/trinity/trinityCore/Tr2Model.js +2 -2
- package/dist/character/trinity/trinityCore/Tr2Model.js.map +1 -1
- package/dist/character/trinity/trinityCore/Tr2SkinnedModel.js +21 -10
- package/dist/character/trinity/trinityCore/Tr2SkinnedModel.js.map +1 -1
- package/dist/character/trinity/trinityCore/Tr2SkinnedObject.js +64 -57
- package/dist/character/trinity/trinityCore/Tr2SkinnedObject.js.map +1 -1
- package/dist/character/trinity/trinityCore/Tr2SkinnedObjectLod.js +1 -1
- package/dist/character/trinity/trinityCore/Tr2SkinnedObjectLod.js.map +1 -1
- package/dist/character/trinity/wod/WodBakingScene.js +2 -2
- package/dist/character/trinity/wod/WodBakingScene.js.map +1 -1
- package/dist/core/CjsLibrary.js +32 -685
- package/dist/core/CjsLibrary.js.map +1 -1
- package/dist/core/index.js +1 -2
- package/dist/core/index.js.map +1 -1
- package/dist/global/blue/BeInfo.js +95 -0
- package/dist/global/blue/BeInfo.js.map +1 -0
- package/dist/global/blue/CcpDateTime.js +53 -0
- package/dist/global/blue/CcpDateTime.js.map +1 -0
- package/dist/global/blue/CcpTime.js +148 -0
- package/dist/global/blue/CcpTime.js.map +1 -0
- package/dist/global/blue/CjsBlueOS.js +301 -0
- package/dist/global/blue/CjsBlueOS.js.map +1 -0
- package/dist/global/blue/CjsBluePaths.js +97 -0
- package/dist/global/blue/CjsBluePaths.js.map +1 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js +29 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -0
- package/dist/global/blue/IBlueEvents.js +34 -0
- package/dist/global/blue/IBlueEvents.js.map +1 -0
- package/dist/global/blue/IBlueOS.js +132 -0
- package/dist/global/blue/IBlueOS.js.map +1 -0
- package/dist/global/blue/IBluePaths.js +72 -0
- package/dist/global/blue/IBluePaths.js.map +1 -0
- package/dist/global/blue/IBlueResMan.js +93 -0
- package/dist/global/blue/IBlueResMan.js.map +1 -0
- package/dist/global/blue/IBlueResManNotifications.js +51 -0
- package/dist/global/blue/IBlueResManNotifications.js.map +1 -0
- package/dist/global/blue/ICatchupTicks.js +25 -0
- package/dist/global/blue/ICatchupTicks.js.map +1 -0
- package/dist/global/blue/IInitialize.js +47 -0
- package/dist/global/blue/IInitialize.js.map +1 -0
- package/dist/global/blue/IListNotify.js +44 -0
- package/dist/global/blue/IListNotify.js.map +1 -0
- package/dist/global/blue/INotify.js +65 -0
- package/dist/global/blue/INotify.js.map +1 -0
- package/dist/global/blue/ISimTimeRebaseNotify.js +28 -0
- package/dist/global/blue/ISimTimeRebaseNotify.js.map +1 -0
- package/dist/global/blue/IVariableTicker.js +24 -0
- package/dist/global/blue/IVariableTicker.js.map +1 -0
- package/dist/global/blue/blue.js +61 -0
- package/dist/global/blue/blue.js.map +1 -0
- package/dist/global/blue/enums/CjsBlueEnumRegistry.js +173 -0
- package/dist/global/blue/enums/CjsBlueEnumRegistry.js.map +1 -0
- package/dist/global/blue/index.js +19 -0
- package/dist/global/blue/index.js.map +1 -1
- package/dist/global/blue/registerTrinityEnums.js +43 -0
- package/dist/global/blue/registerTrinityEnums.js.map +1 -0
- package/dist/global/compose/abstract.js +81 -0
- package/dist/global/compose/abstract.js.map +1 -0
- package/dist/global/compose/interface.js +131 -26
- package/dist/global/compose/interface.js.map +1 -1
- package/dist/global/compose/notify.js +10 -1
- package/dist/global/compose/notify.js.map +1 -1
- package/dist/global/compose/values.js +116 -53
- package/dist/global/compose/values.js.map +1 -1
- package/dist/global/consts/blue.js +73 -0
- package/dist/global/consts/blue.js.map +1 -0
- package/dist/global/consts/graphics/index.js +1 -1
- package/dist/global/consts/graphics/trinityEnums.js +19 -7
- package/dist/global/consts/graphics/trinityEnums.js.map +1 -1
- package/dist/global/consts/index.js +2 -1
- package/dist/global/consts/index.js.map +1 -1
- package/dist/global/consts/trinity.js.map +1 -1
- package/dist/global/contracts/ITr2BoundingBox.js +1 -34
- package/dist/global/contracts/ITr2BoundingBox.js.map +1 -1
- package/dist/global/contracts/ITr2RenderNode.js +1 -27
- package/dist/global/contracts/ITr2RenderNode.js.map +1 -1
- package/dist/global/contracts/index.js +2 -4
- package/dist/global/contracts/index.js.map +1 -1
- package/dist/global/index.js +23 -5
- package/dist/global/index.js.map +1 -1
- package/dist/global/model/CjsModel.js +79 -98
- package/dist/global/model/CjsModel.js.map +1 -1
- package/dist/global/model/CjsModelState.js +0 -15
- package/dist/global/model/CjsModelState.js.map +1 -1
- package/dist/global/model/index.js +1 -1
- package/dist/global/schema/CjsSchema.js +177 -51
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/global/schema/index.js +4 -3
- package/dist/global/schema/index.js.map +1 -1
- package/dist/global/schema/types/carbonTypes.js +1 -1
- package/dist/global/schema/types/carbonTypes.js.map +1 -1
- package/dist/global/utils/bytes.js +2 -0
- package/dist/global/utils/bytes.js.map +1 -1
- package/dist/global/utils/path.js +30 -1
- package/dist/global/utils/path.js.map +1 -1
- package/dist/index.js +57 -24
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsResMan.js +33 -43
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/CjsResource.js +4 -1
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/format/CjsBlueReader.js +0 -1
- package/dist/resource/format/CjsBlueReader.js.map +1 -1
- package/dist/resource/format/CjsResourceProbe.js +15 -16
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/carbonEffect/carbonEffectResourceTransform.js +132 -75
- package/dist/resource/format/carbonEffect/carbonEffectResourceTransform.js.map +1 -1
- package/dist/resource/formats/black/core/CjsBlackPropertyReaders.js +26 -0
- package/dist/resource/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
- package/dist/resource/formats/black/core/CjsBlackSchemaRegistry.js +2 -1
- package/dist/resource/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
- package/dist/resource/formats/black/core/black-schema-v1-2026-09-19.json.js +4 -0
- package/dist/resource/formats/black/core/black-schema-v1-2026-09-19.json.js.map +1 -0
- package/dist/resource/formats/black/core/blackDefinitions.js +1 -1
- package/dist/resource/formats/black/core/blackDefinitions.js.map +1 -1
- package/dist/resource/formats/black/core/blackSchema.js +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +50 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +51 -5
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierGraphicIds.js +94 -0
- package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierGraphicIds.js.map +1 -0
- package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierTypes.js +189 -0
- package/dist/resource/formats/fsd/64/readers/CjsFsd64SchemaFrontierTypes.js.map +1 -0
- package/dist/resource/formats/fsd/64/readers/index.js +2 -0
- package/dist/resource/formats/fsd/64/readers/index.js.map +1 -1
- package/dist/resource/formats/hlsl/core/detailMapFamily.js +18 -92
- package/dist/resource/formats/hlsl/core/detailMapFamily.js.map +1 -1
- package/dist/resource/formats/hlsl/core/textureArrayFamilies.js +285 -0
- package/dist/resource/formats/hlsl/core/textureArrayFamilies.js.map +1 -0
- package/dist/resource/formats/pickle/CjsPickleFormat.js +34 -14
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +60 -451
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +407 -0
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -0
- package/dist/resource/formats/pickle/core/pickleCommon.js +671 -0
- package/dist/resource/formats/pickle/core/pickleCommon.js.map +1 -0
- package/dist/resource/formats/red/core/blackDefinitions.js +1 -1
- package/dist/resource/formats/webgl/core/effectPackage.js +85 -7
- package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +659 -564
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBodySet.js +4 -4
- package/dist/resource/formats/webgl/core/glslBackendBodySet.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js +2 -2
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/geometry/TriGeometryRes.js +61 -7
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +11 -11
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
- package/dist/resource/index.js +9 -0
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/shader/Tr2EffectRes.js +2 -3
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialArea.js +3 -3
- package/dist/resource/shader/Tr2MaterialArea.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialMesh.js +2 -2
- package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialRes.js +3 -3
- package/dist/resource/shader/Tr2MaterialRes.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +2 -2
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +2 -2
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +4 -4
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
- package/dist/resource/texture/Tr2ImageRes.js +3 -4
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
- package/dist/resource/texture/Tr2TextureLodManager.js +0 -1
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js +4 -4
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +3 -4
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +5 -5
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +3 -3
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +2 -2
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +6 -6
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/texture/TriTextureRes.js +23 -22
- package/dist/resource/texture/TriTextureRes.js.map +1 -1
- package/dist/resource/video/AudioMetadata.js +41 -0
- package/dist/resource/video/AudioMetadata.js.map +1 -0
- package/dist/resource/video/IAudioSink.js +51 -0
- package/dist/resource/video/IAudioSink.js.map +1 -0
- package/dist/resource/video/IEncodedFrame.js +52 -0
- package/dist/resource/video/IEncodedFrame.js.map +1 -0
- package/dist/resource/video/IVideoContainerParser.js +70 -0
- package/dist/resource/video/IVideoContainerParser.js.map +1 -0
- package/dist/resource/video/IVideoDecoder.js +36 -0
- package/dist/resource/video/IVideoDecoder.js.map +1 -0
- package/dist/resource/video/PcmFrame.js +33 -0
- package/dist/resource/video/PcmFrame.js.map +1 -0
- package/dist/resource/video/VideoFrame.js +45 -0
- package/dist/resource/video/VideoFrame.js.map +1 -0
- package/dist/resource/video/VideoMetadata.js +34 -0
- package/dist/resource/video/VideoMetadata.js.map +1 -0
- package/dist/resource/video/enums.js +30 -0
- package/dist/resource/video/enums.js.map +1 -0
- package/dist/sof/EveSOF.js +176 -176
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/sof/EveSOFDNA.js +5 -1
- package/dist/sof/EveSOFDNA.js.map +1 -1
- package/dist/sof/EveSOFData.js +2 -2
- package/dist/sof/EveSOFData.js.map +1 -1
- package/dist/sof/faction/EveSOFDataFaction.js +2 -2
- package/dist/sof/faction/EveSOFDataFaction.js.map +1 -1
- package/dist/sof/faction/EveSOFDataFactionChild.js +2 -2
- package/dist/sof/faction/EveSOFDataFactionChild.js.map +1 -1
- package/dist/sof/faction/EveSOFDataFactionColorSet.js +189 -3
- package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
- package/dist/sof/faction/EveSOFDataFactionHullArea.js +2 -2
- package/dist/sof/faction/EveSOFDataFactionHullArea.js.map +1 -1
- package/dist/sof/faction/EveSOFDataFactionPlaneSet.js +2 -2
- package/dist/sof/faction/EveSOFDataFactionPlaneSet.js.map +1 -1
- package/dist/sof/faction/EveSOFDataFactionSpotlightSet.js +2 -2
- package/dist/sof/faction/EveSOFDataFactionSpotlightSet.js.map +1 -1
- package/dist/sof/faction/EveSOFDataFactionVisibilityGroupSet.js +2 -2
- package/dist/sof/faction/EveSOFDataFactionVisibilityGroupSet.js.map +1 -1
- package/dist/sof/generic/EveSOFDataGeneric.js +234 -230
- package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
- package/dist/sof/generic/EveSOFDataGenericDamage.js +2 -2
- package/dist/sof/generic/EveSOFDataGenericDamage.js.map +1 -1
- package/dist/sof/generic/EveSOFDataGenericDecalShader.js +2 -2
- package/dist/sof/generic/EveSOFDataGenericDecalShader.js.map +1 -1
- package/dist/sof/generic/EveSOFDataGenericHullCategory.js +27 -23
- package/dist/sof/generic/EveSOFDataGenericHullCategory.js.map +1 -1
- package/dist/sof/generic/EveSOFDataGenericHullDamage.js +2 -2
- package/dist/sof/generic/EveSOFDataGenericHullDamage.js.map +1 -1
- package/dist/sof/generic/EveSOFDataGenericShader.js +2 -2
- package/dist/sof/generic/EveSOFDataGenericShader.js.map +1 -1
- package/dist/sof/generic/EveSOFDataGenericString.js +2 -2
- package/dist/sof/generic/EveSOFDataGenericString.js.map +1 -1
- package/dist/sof/generic/EveSOFDataGenericSwarm.js +2 -2
- package/dist/sof/generic/EveSOFDataGenericSwarm.js.map +1 -1
- package/dist/sof/generic/EveSOFDataGenericVariant.js +2 -2
- package/dist/sof/generic/EveSOFDataGenericVariant.js.map +1 -1
- package/dist/sof/generic/EveSOFDataVisibilityGroup.js +2 -2
- package/dist/sof/generic/EveSOFDataVisibilityGroup.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHull.js +56 -3
- package/dist/sof/hull/EveSOFDataHull.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullAnimation.js +2 -2
- package/dist/sof/hull/EveSOFDataHullAnimation.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullArea.js +58 -54
- package/dist/sof/hull/EveSOFDataHullArea.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullBanner.js +109 -3
- package/dist/sof/hull/EveSOFDataHullBanner.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullBannerLight.js +2 -2
- package/dist/sof/hull/EveSOFDataHullBannerLight.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullBannerSet.js +2 -2
- package/dist/sof/hull/EveSOFDataHullBannerSet.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullBannerSetItem.js +109 -3
- package/dist/sof/hull/EveSOFDataHullBannerSetItem.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullBooster.js +2 -2
- package/dist/sof/hull/EveSOFDataHullBooster.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullBoosterItem.js +2 -2
- package/dist/sof/hull/EveSOFDataHullBoosterItem.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullChild.js +55 -50
- package/dist/sof/hull/EveSOFDataHullChild.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullChildSet.js +2 -2
- package/dist/sof/hull/EveSOFDataHullChildSet.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullChildSetItem.js +51 -46
- package/dist/sof/hull/EveSOFDataHullChildSetItem.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullController.js +2 -2
- package/dist/sof/hull/EveSOFDataHullController.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullDecalSet.js +2 -2
- package/dist/sof/hull/EveSOFDataHullDecalSet.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullDecalSetItem.js +45 -3
- package/dist/sof/hull/EveSOFDataHullDecalSetItem.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullHazeSet.js +21 -3
- package/dist/sof/hull/EveSOFDataHullHazeSet.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullHazeSetItem.js +47 -43
- package/dist/sof/hull/EveSOFDataHullHazeSetItem.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullLightSet.js +2 -2
- package/dist/sof/hull/EveSOFDataHullLightSet.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullLightSetItem.js +4 -2
- package/dist/sof/hull/EveSOFDataHullLightSetItem.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullLightSetSpotLight.js +2 -2
- package/dist/sof/hull/EveSOFDataHullLightSetSpotLight.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullLightSetTexturedPointLight.js +2 -2
- package/dist/sof/hull/EveSOFDataHullLightSetTexturedPointLight.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullLocator.js +2 -2
- package/dist/sof/hull/EveSOFDataHullLocator.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullLocatorSet.js +2 -2
- package/dist/sof/hull/EveSOFDataHullLocatorSet.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullLocatorSetGroup.js +2 -2
- package/dist/sof/hull/EveSOFDataHullLocatorSetGroup.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullPlaneSet.js +29 -3
- package/dist/sof/hull/EveSOFDataHullPlaneSet.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullPlaneSetItem.js +81 -75
- package/dist/sof/hull/EveSOFDataHullPlaneSetItem.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullSoundEmitter.js +2 -2
- package/dist/sof/hull/EveSOFDataHullSoundEmitter.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullSpotlightSet.js +2 -2
- package/dist/sof/hull/EveSOFDataHullSpotlightSet.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullSpotlightSetItem.js +45 -41
- package/dist/sof/hull/EveSOFDataHullSpotlightSetItem.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullSpriteLineSet.js +2 -2
- package/dist/sof/hull/EveSOFDataHullSpriteLineSet.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullSpriteLineSetItem.js +70 -66
- package/dist/sof/hull/EveSOFDataHullSpriteLineSetItem.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullSpriteSet.js +2 -2
- package/dist/sof/hull/EveSOFDataHullSpriteSet.js.map +1 -1
- package/dist/sof/hull/EveSOFDataHullSpriteSetItem.js +45 -41
- package/dist/sof/hull/EveSOFDataHullSpriteSetItem.js.map +1 -1
- package/dist/sof/hull/EveSOFDataMultiHullDecalIndexBuffers.js +2 -2
- package/dist/sof/hull/EveSOFDataMultiHullDecalIndexBuffers.js.map +1 -1
- package/dist/sof/layout/EveSOFDataDistributionDepletionCounter.js +2 -2
- package/dist/sof/layout/EveSOFDataDistributionDepletionCounter.js.map +1 -1
- package/dist/sof/layout/EveSOFDataHullExtensionBucket.js +2 -2
- package/dist/sof/layout/EveSOFDataHullExtensionBucket.js.map +1 -1
- package/dist/sof/layout/EveSOFDataHullExtensionPlacement.js +2 -2
- package/dist/sof/layout/EveSOFDataHullExtensionPlacement.js.map +1 -1
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionDepletionCounter.js +2 -2
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionDepletionCounter.js.map +1 -1
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionMapGraphicSettings.js +35 -3
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionMapGraphicSettings.js.map +1 -1
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionParentMatch.js +2 -2
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionParentMatch.js.map +1 -1
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionPlacement.js +2 -2
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionPlacement.js.map +1 -1
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionRandomChance.js +2 -2
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementDistributionRandomChance.js.map +1 -1
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementGroup.js +2 -2
- package/dist/sof/layout/EveSOFDataHullExtensionPlacementGroup.js.map +1 -1
- package/dist/sof/layout/EveSOFDataLayout.js +2 -2
- package/dist/sof/layout/EveSOFDataLayout.js.map +1 -1
- package/dist/sof/pattern/EveSOFDataPattern.js +2 -2
- package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
- package/dist/sof/pattern/EveSOFDataPatternApplicationGroup.js +2 -2
- package/dist/sof/pattern/EveSOFDataPatternApplicationGroup.js.map +1 -1
- package/dist/sof/pattern/EveSOFDataPatternLayer.js +60 -3
- package/dist/sof/pattern/EveSOFDataPatternLayer.js.map +1 -1
- package/dist/sof/pattern/EveSOFDataPatternLayerProperties.js +23 -3
- package/dist/sof/pattern/EveSOFDataPatternLayerProperties.js.map +1 -1
- package/dist/sof/pattern/EveSOFDataPatternMaterialOverride.js +2 -2
- package/dist/sof/pattern/EveSOFDataPatternMaterialOverride.js.map +1 -1
- package/dist/sof/pattern/EveSOFDataPatternPerHull.js +2 -2
- package/dist/sof/pattern/EveSOFDataPatternPerHull.js.map +1 -1
- package/dist/sof/pattern/EveSOFDataPatternTransform.js +2 -2
- package/dist/sof/pattern/EveSOFDataPatternTransform.js.map +1 -1
- package/dist/sof/race/EveSOFDataRace.js +46 -42
- package/dist/sof/race/EveSOFDataRace.js.map +1 -1
- package/dist/sof/race/EveSOFDataRaceDamage.js +2 -2
- package/dist/sof/race/EveSOFDataRaceDamage.js.map +1 -1
- package/dist/sof/shared/CjsExternalRef.js +2 -2
- package/dist/sof/shared/CjsExternalRef.js.map +1 -1
- package/dist/sof/shared/EveSOFDNADescriptor.js +2 -2
- package/dist/sof/shared/EveSOFDNADescriptor.js.map +1 -1
- package/dist/sof/shared/EveSOFDataArea.js +61 -3
- package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
- package/dist/sof/shared/EveSOFDataAreaMaterial.js +4 -2
- package/dist/sof/shared/EveSOFDataAreaMaterial.js.map +1 -1
- package/dist/sof/shared/EveSOFDataBlinkType.js +48 -8
- package/dist/sof/shared/EveSOFDataBlinkType.js.map +1 -1
- package/dist/sof/shared/EveSOFDataBooster.js +2 -2
- package/dist/sof/shared/EveSOFDataBooster.js.map +1 -1
- package/dist/sof/shared/EveSOFDataBoosterShape.js +2 -2
- package/dist/sof/shared/EveSOFDataBoosterShape.js.map +1 -1
- package/dist/sof/shared/EveSOFDataDecalIndexBuffer.js +2 -2
- package/dist/sof/shared/EveSOFDataDecalIndexBuffer.js.map +1 -1
- package/dist/sof/shared/EveSOFDataInstancedMesh.js +40 -3
- package/dist/sof/shared/EveSOFDataInstancedMesh.js.map +1 -1
- package/dist/sof/shared/EveSOFDataLogo.js +2 -2
- package/dist/sof/shared/EveSOFDataLogo.js.map +1 -1
- package/dist/sof/shared/EveSOFDataLogoSet.js +33 -3
- package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
- package/dist/sof/shared/EveSOFDataMaterial.js +2 -2
- package/dist/sof/shared/EveSOFDataMaterial.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameter.js +2 -2
- package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterBool.js +2 -2
- package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterColor.js +2 -2
- package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterFloat.js +2 -2
- package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterInt.js +2 -2
- package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterVector2.js +2 -2
- package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -1
- package/dist/sof/shared/EveSOFDataParameterVector3.js +2 -2
- package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -1
- package/dist/sof/shared/EveSOFDataPointLightAttachment.js +2 -2
- package/dist/sof/shared/EveSOFDataPointLightAttachment.js.map +1 -1
- package/dist/sof/shared/EveSOFDataSpotLightAttachment.js +2 -2
- package/dist/sof/shared/EveSOFDataSpotLightAttachment.js.map +1 -1
- package/dist/sof/shared/EveSOFDataTexture.js +2 -2
- package/dist/sof/shared/EveSOFDataTexture.js.map +1 -1
- package/dist/sof/shared/EveSOFDataTransform.js +2 -2
- package/dist/sof/shared/EveSOFDataTransform.js.map +1 -1
- package/dist/sof/shared/EveSofDataMeshInstance.js +2 -2
- package/dist/sof/shared/EveSofDataMeshInstance.js.map +1 -1
- package/dist/sof/sofDocumentValues.js +9 -0
- package/dist/sof/sofDocumentValues.js.map +1 -1
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +2 -25
- package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -1
- package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js +2 -72
- package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -1
- package/dist/trinity/controllers/ITr2ControllerOwner.js +1 -36
- package/dist/trinity/controllers/ITr2ControllerOwner.js.map +1 -1
- package/dist/trinity/controllers/Tr2Controller.js +4 -5
- package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
- package/dist/trinity/controllers/Tr2ControllerEventHandler.js +2 -2
- package/dist/trinity/controllers/Tr2ControllerEventHandler.js.map +1 -1
- package/dist/trinity/controllers/Tr2ControllerReference.js +9 -17
- package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
- package/dist/trinity/controllers/Tr2SyncToAnimation.js +4 -5
- package/dist/trinity/controllers/Tr2SyncToAnimation.js.map +1 -1
- package/dist/trinity/controllers/action/ITr2ControllerAction.js +1 -28
- package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionAnimateCurveSet.js +9 -7
- package/dist/trinity/controllers/action/Tr2ActionAnimateCurveSet.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionAnimateValue.js +11 -9
- package/dist/trinity/controllers/action/Tr2ActionAnimateValue.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionBindRTPC.js +9 -7
- package/dist/trinity/controllers/action/Tr2ActionBindRTPC.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionCallback.js +4 -5
- package/dist/trinity/controllers/action/Tr2ActionCallback.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionChildEffect.js +4 -5
- package/dist/trinity/controllers/action/Tr2ActionChildEffect.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionOverlay.js +4 -5
- package/dist/trinity/controllers/action/Tr2ActionOverlay.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionPlayCurveSet.js +4 -5
- package/dist/trinity/controllers/action/Tr2ActionPlayCurveSet.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionPlayMeshAnimation.js +13 -9
- package/dist/trinity/controllers/action/Tr2ActionPlayMeshAnimation.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionPlaySound.js +4 -5
- package/dist/trinity/controllers/action/Tr2ActionPlaySound.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionPython.js +6 -6
- package/dist/trinity/controllers/action/Tr2ActionPython.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionResetClipSphereCenter.js +4 -5
- package/dist/trinity/controllers/action/Tr2ActionResetClipSphereCenter.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSetAttenuationScaling.js +4 -5
- package/dist/trinity/controllers/action/Tr2ActionSetAttenuationScaling.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSetAudioEmitterPrefix.js +4 -5
- package/dist/trinity/controllers/action/Tr2ActionSetAudioEmitterPrefix.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSetAudioSwitch.js +4 -5
- package/dist/trinity/controllers/action/Tr2ActionSetAudioSwitch.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSetExternalControllerVariable.js +8 -17
- package/dist/trinity/controllers/action/Tr2ActionSetExternalControllerVariable.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSetShaderOption.js +4 -5
- package/dist/trinity/controllers/action/Tr2ActionSetShaderOption.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSetValue.js +11 -9
- package/dist/trinity/controllers/action/Tr2ActionSetValue.js.map +1 -1
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +4 -5
- package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
- package/dist/trinity/controllers/contracts.js +27 -19
- package/dist/trinity/controllers/contracts.js.map +1 -1
- package/dist/trinity/controllers/expression/Tr2BindingPoint.js +6 -15
- package/dist/trinity/controllers/expression/Tr2BindingPoint.js.map +1 -1
- package/dist/trinity/controllers/expression/Tr2ControllerFloatVariable.js +2 -2
- package/dist/trinity/controllers/expression/Tr2ControllerFloatVariable.js.map +1 -1
- package/dist/trinity/controllers/expression/expressionRuntime.js +136 -0
- package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -1
- package/dist/trinity/controllers/index.js +6 -6
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +1 -24
- package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
- package/dist/trinity/controllers/state/Tr2StateMachine.js +4 -6
- package/dist/trinity/controllers/state/Tr2StateMachine.js.map +1 -1
- package/dist/trinity/controllers/state/Tr2StateMachineState.js +6 -6
- package/dist/trinity/controllers/state/Tr2StateMachineState.js.map +1 -1
- package/dist/trinity/controllers/state/Tr2StateMachineTransition.js +12 -9
- package/dist/trinity/controllers/state/Tr2StateMachineTransition.js.map +1 -1
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js +5 -6
- package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
- package/dist/trinity/core/ITr2Renderable.js +1 -49
- package/dist/trinity/core/ITr2Renderable.js.map +1 -1
- package/dist/trinity/core/ITr2Updateable.js +1 -22
- package/dist/trinity/core/ITr2Updateable.js.map +1 -1
- package/dist/trinity/core/ITriReroutable.js +56 -0
- package/dist/trinity/core/ITriReroutable.js.map +1 -0
- package/dist/trinity/core/Tr2Denoiser.js +2 -2
- package/dist/trinity/core/Tr2Denoiser.js.map +1 -1
- package/dist/trinity/core/Tr2MaterialParameterStore.js +2 -2
- package/dist/trinity/core/Tr2MaterialParameterStore.js.map +1 -1
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js +2 -2
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -1
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +1 -1
- package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -1
- package/dist/trinity/core/Tr2Renderer.js +161 -4
- package/dist/trinity/core/Tr2Renderer.js.map +1 -1
- package/dist/trinity/core/Tr2ShadowMap.js +3 -3
- package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
- package/dist/trinity/core/Tr2StreamingBitmapSaver.js +2 -2
- package/dist/trinity/core/Tr2StreamingBitmapSaver.js.map +1 -1
- package/dist/trinity/core/Tr2Transform.js +4 -5
- package/dist/trinity/core/Tr2Transform.js.map +1 -1
- package/dist/trinity/core/animation/Tr2GrannyAnimation.js +2 -2
- package/dist/trinity/core/animation/Tr2GrannyAnimation.js.map +1 -1
- package/dist/trinity/core/animation/Tr2TextureAnimation.js +2 -2
- package/dist/trinity/core/animation/Tr2TextureAnimation.js.map +1 -1
- package/dist/trinity/core/animation/TriRigidOrientation.js +2 -2
- package/dist/trinity/core/animation/TriRigidOrientation.js.map +1 -1
- package/dist/trinity/core/animation/TriTorque.js +2 -2
- package/dist/trinity/core/animation/TriTorque.js.map +1 -1
- package/dist/trinity/core/batch/CjsBatchManager.js +15 -50
- package/dist/trinity/core/batch/CjsBatchManager.js.map +1 -1
- package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -1
- package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js +12 -14
- package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -1
- package/dist/trinity/core/binding/Tr2BindingVector3.js +2 -2
- package/dist/trinity/core/binding/Tr2BindingVector3.js.map +1 -1
- package/dist/trinity/core/binding/Tr2DynamicBinding.js +6 -20
- package/dist/trinity/core/binding/Tr2DynamicBinding.js.map +1 -1
- package/dist/trinity/core/binding/Tr2ExternalParameter.js +3 -6
- package/dist/trinity/core/binding/Tr2ExternalParameter.js.map +1 -1
- package/dist/trinity/core/binding/Tr2PyValueBinding.js +2 -2
- package/dist/trinity/core/binding/Tr2PyValueBinding.js.map +1 -1
- package/dist/trinity/core/binding/TriValueBinding.js +50 -24
- package/dist/trinity/core/binding/TriValueBinding.js.map +1 -1
- package/dist/trinity/core/context/CjsDirectTrinityStepExecutor.js +0 -6
- package/dist/trinity/core/context/CjsDirectTrinityStepExecutor.js.map +1 -1
- package/dist/trinity/core/context/CjsTrinityStepExecutor.js +7 -10
- package/dist/trinity/core/context/CjsTrinityStepExecutor.js.map +1 -1
- package/dist/trinity/core/context/Tr2RenderContext.js +74 -116
- package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
- package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/Tr2GpuBuffer.js +2 -2
- package/dist/trinity/core/device/Tr2GpuBuffer.js.map +1 -1
- package/dist/trinity/core/device/Tr2RenderTarget.js +2 -2
- package/dist/trinity/core/device/Tr2RenderTarget.js.map +1 -1
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +2 -2
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -1
- package/dist/trinity/core/device/Tr2SwapChain.js +2 -2
- package/dist/trinity/core/device/Tr2SwapChain.js.map +1 -1
- package/dist/trinity/core/device/TriDevice.js +576 -37
- package/dist/trinity/core/device/TriDevice.js.map +1 -1
- package/dist/trinity/core/device/gTriDev.js +49 -0
- package/dist/trinity/core/device/gTriDev.js.map +1 -0
- package/dist/trinity/core/index.js +9 -5
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2KelvinColor.js +2 -2
- package/dist/trinity/core/lighting/Tr2KelvinColor.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +7 -17
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2ShLightingManager.js +2 -2
- package/dist/trinity/core/lighting/Tr2ShLightingManager.js.map +1 -1
- package/dist/trinity/core/line/Tr2BoundingLineSet.js +2 -2
- package/dist/trinity/core/line/Tr2BoundingLineSet.js.map +1 -1
- package/dist/trinity/core/line/Tr2CurveLineSet.js +10 -7
- package/dist/trinity/core/line/Tr2CurveLineSet.js.map +1 -1
- package/dist/trinity/core/line/Tr2LineGraph.js +2 -2
- package/dist/trinity/core/line/Tr2LineGraph.js.map +1 -1
- package/dist/trinity/core/line/Tr2PrimitiveSet.js +4 -5
- package/dist/trinity/core/line/Tr2PrimitiveSet.js.map +1 -1
- package/dist/trinity/core/line/TriLineSet.js +2 -2
- package/dist/trinity/core/line/TriLineSet.js.map +1 -1
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js +1 -37
- package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -1
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js +1 -34
- package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +5 -6
- package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2InstancedMesh.js +2 -2
- package/dist/trinity/core/mesh/Tr2InstancedMesh.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2Mesh.js +288 -183
- package/dist/trinity/core/mesh/Tr2Mesh.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2MeshArea.js +32 -3
- package/dist/trinity/core/mesh/Tr2MeshArea.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2MeshBase.js +58 -8
- package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +141 -142
- package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
- package/dist/trinity/core/mesh/Tr2SerializedMorphAnimation.js +2 -2
- package/dist/trinity/core/mesh/Tr2SerializedMorphAnimation.js.map +1 -1
- package/dist/trinity/core/procedural/GradientTextureConstructor.js +62 -0
- package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -0
- package/dist/trinity/core/procedural/gradientTexture.js +196 -0
- package/dist/trinity/core/procedural/gradientTexture.js.map +1 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -1
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +5 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -1
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +2 -0
- package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -1
- package/dist/trinity/core/tool/Tr2ManipulationTool.js +2 -2
- package/dist/trinity/core/tool/Tr2ManipulationTool.js.map +1 -1
- package/dist/trinity/core/tool/Tr2RotationTool.js +2 -2
- package/dist/trinity/core/tool/Tr2RotationTool.js.map +1 -1
- package/dist/trinity/core/tool/Tr2ScalingTool.js +2 -2
- package/dist/trinity/core/tool/Tr2ScalingTool.js.map +1 -1
- package/dist/trinity/core/tool/Tr2TranslationTool.js +2 -2
- package/dist/trinity/core/tool/Tr2TranslationTool.js.map +1 -1
- package/dist/trinity/core/variable/Tr2ExpressionTermInfo.js +2 -2
- package/dist/trinity/core/variable/Tr2ExpressionTermInfo.js.map +1 -1
- package/dist/trinity/core/variable/TriFloat.js +2 -2
- package/dist/trinity/core/variable/TriFloat.js.map +1 -1
- package/dist/trinity/core/variable/TriObserverLocal.js +2 -2
- package/dist/trinity/core/variable/TriObserverLocal.js.map +1 -1
- package/dist/trinity/core/variable/TriVariable.js +2 -2
- package/dist/trinity/core/variable/TriVariable.js.map +1 -1
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js +2 -0
- package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -1
- package/dist/trinity/core/view/TriProjection.js +2 -2
- package/dist/trinity/core/view/TriProjection.js.map +1 -1
- package/dist/trinity/core/view/TriRect.js +2 -2
- package/dist/trinity/core/view/TriRect.js.map +1 -1
- package/dist/trinity/core/view/TriView.js +2 -2
- package/dist/trinity/core/view/TriView.js.map +1 -1
- package/dist/trinity/core/view/TriViewport.js +2 -2
- package/dist/trinity/core/view/TriViewport.js.map +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +3 -3
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/curves/Tr2CurveSetRange.js +2 -2
- package/dist/trinity/curves/Tr2CurveSetRange.js.map +1 -1
- package/dist/trinity/curves/TriCurveSet.js +2 -2
- package/dist/trinity/curves/TriCurveSet.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2BoneMatrixCurve.js +2 -2
- package/dist/trinity/curves/curve/Tr2BoneMatrixCurve.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveColor.js +2 -2
- package/dist/trinity/curves/curve/Tr2CurveColor.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveColorMixer.js +2 -2
- package/dist/trinity/curves/curve/Tr2CurveColorMixer.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveCombiner.js +3 -3
- package/dist/trinity/curves/curve/Tr2CurveCombiner.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveConstant.js +2 -2
- package/dist/trinity/curves/curve/Tr2CurveConstant.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveEulerRotation.js +2 -2
- package/dist/trinity/curves/curve/Tr2CurveEulerRotation.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveEulerRotationExpression.js +2 -2
- package/dist/trinity/curves/curve/Tr2CurveEulerRotationExpression.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveQuaternion.js +3 -3
- package/dist/trinity/curves/curve/Tr2CurveQuaternion.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +2 -2
- package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveScalar.js +3 -3
- package/dist/trinity/curves/curve/Tr2CurveScalar.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveScalarExpression.js +2 -2
- package/dist/trinity/curves/curve/Tr2CurveScalarExpression.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveVector2.js +2 -2
- package/dist/trinity/curves/curve/Tr2CurveVector2.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveVector3.js +2 -2
- package/dist/trinity/curves/curve/Tr2CurveVector3.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveVector3Expression.js +2 -2
- package/dist/trinity/curves/curve/Tr2CurveVector3Expression.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2CurveVector3Lerp.js +2 -2
- package/dist/trinity/curves/curve/Tr2CurveVector3Lerp.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2DistanceTracker.js +5 -5
- package/dist/trinity/curves/curve/Tr2DistanceTracker.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2FollowCurve.js +2 -2
- package/dist/trinity/curves/curve/Tr2FollowCurve.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2QuaternionLerpCurve.js +2 -2
- package/dist/trinity/curves/curve/Tr2QuaternionLerpCurve.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2RotationAdapter.js +2 -2
- package/dist/trinity/curves/curve/Tr2RotationAdapter.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2ScalarExprKeyCurve.js +2 -2
- package/dist/trinity/curves/curve/Tr2ScalarExprKeyCurve.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2ScalarFader.js +2 -2
- package/dist/trinity/curves/curve/Tr2ScalarFader.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2TranslationAdapter.js +2 -2
- package/dist/trinity/curves/curve/Tr2TranslationAdapter.js.map +1 -1
- package/dist/trinity/curves/curve/Tr2VectorFunctionModifier.js +2 -2
- package/dist/trinity/curves/curve/Tr2VectorFunctionModifier.js.map +1 -1
- package/dist/trinity/curves/curve/TriColorSequencer.js +18 -18
- package/dist/trinity/curves/curve/TriColorSequencer.js.map +1 -1
- package/dist/trinity/curves/curve/TriEventCurve.js +51 -51
- package/dist/trinity/curves/curve/TriEventCurve.js.map +1 -1
- package/dist/trinity/curves/curve/TriPerlinCurve.js +2 -2
- package/dist/trinity/curves/curve/TriPerlinCurve.js.map +1 -1
- package/dist/trinity/curves/curve/TriVectorSequencer.js +36 -36
- package/dist/trinity/curves/curve/TriVectorSequencer.js.map +1 -1
- package/dist/trinity/curves/key/Tr2CameraFollowCurveKey.js +2 -2
- package/dist/trinity/curves/key/Tr2CameraFollowCurveKey.js.map +1 -1
- package/dist/trinity/curves/key/Tr2MatrixKey.js +2 -2
- package/dist/trinity/curves/key/Tr2MatrixKey.js.map +1 -1
- package/dist/trinity/curves/key/Tr2ObjectFollowCurveKey.js +2 -2
- package/dist/trinity/curves/key/Tr2ObjectFollowCurveKey.js.map +1 -1
- package/dist/trinity/curves/key/Tr2ScalarExprKey.js +28 -24
- package/dist/trinity/curves/key/Tr2ScalarExprKey.js.map +1 -1
- package/dist/trinity/curves/key/TriEventKey.js +2 -2
- package/dist/trinity/curves/key/TriEventKey.js.map +1 -1
- package/dist/trinity/curves/track/Tr2GrannyEventTrack.js +2 -2
- package/dist/trinity/curves/track/Tr2GrannyEventTrack.js.map +1 -1
- package/dist/trinity/curves/track/Tr2GrannyTrack.js +9 -4
- package/dist/trinity/curves/track/Tr2GrannyTrack.js.map +1 -1
- package/dist/trinity/curves/track/Tr2GrannyTransformTrack.js +2 -2
- package/dist/trinity/curves/track/Tr2GrannyTransformTrack.js.map +1 -1
- package/dist/trinity/curves/track/Tr2GrannyVectorTrack.js +2 -2
- package/dist/trinity/curves/track/Tr2GrannyVectorTrack.js.map +1 -1
- package/dist/trinity/eve/AudioGameObject.js +6 -8
- package/dist/trinity/eve/AudioGameObject.js.map +1 -1
- package/dist/trinity/eve/EveCustomMask.js +2 -2
- package/dist/trinity/eve/EveCustomMask.js.map +1 -1
- package/dist/trinity/eve/EveDistanceField.js +6 -4
- package/dist/trinity/eve/EveDistanceField.js.map +1 -1
- package/dist/trinity/eve/EveImpactOverlay.js +2 -2
- package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
- package/dist/trinity/eve/EveThrottleable.js +2 -2
- package/dist/trinity/eve/EveThrottleable.js.map +1 -1
- package/dist/trinity/eve/EveTriggerVolume.js +4 -5
- package/dist/trinity/eve/EveTriggerVolume.js.map +1 -1
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js +1 -23
- package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
- package/dist/trinity/eve/IEveSpaceObject2.js +1 -24
- package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/IEveTransform.js +1 -22
- package/dist/trinity/eve/IEveTransform.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerItem.js +2 -2
- package/dist/trinity/eve/attachment/banner/EveBannerItem.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerLight.js +2 -2
- package/dist/trinity/eve/attachment/banner/EveBannerLight.js.map +1 -1
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js +20 -3
- package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +127 -122
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +5 -5
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +4 -5
- package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
- package/dist/trinity/eve/attachment/booster/EveTrailsSet.js +4 -2
- package/dist/trinity/eve/attachment/booster/EveTrailsSet.js.map +1 -1
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +151 -148
- package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js +3 -3
- package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSetItem.js +2 -2
- package/dist/trinity/eve/attachment/haze/EveHazeSetItem.js.map +1 -1
- package/dist/trinity/eve/attachment/haze/EveHazeSetLight.js +2 -2
- package/dist/trinity/eve/attachment/haze/EveHazeSetLight.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneLight.js +2 -2
- package/dist/trinity/eve/attachment/plane/EvePlaneLight.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +10 -4
- package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
- package/dist/trinity/eve/attachment/plane/EvePlaneSetItem.js +3 -2
- package/dist/trinity/eve/attachment/plane/EvePlaneSetItem.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightLight.js +2 -2
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightLight.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +3 -3
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSetItem.js +2 -2
- package/dist/trinity/eve/attachment/spotlight/EveSpotlightSetItem.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLight.js +2 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteLight.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +4 -4
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSetItem.js +2 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteLineSetItem.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +5 -5
- package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
- package/dist/trinity/eve/attachment/sprite/EveSpriteSetItem.js +2 -2
- package/dist/trinity/eve/attachment/sprite/EveSpriteSetItem.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretFiringFX.js +7 -4
- package/dist/trinity/eve/attachment/turrets/EveTurretFiringFX.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +177 -144
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +2 -2
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
- package/dist/trinity/eve/camera/EveCamera.js +5 -11
- package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
- package/dist/trinity/eve/child/EveChildAudio.js +4 -5
- package/dist/trinity/eve/child/EveChildAudio.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBehaviorSystem.js +5 -6
- package/dist/trinity/eve/child/EveChildBehaviorSystem.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBoosterSet.js +6 -6
- package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
- package/dist/trinity/eve/child/EveChildBulletStorm.js +4 -5
- package/dist/trinity/eve/child/EveChildBulletStorm.js.map +1 -1
- package/dist/trinity/eve/child/EveChildCloud.js +5 -6
- package/dist/trinity/eve/child/EveChildCloud.js.map +1 -1
- package/dist/trinity/eve/child/EveChildCloud2.js +166 -166
- package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/trinity/eve/child/EveChildContainer.js +235 -169
- package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildEffectPropagator.js +9 -9
- package/dist/trinity/eve/child/EveChildEffectPropagator.js.map +1 -1
- package/dist/trinity/eve/child/EveChildExplosion.js +11 -7
- package/dist/trinity/eve/child/EveChildExplosion.js.map +1 -1
- package/dist/trinity/eve/child/EveChildFogVolume.js +2 -2
- package/dist/trinity/eve/child/EveChildFogVolume.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInheritProperties.js +2 -2
- package/dist/trinity/eve/child/EveChildInheritProperties.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstanceContainer.js +2 -2
- package/dist/trinity/eve/child/EveChildInstanceContainer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstanceMeshRenderer.js +11 -7
- package/dist/trinity/eve/child/EveChildInstanceMeshRenderer.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +2 -2
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +2 -2
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +2 -2
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +4 -5
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
- package/dist/trinity/eve/child/EveChildLightingOverride.js +4 -5
- package/dist/trinity/eve/child/EveChildLightingOverride.js.map +1 -1
- package/dist/trinity/eve/child/EveChildLineSet.js +4 -5
- package/dist/trinity/eve/child/EveChildLineSet.js.map +1 -1
- package/dist/trinity/eve/child/EveChildLink.js +2 -2
- package/dist/trinity/eve/child/EveChildLink.js.map +1 -1
- package/dist/trinity/eve/child/EveChildMesh.js +299 -227
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +2 -2
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js +2 -2
- package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -1
- package/dist/trinity/eve/child/EveChildParticleSphere.js +4 -5
- package/dist/trinity/eve/child/EveChildParticleSphere.js.map +1 -1
- package/dist/trinity/eve/child/EveChildParticleSystem.js +36 -36
- package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPlug.js +60 -14
- package/dist/trinity/eve/child/EveChildPlug.js.map +1 -1
- package/dist/trinity/eve/child/EveChildPostProcessVolume.js +2 -2
- package/dist/trinity/eve/child/EveChildPostProcessVolume.js.map +1 -1
- package/dist/trinity/eve/child/EveChildQuad.js +4 -5
- package/dist/trinity/eve/child/EveChildQuad.js.map +1 -1
- package/dist/trinity/eve/child/EveChildRef.js +2 -2
- package/dist/trinity/eve/child/EveChildRef.js.map +1 -1
- package/dist/trinity/eve/child/EveChildSocket.js +2 -2
- package/dist/trinity/eve/child/EveChildSocket.js.map +1 -1
- package/dist/trinity/eve/child/EveChildSpherePin.js +4 -4
- package/dist/trinity/eve/child/EveChildSpherePin.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +4 -4
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/child/EveCloudVolumeBall.js +2 -2
- package/dist/trinity/eve/child/EveCloudVolumeBall.js.map +1 -1
- package/dist/trinity/eve/child/EveCloudVolumeTextureParameter.js +6 -6
- package/dist/trinity/eve/child/EveCloudVolumeTextureParameter.js.map +1 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js +2 -2
- package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
- package/dist/trinity/eve/child/IEveLightingOverride.js +1 -23
- package/dist/trinity/eve/child/IEveLightingOverride.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/Allign.js +2 -2
- package/dist/trinity/eve/child/behaviors/Allign.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/ApproachGroup.js +2 -2
- package/dist/trinity/eve/child/behaviors/ApproachGroup.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/BackAndForth.js +2 -2
- package/dist/trinity/eve/child/behaviors/BackAndForth.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/BehaviorGroup.js +4 -4
- package/dist/trinity/eve/child/behaviors/BehaviorGroup.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/BehaviorGroupBooster.js +2 -2
- package/dist/trinity/eve/child/behaviors/BehaviorGroupBooster.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/CollisionAvoidance.js +2 -2
- package/dist/trinity/eve/child/behaviors/CollisionAvoidance.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/DroneAvoidance.js +2 -2
- package/dist/trinity/eve/child/behaviors/DroneAvoidance.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/FollowASpline.js +2 -2
- package/dist/trinity/eve/child/behaviors/FollowASpline.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/Formation.js +2 -2
- package/dist/trinity/eve/child/behaviors/Formation.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/InclusionVolume.js +2 -2
- package/dist/trinity/eve/child/behaviors/InclusionVolume.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/Inertia.js +2 -2
- package/dist/trinity/eve/child/behaviors/Inertia.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/PlayFX.js +2 -2
- package/dist/trinity/eve/child/behaviors/PlayFX.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/SeekTarget.js +2 -2
- package/dist/trinity/eve/child/behaviors/SeekTarget.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/SpawnDrones.js +2 -2
- package/dist/trinity/eve/child/behaviors/SpawnDrones.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/Wander.js +2 -2
- package/dist/trinity/eve/child/behaviors/Wander.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/lifecycle/ProcessLifetime.js +2 -2
- package/dist/trinity/eve/child/behaviors/lifecycle/ProcessLifetime.js.map +1 -1
- package/dist/trinity/eve/child/behaviors/tunnels/SplineTunnelGroup.js +2 -2
- package/dist/trinity/eve/child/behaviors/tunnels/SplineTunnelGroup.js.map +1 -1
- package/dist/trinity/eve/child/lineSetPaths/EveBezierCurve.js +8 -8
- package/dist/trinity/eve/child/lineSetPaths/EveBezierCurve.js.map +1 -1
- package/dist/trinity/eve/child/lineSetPaths/EveCircle.js +8 -8
- package/dist/trinity/eve/child/lineSetPaths/EveCircle.js.map +1 -1
- package/dist/trinity/eve/child/lineSetPaths/EveLineChildContainer.js +2 -2
- package/dist/trinity/eve/child/lineSetPaths/EveLineChildContainer.js.map +1 -1
- package/dist/trinity/eve/child/modifiers/EveChildModifierAttachToBone.js +2 -2
- package/dist/trinity/eve/child/modifiers/EveChildModifierAttachToBone.js.map +1 -1
- package/dist/trinity/eve/child/modifiers/EveChildModifierBillboard3D.js +2 -2
- package/dist/trinity/eve/child/modifiers/EveChildModifierBillboard3D.js.map +1 -1
- package/dist/trinity/eve/child/modifiers/EveChildModifierSRT.js +2 -2
- package/dist/trinity/eve/child/modifiers/EveChildModifierSRT.js.map +1 -1
- package/dist/trinity/eve/child/modifiers/EveChildModifierStretch.js +2 -2
- package/dist/trinity/eve/child/modifiers/EveChildModifierStretch.js.map +1 -1
- package/dist/trinity/eve/child/modifiers/EveChildModifierTranslateWithCamera.js +2 -2
- package/dist/trinity/eve/child/modifiers/EveChildModifierTranslateWithCamera.js.map +1 -1
- package/dist/trinity/eve/child/procedural/EveChildProceduralContainer.js +5 -6
- package/dist/trinity/eve/child/procedural/EveChildProceduralContainer.js.map +1 -1
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js +3 -3
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMap.js.map +1 -1
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js +3 -3
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodAttributeMapParameter.js.map +1 -1
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCycling.js +2 -2
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCycling.js.map +1 -1
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js +3 -3
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodCyclingParameter.js.map +1 -1
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandom.js +4 -4
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandom.js.map +1 -1
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js +4 -4
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodRandomParameter.js.map +1 -1
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js +4 -4
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholdParameter.js.map +1 -1
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholds.js +4 -4
- package/dist/trinity/eve/child/procedural/selection/EveProceduralMethodThresholds.js.map +1 -1
- package/dist/trinity/eve/distribution/EveBaseDistributionMethod.js +2 -2
- package/dist/trinity/eve/distribution/EveBaseDistributionMethod.js.map +1 -1
- package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js +2 -2
- package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierProcessLifetime.js.map +1 -1
- package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js +2 -2
- package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierScaleBySpaceObjectParent.js.map +1 -1
- package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js +2 -2
- package/dist/trinity/eve/distribution/attributeModifiers/EveDistributionModifierTransformOffset.js.map +1 -1
- package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js +2 -2
- package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorLocators.js.map +1 -1
- package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js +4 -4
- package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorParentLocators.js.map +1 -1
- package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js +2 -2
- package/dist/trinity/eve/distribution/placement/EveDistributionPlacementGeneratorVolume.js.map +1 -1
- package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js +2 -2
- package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierLifeTimeOffset.js.map +1 -1
- package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js +2 -2
- package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomOffset.js.map +1 -1
- package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js +2 -2
- package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomRotation.js.map +1 -1
- package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js +2 -2
- package/dist/trinity/eve/distribution/spawnModifiers/EveDistributionSpawnModifierRandomScale.js.map +1 -1
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerBurst.js +2 -2
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerBurst.js.map +1 -1
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js +2 -2
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerControllerTrigger.js.map +1 -1
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerInterval.js +2 -2
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerInterval.js.map +1 -1
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js +2 -2
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerPlane.js.map +1 -1
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js +2 -2
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSnake.js.map +1 -1
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js +2 -2
- package/dist/trinity/eve/distribution/spawners/EveDistributionSpawnerTriggerSphere.js.map +1 -1
- package/dist/trinity/eve/effect/lensflare/EveLensflare.js +4 -5
- package/dist/trinity/eve/effect/lensflare/EveLensflare.js.map +1 -1
- package/dist/trinity/eve/effect/multiEffect/EveMultiEffect.js +4 -5
- package/dist/trinity/eve/effect/multiEffect/EveMultiEffect.js.map +1 -1
- package/dist/trinity/eve/effect/multiEffect/EveMultiEffectParameter.js +4 -4
- package/dist/trinity/eve/effect/multiEffect/EveMultiEffectParameter.js.map +1 -1
- package/dist/trinity/eve/index.js +4 -4
- package/dist/trinity/eve/lights/Tr2FactionLight.js +5 -6
- package/dist/trinity/eve/lights/Tr2FactionLight.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2Light.js +37 -9
- package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2PointLight.js +2 -2
- package/dist/trinity/eve/lights/Tr2PointLight.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2SpotLight.js +2 -2
- package/dist/trinity/eve/lights/Tr2SpotLight.js.map +1 -1
- package/dist/trinity/eve/lights/Tr2TexturedPointLight.js +29 -31
- package/dist/trinity/eve/lights/Tr2TexturedPointLight.js.map +1 -1
- package/dist/trinity/eve/locator/EveLocator2.js +2 -2
- package/dist/trinity/eve/locator/EveLocator2.js.map +1 -1
- package/dist/trinity/eve/locator/EveLocatorSets.js +2 -2
- package/dist/trinity/eve/locator/EveLocatorSets.js.map +1 -1
- package/dist/trinity/eve/locator/Locator.js +2 -2
- package/dist/trinity/eve/locator/Locator.js.map +1 -1
- package/dist/trinity/eve/overlays/EveDamageOverlay.js +2 -2
- package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
- package/dist/trinity/eve/overlays/EveMeshOverlayEffect.js +2 -2
- package/dist/trinity/eve/overlays/EveMeshOverlayEffect.js.map +1 -1
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +5 -6
- package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveFiringEffectElementContainer.js +4 -5
- package/dist/trinity/eve/renderable/stretch/EveFiringEffectElementContainer.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveLocalPositionCurve.js +2 -2
- package/dist/trinity/eve/renderable/stretch/EveLocalPositionCurve.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveRemotePositionCurve.js +2 -2
- package/dist/trinity/eve/renderable/stretch/EveRemotePositionCurve.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch.js +6 -6
- package/dist/trinity/eve/renderable/stretch/EveStretch.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js +10 -8
- package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js +4 -5
- package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceScene.js +2 -2
- package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -2
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
- package/dist/trinity/eve/scene/components/EveComponentRegistry.js +3 -3
- package/dist/trinity/eve/scene/components/EveComponentRegistry.js.map +1 -1
- package/dist/trinity/eve/smartLights/EveChildSmartLightSet.js +6 -7
- package/dist/trinity/eve/smartLights/EveChildSmartLightSet.js.map +1 -1
- package/dist/trinity/eve/smartLights/EveSmartLightBaseGroup.js +2 -2
- package/dist/trinity/eve/smartLights/EveSmartLightBaseGroup.js.map +1 -1
- package/dist/trinity/eve/smartLights/EveSmartLightColorShareGroup.js +4 -8
- package/dist/trinity/eve/smartLights/EveSmartLightColorShareGroup.js.map +1 -1
- package/dist/trinity/eve/smartLights/EveSmartLightMesh.js +7 -4
- package/dist/trinity/eve/smartLights/EveSmartLightMesh.js.map +1 -1
- package/dist/trinity/eve/smartLights/EveSmartLightPointLight.js +25 -15
- package/dist/trinity/eve/smartLights/EveSmartLightPointLight.js.map +1 -1
- package/dist/trinity/eve/smartLights/EveSmartLightQuad.js +4 -9
- package/dist/trinity/eve/smartLights/EveSmartLightQuad.js.map +1 -1
- package/dist/trinity/eve/smartLights/EveSmartLightSpotLight.js +2 -2
- package/dist/trinity/eve/smartLights/EveSmartLightSpotLight.js.map +1 -1
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js +2 -3
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierBucket.js.map +1 -1
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js +2 -2
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierCameraDependency.js.map +1 -1
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js +2 -2
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierColor.js.map +1 -1
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js +10 -18
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierControllerVariableListener.js.map +1 -1
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js +2 -2
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierExpressionBucket.js.map +1 -1
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js +2 -2
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightAttributeModifierNoise.js.map +1 -1
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js +4 -9
- package/dist/trinity/eve/smartLights/attributeModifiers/EveSmartLightBaseAttributeModifier.js.map +1 -1
- package/dist/trinity/eve/socket/EveSocketParameterBool.js +2 -2
- package/dist/trinity/eve/socket/EveSocketParameterBool.js.map +1 -1
- package/dist/trinity/eve/socket/EveSocketParameterColor.js +2 -2
- package/dist/trinity/eve/socket/EveSocketParameterColor.js.map +1 -1
- package/dist/trinity/eve/socket/EveSocketParameterFloat.js +2 -2
- package/dist/trinity/eve/socket/EveSocketParameterFloat.js.map +1 -1
- package/dist/trinity/eve/socket/EveSocketParameterInt.js +2 -2
- package/dist/trinity/eve/socket/EveSocketParameterInt.js.map +1 -1
- package/dist/trinity/eve/socket/EveSocketParameterString.js +2 -2
- package/dist/trinity/eve/socket/EveSocketParameterString.js.map +1 -1
- package/dist/trinity/eve/socket/EveSocketParameterVector2.js +2 -2
- package/dist/trinity/eve/socket/EveSocketParameterVector2.js.map +1 -1
- package/dist/trinity/eve/socket/EveSocketParameterVector3.js +2 -2
- package/dist/trinity/eve/socket/EveSocketParameterVector3.js.map +1 -1
- package/dist/trinity/eve/socket/EveSocketParameterVector4.js +2 -2
- package/dist/trinity/eve/socket/EveSocketParameterVector4.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveEffectRoot2.js +20 -17
- package/dist/trinity/eve/spaceObject/EveEffectRoot2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveMissile.js +2 -2
- package/dist/trinity/eve/spaceObject/EveMissile.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveMissileWarhead.js +2 -2
- package/dist/trinity/eve/spaceObject/EveMissileWarhead.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveMobile.js +2 -2
- package/dist/trinity/eve/spaceObject/EveMobile.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveRootTransform.js +2 -2
- package/dist/trinity/eve/spaceObject/EveRootTransform.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveShip2.js +2 -2
- package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +525 -431
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveTransform.js +7 -7
- package/dist/trinity/eve/spaceObject/EveTransform.js.map +1 -1
- package/dist/trinity/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js +2 -2
- package/dist/trinity/eve/spaceObject/fxAttributes/EveCameraFxAttributes.js.map +1 -1
- package/dist/trinity/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js +2 -2
- package/dist/trinity/eve/spaceObject/fxAttributes/EveSpaceObjectFxAttributes.js.map +1 -1
- package/dist/trinity/eve/spaceObject/planet/EvePlanet.js +2 -2
- package/dist/trinity/eve/spaceObject/planet/EvePlanet.js.map +1 -1
- package/dist/trinity/eve/spaceObject/swarm/EveSwarm.js +2 -2
- package/dist/trinity/eve/spaceObject/swarm/EveSwarm.js.map +1 -1
- package/dist/trinity/eve/spaceObject/swarm/EveSwarmRenderable.js +7 -8
- package/dist/trinity/eve/spaceObject/swarm/EveSwarmRenderable.js.map +1 -1
- package/dist/trinity/eve/ui/EveConnector.js +2 -2
- package/dist/trinity/eve/ui/EveConnector.js.map +1 -1
- package/dist/trinity/eve/ui/EveEllipseDefinition.js +2 -2
- package/dist/trinity/eve/ui/EveEllipseDefinition.js.map +1 -1
- package/dist/trinity/eve/ui/EveEllipseSet.js +36 -6
- package/dist/trinity/eve/ui/EveEllipseSet.js.map +1 -1
- package/dist/trinity/eve/ui/EveLineContainer.js +4 -5
- package/dist/trinity/eve/ui/EveLineContainer.js.map +1 -1
- package/dist/trinity/eve/ui/EveProjectBracket.js +11 -3
- package/dist/trinity/eve/ui/EveProjectBracket.js.map +1 -1
- package/dist/trinity/eve/ui/EveSpherePin.js +6 -7
- package/dist/trinity/eve/ui/EveSpherePin.js.map +1 -1
- package/dist/trinity/eve/ui/EveSprite2dBracket.js +2 -2
- package/dist/trinity/eve/ui/EveSprite2dBracket.js.map +1 -1
- package/dist/trinity/eve/ui/EveSprite2dBracketRenderer.js +2 -2
- package/dist/trinity/eve/ui/EveSprite2dBracketRenderer.js.map +1 -1
- package/dist/trinity/eve/ui/EveTacticalOverlay.js +6 -24
- package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
- package/dist/trinity/eve/ui/EveUiObject.js +2 -2
- package/dist/trinity/eve/ui/EveUiObject.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +4 -5
- package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/lines/EveLineSet.js +6 -7
- package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js +2 -2
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalOverlayTrackObject.js.map +1 -1
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +8 -9
- package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/EveVirtualCamera.js +2 -2
- package/dist/trinity/eve/virtualCamera/EveVirtualCamera.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/EveVirtualCameraSystem.js +2 -2
- package/dist/trinity/eve/virtualCamera/EveVirtualCameraSystem.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js +2 -2
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatAdd.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js +4 -4
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatBase.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js +2 -2
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatDamping.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js +2 -2
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatNoise.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js +2 -2
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourFloatSet.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js +4 -4
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Base.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js +2 -2
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Damping.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js +2 -2
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Inertia.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js +2 -2
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveBetween.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js +2 -2
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3MoveForward.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js +2 -2
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Offset.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js +2 -2
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Orbit.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js +2 -2
- package/dist/trinity/eve/virtualCamera/behaviour/EveVirtualCameraBehaviourVector3Shake.js.map +1 -1
- package/dist/trinity/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js +2 -2
- package/dist/trinity/eve/virtualCamera/transition/EveVirtualCameraTransitionLerp.js.map +1 -1
- package/dist/trinity/eve/volume/EveBoxVolume.js +44 -44
- package/dist/trinity/eve/volume/EveBoxVolume.js.map +1 -1
- package/dist/trinity/eve/volume/EveEllipsoidVolume.js +2 -2
- package/dist/trinity/eve/volume/EveEllipsoidVolume.js.map +1 -1
- package/dist/trinity/eve/volume/EveSphereVolume.js +5 -6
- package/dist/trinity/eve/volume/EveSphereVolume.js.map +1 -1
- package/dist/trinity/generated/eve/child/EveCloudEditableVolume.js +2 -2
- package/dist/trinity/generated/eve/child/EveCloudEditableVolume.js.map +1 -1
- package/dist/trinity/generated/eve/effect/EveOccluder.js +2 -2
- package/dist/trinity/generated/eve/effect/EveOccluder.js.map +1 -1
- package/dist/trinity/generated/eve/effect/EveStarfield.js +2 -2
- package/dist/trinity/generated/eve/effect/EveStarfield.js.map +1 -1
- package/dist/trinity/generated/font/Tr2FontManager.js +2 -2
- package/dist/trinity/generated/font/Tr2FontManager.js.map +1 -1
- package/dist/trinity/generated/font/Tr2FontMeasurer.js +2 -2
- package/dist/trinity/generated/font/Tr2FontMeasurer.js.map +1 -1
- package/dist/trinity/generated/font/Tr2SBitWrapper.js +2 -2
- package/dist/trinity/generated/font/Tr2SBitWrapper.js.map +1 -1
- package/dist/trinity/generated/particle/Tr2GpuParticleSystem.js +2 -2
- package/dist/trinity/generated/particle/Tr2GpuParticleSystem.js.map +1 -1
- package/dist/trinity/generated/raytracing/Tr2RaytracingManager.js +2 -2
- package/dist/trinity/generated/raytracing/Tr2RaytracingManager.js.map +1 -1
- package/dist/trinity/generated/sprite2d/Tr2Sprite2d.js +2 -2
- package/dist/trinity/generated/sprite2d/Tr2Sprite2d.js.map +1 -1
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dArc.js +2 -2
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dArc.js.map +1 -1
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dContainer.js +2 -2
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dContainer.js.map +1 -1
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dFrame.js +2 -2
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dFrame.js.map +1 -1
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dLayer.js +2 -2
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dLayer.js.map +1 -1
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dLine.js +2 -2
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dLine.js.map +1 -1
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretch.js +2 -2
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretch.js.map +1 -1
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretchVertical.js +2 -2
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dStretchVertical.js.map +1 -1
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dTextObject.js +2 -2
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dTextObject.js.map +1 -1
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dTexture.js +2 -2
- package/dist/trinity/generated/sprite2d/Tr2Sprite2dTexture.js.map +1 -1
- package/dist/trinity/generated/sprite2d/Tr2SpriteObject.js +2 -2
- package/dist/trinity/generated/sprite2d/Tr2SpriteObject.js.map +1 -1
- package/dist/trinity/generated/trinityCore/Tr2AtlasTexture.js +2 -2
- package/dist/trinity/generated/trinityCore/Tr2AtlasTexture.js.map +1 -1
- package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js +2 -2
- package/dist/trinity/generated/trinityCore/Tr2GpuStructuredBuffer.js.map +1 -1
- package/dist/trinity/generated/trinityCore/Tr2GrannyPrimitiveSet.js +2 -2
- package/dist/trinity/generated/trinityCore/Tr2GrannyPrimitiveSet.js.map +1 -1
- package/dist/trinity/generated/trinityCore/Tr2HostBitmap.js +2 -2
- package/dist/trinity/generated/trinityCore/Tr2HostBitmap.js.map +1 -1
- package/dist/trinity/generated/trinityCore/Tr2ImpostorManager.js +2 -2
- package/dist/trinity/generated/trinityCore/Tr2ImpostorManager.js.map +1 -1
- package/dist/trinity/generated/trinityCore/Tr2PrimitiveScene.js +2 -2
- package/dist/trinity/generated/trinityCore/Tr2PrimitiveScene.js.map +1 -1
- package/dist/trinity/generated/trinityCore/Tr2PrimitiveText.js +2 -2
- package/dist/trinity/generated/trinityCore/Tr2PrimitiveText.js.map +1 -1
- package/dist/trinity/generated/trinityCore/Tr2ReflectionProbe.js +2 -2
- package/dist/trinity/generated/trinityCore/Tr2ReflectionProbe.js.map +1 -1
- package/dist/trinity/generated/trinityCore/Tr2SSSSS.js +2 -2
- package/dist/trinity/generated/trinityCore/Tr2SSSSS.js.map +1 -1
- package/dist/trinity/generated/trinityCore/Tr2TextureAtlas.js +2 -2
- package/dist/trinity/generated/trinityCore/Tr2TextureAtlas.js.map +1 -1
- package/dist/trinity/generated/trinityCore/Tr2TextureAtlasMan.js +2 -2
- package/dist/trinity/generated/trinityCore/Tr2TextureAtlasMan.js.map +1 -1
- package/dist/trinity/index.js +23 -16
- package/dist/trinity/index.js.map +1 -1
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js +1 -31
- package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -1
- package/dist/trinity/particle/Tr2ParticleSystem.js +51 -52
- package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
- package/dist/trinity/particle/attribute/Tr2CapsuleShapeAttributeGenerator.js +2 -2
- package/dist/trinity/particle/attribute/Tr2CapsuleShapeAttributeGenerator.js.map +1 -1
- package/dist/trinity/particle/attribute/Tr2ConsecutiveIntegerAttributeGenerator.js +2 -2
- package/dist/trinity/particle/attribute/Tr2ConsecutiveIntegerAttributeGenerator.js.map +1 -1
- package/dist/trinity/particle/attribute/Tr2RandomDirectionAttributeGenerator.js +2 -2
- package/dist/trinity/particle/attribute/Tr2RandomDirectionAttributeGenerator.js.map +1 -1
- package/dist/trinity/particle/attribute/Tr2RandomIntegerAttributeGenerator.js +2 -2
- package/dist/trinity/particle/attribute/Tr2RandomIntegerAttributeGenerator.js.map +1 -1
- package/dist/trinity/particle/attribute/Tr2RandomUniformAttributeGenerator.js +2 -2
- package/dist/trinity/particle/attribute/Tr2RandomUniformAttributeGenerator.js.map +1 -1
- package/dist/trinity/particle/attribute/Tr2SphereShapeAttributeGenerator.js +2 -2
- package/dist/trinity/particle/attribute/Tr2SphereShapeAttributeGenerator.js.map +1 -1
- package/dist/trinity/particle/constraint/Tr2ElementBlendConstraint.js +2 -2
- package/dist/trinity/particle/constraint/Tr2ElementBlendConstraint.js.map +1 -1
- package/dist/trinity/particle/constraint/Tr2PlaneConstraint.js +13 -3
- package/dist/trinity/particle/constraint/Tr2PlaneConstraint.js.map +1 -1
- package/dist/trinity/particle/constraint/Tr2SphereConstraint.js +2 -2
- package/dist/trinity/particle/constraint/Tr2SphereConstraint.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementData.js +22 -8
- package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementDeclaration.js +13 -25
- package/dist/trinity/particle/element/Tr2ParticleElementDeclaration.js.map +1 -1
- package/dist/trinity/particle/element/Tr2ParticleElementDeclarationName.js +38 -3
- package/dist/trinity/particle/element/Tr2ParticleElementDeclarationName.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +26 -27
- package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +4 -5
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2GpuUniqueEmitter.js +2 -2
- package/dist/trinity/particle/emitter/Tr2GpuUniqueEmitter.js.map +1 -1
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +17 -18
- package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
- package/dist/trinity/particle/force/Tr2ForceSphereVolume.js +2 -2
- package/dist/trinity/particle/force/Tr2ForceSphereVolume.js.map +1 -1
- package/dist/trinity/particle/force/Tr2ParticleAttractorForce.js +2 -2
- package/dist/trinity/particle/force/Tr2ParticleAttractorForce.js.map +1 -1
- package/dist/trinity/particle/force/Tr2ParticleDirectForce.js +2 -2
- package/dist/trinity/particle/force/Tr2ParticleDirectForce.js.map +1 -1
- package/dist/trinity/particle/force/Tr2ParticleDragForce.js +2 -2
- package/dist/trinity/particle/force/Tr2ParticleDragForce.js.map +1 -1
- package/dist/trinity/particle/force/Tr2ParticleFluidDragForce.js +2 -2
- package/dist/trinity/particle/force/Tr2ParticleFluidDragForce.js.map +1 -1
- package/dist/trinity/particle/force/Tr2ParticleSpring.js +2 -2
- package/dist/trinity/particle/force/Tr2ParticleSpring.js.map +1 -1
- package/dist/trinity/particle/force/Tr2ParticleTurbulenceForce.js +2 -2
- package/dist/trinity/particle/force/Tr2ParticleTurbulenceForce.js.map +1 -1
- package/dist/trinity/particle/force/Tr2ParticleVortexForce.js +2 -2
- package/dist/trinity/particle/force/Tr2ParticleVortexForce.js.map +1 -1
- package/dist/trinity/particle/index.js +1 -1
- package/dist/trinity/postProcess/Tr2PostProcess.js +2 -2
- package/dist/trinity/postProcess/Tr2PostProcess.js.map +1 -1
- package/dist/trinity/postProcess/Tr2PostProcess2.js +2 -2
- package/dist/trinity/postProcess/Tr2PostProcess2.js.map +1 -1
- package/dist/trinity/postProcess/Tr2PostProcessAttributes.js +2 -2
- package/dist/trinity/postProcess/Tr2PostProcessAttributes.js.map +1 -1
- package/dist/trinity/postProcess/Tr2PostProcessRenderer.js +4 -4
- package/dist/trinity/postProcess/Tr2PostProcessRenderer.js.map +1 -1
- package/dist/trinity/postProcess/Tr2SSAO.js +4 -4
- package/dist/trinity/postProcess/Tr2SSAO.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPBloomEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPBloomEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPColorCorrectionEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPColorCorrectionEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPDepthOfFieldEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPDepthOfFieldEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPDesaturateEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPDesaturateEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPDynamicExposureEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPDynamicExposureEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPFadeEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPFadeEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPFilmGrainEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPFilmGrainEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPFogEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPFogEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPGenericEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPGenericEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPGodRaysEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPGodRaysEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPLutEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPLutEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPSignalLossEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPSignalLossEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPTaaEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPTaaEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPTonemappingEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPTonemappingEffect.js.map +1 -1
- package/dist/trinity/postProcess/effect/Tr2PPVignetteEffect.js +2 -2
- package/dist/trinity/postProcess/effect/Tr2PPVignetteEffect.js.map +1 -1
- package/dist/trinity/renderJob/Tr2RenderJobs.js +5 -5
- package/dist/trinity/renderJob/Tr2RenderJobs.js.map +1 -1
- package/dist/trinity/renderJob/TriRenderJob.js +4 -4
- package/dist/trinity/renderJob/TriRenderJob.js.map +1 -1
- package/dist/trinity/renderJob/node/Tr2RenderNodeEffect.js +4 -5
- package/dist/trinity/renderJob/node/Tr2RenderNodeEffect.js.map +1 -1
- package/dist/trinity/renderJob/node/Tr2RenderNodeSprite2dScene.js +4 -5
- package/dist/trinity/renderJob/node/Tr2RenderNodeSprite2dScene.js.map +1 -1
- package/dist/trinity/renderJob/step/Tr2StepExecuteRenderNode.js +2 -2
- package/dist/trinity/renderJob/step/Tr2StepExecuteRenderNode.js.map +1 -1
- package/dist/trinity/renderJob/step/TriRenderStep.js +2 -2
- package/dist/trinity/renderJob/step/TriRenderStep.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepClear.js +2 -2
- package/dist/trinity/renderJob/step/TriStepClear.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepClearUav.js +2 -2
- package/dist/trinity/renderJob/step/TriStepClearUav.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepCopyRenderTarget.js +2 -2
- package/dist/trinity/renderJob/step/TriStepCopyRenderTarget.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepEnableWireframeMode.js +2 -2
- package/dist/trinity/renderJob/step/TriStepEnableWireframeMode.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepFilterVisibilityResults.js +2 -2
- package/dist/trinity/renderJob/step/TriStepFilterVisibilityResults.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepGenerateMipMaps.js +2 -2
- package/dist/trinity/renderJob/step/TriStepGenerateMipMaps.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPopRenderTarget.js +2 -2
- package/dist/trinity/renderJob/step/TriStepPopRenderTarget.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPresentSwapChain.js +2 -2
- package/dist/trinity/renderJob/step/TriStepPresentSwapChain.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPushDepthStencil.js +2 -2
- package/dist/trinity/renderJob/step/TriStepPushDepthStencil.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +2 -2
- package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRenderAtlas.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRenderAtlas.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRenderDebug.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRenderDebug.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRenderEffect.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRenderEffect.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRenderFps.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRenderFps.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRenderLineGraph.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRenderLineGraph.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRenderObject.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRenderObject.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRenderPass.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRenderPass.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRenderScene.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRenderScene.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRenderSceneDebug.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRenderSceneDebug.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRenderTexture.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRenderTexture.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepResolve.js +2 -2
- package/dist/trinity/renderJob/step/TriStepResolve.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRunComputeShader.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRunComputeShader.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepRunJob.js +2 -2
- package/dist/trinity/renderJob/step/TriStepRunJob.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepSetDebugRenderer.js +2 -2
- package/dist/trinity/renderJob/step/TriStepSetDebugRenderer.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepSetDepthStencil.js +2 -2
- package/dist/trinity/renderJob/step/TriStepSetDepthStencil.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepSetProjection.js +2 -2
- package/dist/trinity/renderJob/step/TriStepSetProjection.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepSetRenderState.js +2 -2
- package/dist/trinity/renderJob/step/TriStepSetRenderState.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepSetRenderTarget.js +2 -2
- package/dist/trinity/renderJob/step/TriStepSetRenderTarget.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepSetStdRndStates.js +2 -2
- package/dist/trinity/renderJob/step/TriStepSetStdRndStates.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepSetUpscalingContextID.js +2 -2
- package/dist/trinity/renderJob/step/TriStepSetUpscalingContextID.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepSetVariableStore.js +2 -2
- package/dist/trinity/renderJob/step/TriStepSetVariableStore.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepSetView.js +2 -2
- package/dist/trinity/renderJob/step/TriStepSetView.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepSetViewport.js +2 -2
- package/dist/trinity/renderJob/step/TriStepSetViewport.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepSetVisualizationMode.js +2 -2
- package/dist/trinity/renderJob/step/TriStepSetVisualizationMode.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepTestBlocking.js +2 -2
- package/dist/trinity/renderJob/step/TriStepTestBlocking.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepToggleCubemap.js +2 -2
- package/dist/trinity/renderJob/step/TriStepToggleCubemap.js.map +1 -1
- package/dist/trinity/renderJob/step/TriStepUpdate.js +2 -2
- package/dist/trinity/renderJob/step/TriStepUpdate.js.map +1 -1
- package/dist/trinity/shader/Tr2DataTextureManager.js +9 -9
- package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Effect.js +370 -347
- package/dist/trinity/shader/Tr2Effect.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +5 -5
- package/dist/trinity/shader/Tr2Material.js.map +1 -1
- package/dist/trinity/shader/Tr2ShaderBuffer.js +3 -4
- package/dist/trinity/shader/Tr2ShaderBuffer.js.map +1 -1
- package/dist/trinity/shader/index.js +3 -0
- package/dist/trinity/shader/index.js.map +1 -1
- package/dist/trinity/shader/parameter/CjsParameter.js +202 -185
- package/dist/trinity/shader/parameter/CjsParameter.js.map +1 -1
- package/dist/trinity/shader/parameter/CjsVectorParameter.js +2 -2
- package/dist/trinity/shader/parameter/CjsVectorParameter.js.map +1 -1
- package/dist/trinity/shader/parameter/ITriEffectParameter.js +56 -0
- package/dist/trinity/shader/parameter/ITriEffectParameter.js.map +1 -0
- package/dist/trinity/shader/parameter/ITriEffectResourceParameter.js +31 -0
- package/dist/trinity/shader/parameter/ITriEffectResourceParameter.js.map +1 -0
- package/dist/trinity/shader/parameter/ITriEffectTextureParameter.js +43 -0
- package/dist/trinity/shader/parameter/ITriEffectTextureParameter.js.map +1 -0
- package/dist/trinity/shader/parameter/Tr2ConstantEffectParameter.js +17 -5
- package/dist/trinity/shader/parameter/Tr2ConstantEffectParameter.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2FloatParameter.js +46 -45
- package/dist/trinity/shader/parameter/Tr2FloatParameter.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +14 -12
- package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2Matrix4Parameter.js +33 -32
- package/dist/trinity/shader/parameter/Tr2Matrix4Parameter.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js +11 -10
- package/dist/trinity/shader/parameter/Tr2RuntimeTextureParameter.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2TextureAnimationParameter.js +55 -53
- package/dist/trinity/shader/parameter/Tr2TextureAnimationParameter.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2Vector2Parameter.js +49 -48
- package/dist/trinity/shader/parameter/Tr2Vector2Parameter.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2Vector3Parameter.js +52 -51
- package/dist/trinity/shader/parameter/Tr2Vector3Parameter.js.map +1 -1
- package/dist/trinity/shader/parameter/Tr2Vector4Parameter.js +56 -55
- package/dist/trinity/shader/parameter/Tr2Vector4Parameter.js.map +1 -1
- package/dist/trinity/shader/parameter/TriFloatArrayParameter.js +8 -8
- package/dist/trinity/shader/parameter/TriFloatArrayParameter.js.map +1 -1
- package/dist/trinity/shader/parameter/TriTextureParameter.js +27 -22
- package/dist/trinity/shader/parameter/TriTextureParameter.js.map +1 -1
- package/dist/trinity/shader/parameter/TriTransformParameter.js +27 -27
- package/dist/trinity/shader/parameter/TriTransformParameter.js.map +1 -1
- package/dist/trinity/shader/parameter/TriVariableParameter.js +53 -54
- package/dist/trinity/shader/parameter/TriVariableParameter.js.map +1 -1
- package/dist/trinity/shader/parameter/TriVector4.js +2 -2
- package/dist/trinity/shader/parameter/TriVector4.js.map +1 -1
- package/dist/trinity/shader/reflection/Tr2ShaderOption.js +4 -2
- package/dist/trinity/shader/reflection/Tr2ShaderOption.js.map +1 -1
- package/dist/trinity/shader/sampler/Tr2SamplerOverride.js +11 -2
- package/dist/trinity/shader/sampler/Tr2SamplerOverride.js.map +1 -1
- package/dist/trinity/sprite2d/Tr2Sprite2dContainerBase.js +2 -2
- package/dist/trinity/sprite2d/Tr2Sprite2dContainerBase.js.map +1 -1
- package/dist/trinity/sprite2d/Tr2Sprite2dLineTrace.js +2 -2
- package/dist/trinity/sprite2d/Tr2Sprite2dLineTrace.js.map +1 -1
- package/dist/trinity/sprite2d/Tr2Sprite2dLineTraceVertex.js +2 -2
- package/dist/trinity/sprite2d/Tr2Sprite2dLineTraceVertex.js.map +1 -1
- package/dist/trinity/sprite2d/Tr2Sprite2dPickingMask.js +8 -9
- package/dist/trinity/sprite2d/Tr2Sprite2dPickingMask.js.map +1 -1
- package/dist/trinity/sprite2d/Tr2Sprite2dPolygon.js +2 -2
- package/dist/trinity/sprite2d/Tr2Sprite2dPolygon.js.map +1 -1
- package/dist/trinity/sprite2d/Tr2Sprite2dRenderJob.js +2 -2
- package/dist/trinity/sprite2d/Tr2Sprite2dRenderJob.js.map +1 -1
- package/dist/trinity/sprite2d/Tr2Sprite2dScene.js +4 -4
- package/dist/trinity/sprite2d/Tr2Sprite2dScene.js.map +1 -1
- package/dist/trinity/sprite2d/Tr2Sprite2dTransform.js +2 -2
- package/dist/trinity/sprite2d/Tr2Sprite2dTransform.js.map +1 -1
- package/dist/trinity/sprite2d/Tr2Sprite2dTriangle.js +2 -2
- package/dist/trinity/sprite2d/Tr2Sprite2dTriangle.js.map +1 -1
- package/dist/trinity/sprite2d/Tr2SpriteObjectBase.js +2 -2
- package/dist/trinity/sprite2d/Tr2SpriteObjectBase.js.map +1 -1
- package/dist/trinity/ui/Tr2PresentParameters.js +2 -2
- package/dist/trinity/ui/Tr2PresentParameters.js.map +1 -1
- package/dist/trinity/ui/Tr2ProjectBoundingBoxBracket.js +3 -3
- package/dist/trinity/ui/Tr2ProjectBoundingBoxBracket.js.map +1 -1
- package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
- package/docs/core/README.md +38 -38
- package/docs/core/architecture.md +6 -5
- package/docs/core/reference/api.md +0 -10
- package/docs/core/reference/classes/README.md +57 -67
- package/docs/global/architecture.md +1 -3
- package/docs/global/blue-enums.md +115 -0
- package/docs/global/concepts/model-lifecycle.md +177 -182
- package/docs/global/core-types/README.md +394 -317
- package/docs/global/reference/api.md +2 -2
- package/docs/global/reference/classes/README.md +355 -205
- package/docs/global/reference/classes/dropped.md +40 -0
- package/docs/resource/architecture.md +152 -112
- package/docs/resource/concepts/resource-lifecycle.md +14 -10
- package/docs/resource/formats/pickle.md +126 -100
- package/docs/resource/formats/provenance.md +15 -9
- package/docs/resource/formats/webgl/carbon-constant-layouts.md +98 -232
- package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +278 -530
- package/docs/resource/reference/classes/README.md +3 -1
- package/docs/resource/reference/classes/dropped.md +21 -1
- package/docs/resource/reference/classes/formats.md +33 -0
- package/docs/resource/reference/classes/video.md +92 -0
- package/docs/resource/reference/events.md +10 -9
- package/docs/resource/reference/queues.md +8 -1
- package/docs/trinity/README.md +5 -5
- package/docs/trinity/architecture.md +355 -344
- package/docs/trinity/concepts/eve-runtime-behavior.md +1 -1
- package/docs/trinity/reference/api.md +19 -7
- package/docs/trinity/reference/classes/dropped.md +2 -11
- package/docs/trinity/reference/classes/eve-runtime.md +1 -1
- package/docs/trinity/reference/classes/trinity-core.md +1672 -1622
- package/docs/trinity/reference/implementation-status.md +92 -92
- package/package.json +2 -1
- package/dist/core/CjsFrameDriver.js +0 -109
- package/dist/core/CjsFrameDriver.js.map +0 -1
- package/dist/global/contracts/CjsFrameLifecycle.js +0 -49
- package/dist/global/contracts/CjsFrameLifecycle.js.map +0 -1
- package/dist/global/contracts/CjsInstancedMeshManager.js +0 -58
- package/dist/global/contracts/CjsInstancedMeshManager.js.map +0 -1
- package/dist/resource/formats/black/core/black-schema-v1-2026-07-23.json.js +0 -4
- package/dist/resource/formats/black/core/black-schema-v1-2026-07-23.json.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2LightManager.js","sources":["../../../../../src/trinity/core/lighting/Tr2LightManager.js"],"sourcesContent":["// Source: trinity/trinity/Tr2LightManager.h + Tr2LightManager.cpp\n//\n// The local-light manager: collects per-light records from every\n// ITr2LightOwner during the scene gather, culls and premultiplies them,\n// selects the volumetric set, and owns the PACKED light buffer bytes the\n// abstraction layer uploads. Description-building throughout - under the\n// engine-means-AL vocabulary (docs c5a4b66) everything here is Trinity's;\n// only realizing LightBuffer/LightIndexBuffer into device objects, the\n// tiling compute dispatch, the shadow atlas textures and the raytraced\n// path are the AL's, and all of those are deferred below.\n//\n// SHIPPING BEHAVIOUR PIN: Carbon ships with g_useDynamicLightsShadows =\n// false (cpp:21-22, a TRI_REGISTER_SETTING - runtime-mutable, hence the\n// static below rather than a constant). With it false, ResolveLightData\n// returns after the volumetric pass (cpp:568-571) and AddLight always\n// strips FLAG_CASTS_SHADOWS (cpp:359-365). The caster/atlas CPU half IS\n// ported (settings derivation, guillotine packer, five-pass fit, packed\n// 10-bit offsets) and sits behind the same setting; only its GPU\n// realization (the pooled D32 atlas texture, cpp:703-706) stays the\n// abstraction layer's.\n//\n// Carbon's thread-local gather vectors (safe under Tr2ParallelFor,\n// EveSpaceScene.cpp:1410) collapse to one array: the JS gather is\n// sequential. Carbon's file-static singleton (GetOrCreateInstance) is NOT\n// ported - the runtime injects a manager into GatherLights, which is the\n// shape every call site and test already has.\n//\n// docs/contracts/carbon-light-data.md owns the PerLightData layout, the\n// packed flag word, the premultiply and the fade band; the packing below\n// cites it rather than re-deriving it.\n\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, type } from \"#schema\";\nimport { num } from \"#math/num\";\nimport { vec3 } from \"#math/vec3\";\nimport { ShadowQuality } from \"../../generated/trinityCore/enums.js\";\nimport { Tr2TextureArray } from \"../Tr2TextureArray/index.js\";\n\n// Tr2LightManager.cpp:30-48 - copied verbatim; the buffer sizes are the ABI\n// the AL uploads against.\nconst LIGHT_BUFFER_SIZE = 1024;\nconst CUTOFF_PIXEL_SIZE = 7;\nconst FADE_SIZE = 5;\nconst MAX_NUM_VOLUMETRIC_LIGHTS = 16;\nconst MAX_NUM_SHADOWCASTING_LIGHTS = 16;\nconst HIGH_QUALITY_ATLAS_SIZE_LOG2 = 14;\nconst HIGH_QUALITY_ATLAS_ENTRY_MAX_SIZE = 1 << 13;\nconst INFINITE_SIZE_CLAMP = 1 << 14; // 1 << HIGH_QUALITY_ATLAS_SIZE_LOG2\nconst FLOATS_PER_LIGHT = 12; // 48 bytes / 3 RGBA32 texels\n\n/** CCP_ALIGN: round up to a power-of-two alignment. */\nfunction align(value, alignment)\n{\n return (value + alignment - 1) & ~(alignment - 1);\n}\n\n/**\n * Carbon's anonymous-namespace CalculateShadowMapAtlasSettings (cpp:92-122).\n *\n * Ported branch for branch, including the SHADOW_RAYTRACED quirk: it zeroes\n * with SHADOW_DISABLED but then re-enters the != DISABLED block, so\n * `entryMinSizeLog2 = 0 - 10` wraps unsigned (4294967286) and\n * `1 << entryMinSizeLog2` shifts by that count. MSVC x86 masks the shift\n * count by 31 and SO DOES JavaScript's << - writing the arithmetic plainly\n * reproduces Carbon's shipping behaviour exactly (entryMinSize 1<<22,\n * entryMaxSize 8192 >> 14 = 0).\n *\n * @param {number} shadowQuality ShadowQuality ordinal.\n * @returns {object} ShadowMapAtlasSettings (actualTextureSize starts 0).\n */\nfunction calculateShadowMapAtlasSettings(shadowQuality)\n{\n const settings = {\n actualTextureSize: 0,\n sizeLog2: 0,\n size: 0,\n entryMinSizeLog2: 0,\n entryMinSize: 0,\n entryInverseScaleFactorLog2: 0,\n entryMaxSize: 0\n };\n switch (shadowQuality)\n {\n case ShadowQuality.SHADOW_DISABLED:\n case ShadowQuality.SHADOW_RAYTRACED:\n break;\n case ShadowQuality.SHADOW_LOW:\n settings.sizeLog2 = HIGH_QUALITY_ATLAS_SIZE_LOG2 - 2;\n break;\n case ShadowQuality.SHADOW_HIGH:\n settings.sizeLog2 = HIGH_QUALITY_ATLAS_SIZE_LOG2;\n break;\n }\n if (shadowQuality !== ShadowQuality.SHADOW_DISABLED)\n {\n settings.size = 1 << settings.sizeLog2;\n settings.entryMinSizeLog2 = (settings.sizeLog2 - 10) >>> 0;\n settings.entryMinSize = 1 << settings.entryMinSizeLog2;\n settings.entryInverseScaleFactorLog2 = HIGH_QUALITY_ATLAS_SIZE_LOG2 - settings.sizeLog2;\n settings.entryMaxSize = HIGH_QUALITY_ATLAS_ENTRY_MAX_SIZE >> settings.entryInverseScaleFactorLog2;\n }\n return settings;\n}\n\n// Carbon packs these halves through Float_16(...) (Tr2LightManager.cpp:297,\n// :328-329), which rounds to nearest. num.toHalfFloat is the runtime's one\n// half codec and rounds identically for every in-range value; an earlier\n// file-local encoder here TRUNCATED, a 1-ulp divergence from Carbon,\n// removed 2026-09-08.\nconst toHalf = num.toHalfFloat;\n\n/** Owns the frame's local-light records, their selection, and the packed light-buffer bytes the abstraction layer uploads. */\n@type.define({ className: \"Tr2LightManager\", family: \"trinityCore\" })\nexport class Tr2LightManager extends CjsModel\n{\n\n // Carbon m_lightData after the TLS flatten: the frame's accepted records,\n // plain-object copies (every producer reuses a static scratch record, so\n // AddLight copies by value exactly as std::vector::push_back does).\n #records = [];\n\n // Carbon m_volumetricLights / m_shadowCastingLights: indices into #records.\n #volumetricLights = [];\n\n #shadowCastingLights = [];\n\n // Carbon m_frustum, by reference (SetFrustum copies by value in C++; the\n // stamped frame frustum is not mutated during the gather, so a reference\n // carries the same guarantee here).\n #frustum = null;\n\n // Carbon m_adjustedCutoff (cpp:249-252).\n #adjustedCutoff = CUTOFF_PIXEL_SIZE;\n\n // Carbon m_currentSpaceSceneShadowQuality (h:197).\n #currentSpaceSceneShadowQuality = ShadowQuality.SHADOW_DISABLED;\n\n // Carbon nextFrameShadowQuality (h:196) - a bitmask collecting every\n // scene's requested quality during the current frame.\n #nextFrameShadowQuality = 0;\n\n // Carbon m_currentFrameCounter (h:198; ctor sets -1, cpp:164).\n #currentFrameCounter = -1;\n\n // Carbon's anonymous m_ShadowMap block (h:200-205): the atlas settings,\n // the guillotine node tree, and the quality the atlas was last sized for.\n #shadowMap = {\n atlasSettings: calculateShadowMapAtlasSettings(ShadowQuality.SHADOW_DISABLED),\n atlasNodes: [],\n qualityUsedByAtlas: ShadowQuality.SHADOW_DISABLED\n };\n\n // Non-Carbon: the frame clock the packed sets read for curve sampling.\n #animationTime = 0;\n\n // Non-Carbon: profile-object -> slice index, assigned on first sight. The\n // slot registry is description-side (Carbon assigns slices through the\n // manager-owned Tr2TextureArray, cpp:682-686, whose realization is AL).\n #profileSlots = new Map();\n\n // The packed PerLightData buffer (contract: 48 bytes / 3 RGBA32 texels per\n // light), built by ResolveLightData, uploaded by the AL.\n #packed = new Float32Array(LIGHT_BUFFER_SIZE * FLOATS_PER_LIGHT);\n\n #packedBits = new Uint32Array(this.#packed.buffer);\n\n #packedCount = 0;\n\n // Non-Carbon: bumped by ResolveLightData so the AL can skip re-uploads.\n #revision = 0;\n\n /** Tr2LightManager.h:100-105 - the light flag bits, Carbon's raw uint16 spelling. */\n static Flags = Object.freeze({\n AFFECTS_SURFACES: 1,\n AFFECTS_PARTICLES: 1 << 1,\n CASTS_SHADOWS: 1 << 2,\n IS_VOLUMETRIC: 1 << 3,\n DEFAULT: 1\n });\n\n /** The variable-store names the AL binds the packed buffers under\n * (Tr2LightManager.h:46-47; both isAutoregister). The NAMES are Trinity's\n * contract; the variables are the AL's to create. */\n static LIGHT_BUFFER_NAME = \"LightBuffer\";\n\n static LIGHT_INDEX_BUFFER_NAME = \"LightIndexBuffer\";\n\n /**\n * Carbon g_useDynamicLightsShadows (cpp:21-22) - a TRI_REGISTER_SETTING,\n * i.e. a runtime-mutable setting rather than a compile constant, shipped\n * FALSE. The whole shadow-caster/atlas half sits behind it; flipping it\n * exercises the ported path (the tests do), and shipping behaviour is\n * unchanged while it stays false.\n */\n static useDynamicLightsShadows = false;\n\n /** The atlas-settings derivation, exposed for tests (Carbon cpp:92-122). */\n static calculateShadowMapAtlasSettings = calculateShadowMapAtlasSettings;\n\n /**\n * Carbon Tr2LightManager::AreLightFlagsValid (cpp:677-680): a light must\n * affect surfaces or particles to exist at all.\n */\n @carbon.method\n @impl.implemented\n static areLightFlagsValid(flags)\n {\n return (flags & (Tr2LightManager.Flags.AFFECTS_SURFACES | Tr2LightManager.Flags.AFFECTS_PARTICLES)) !== 0;\n }\n\n /**\n * Carbon SetShadowQuality (cpp:262-295), the full body: record the\n * scene's quality, collapse the previous frame's quality bitmask into\n * qualityUsedByAtlas on a frame change (HIGH beats LOW beats DISABLED),\n * and recompute the atlas settings for min(requested, atlas quality)\n * with actualTextureSize taken from the atlas quality - multiple scenes\n * may request different qualities in one frame and the texture must fit\n * the largest.\n */\n @carbon.method\n @impl.implemented\n SetShadowQuality(quality, frameCounter = 0)\n {\n const shadowQuality = Number(quality) || 0;\n this.#currentSpaceSceneShadowQuality = shadowQuality;\n\n if (this.#currentFrameCounter !== frameCounter)\n {\n if (!Tr2LightManager.useDynamicLightsShadows)\n {\n this.#nextFrameShadowQuality = 0;\n }\n\n if (this.#nextFrameShadowQuality & (1 << ShadowQuality.SHADOW_HIGH))\n {\n this.#shadowMap.qualityUsedByAtlas = ShadowQuality.SHADOW_HIGH;\n }\n else if (this.#nextFrameShadowQuality & (1 << ShadowQuality.SHADOW_LOW))\n {\n this.#shadowMap.qualityUsedByAtlas = ShadowQuality.SHADOW_LOW;\n }\n else\n {\n this.#shadowMap.qualityUsedByAtlas = ShadowQuality.SHADOW_DISABLED;\n }\n this.#nextFrameShadowQuality = 1 << shadowQuality;\n this.#currentFrameCounter = frameCounter;\n }\n\n this.#nextFrameShadowQuality |= 1 << shadowQuality;\n\n const clamped = Math.min(shadowQuality, this.#shadowMap.qualityUsedByAtlas);\n this.#shadowMap.atlasSettings = calculateShadowMapAtlasSettings(clamped);\n this.#shadowMap.atlasSettings.actualTextureSize =\n calculateShadowMapAtlasSettings(this.#shadowMap.qualityUsedByAtlas).size;\n }\n\n /** Carbon GetShadowMapAtlasSettings (cpp:708-711). */\n @carbon.method\n @impl.implemented\n GetShadowMapAtlasSettings()\n {\n return this.#shadowMap.atlasSettings;\n }\n\n /**\n * Carbon GetUnpackedShadowMapData (cpp:810-815): the packed 10-bit\n * offsets/scale back into texels via the entry-min-size shift.\n *\n * @param {object} record A light record carrying the packed fields.\n * @param {object} [out] Receives scale/offsetX/offsetY.\n * @returns {object} out\n */\n @carbon.method\n @impl.implemented\n GetUnpackedShadowMapData(record, out = {})\n {\n const shift = this.#shadowMap.atlasSettings.entryMinSizeLog2;\n out.shadowMapScale = (record.shadowMapScale ?? 0) << shift;\n out.shadowMapOffsetX = (record.shadowMapOffsetX ?? 0) << shift;\n out.shadowMapOffsetY = (record.shadowMapOffsetY ?? 0) << shift;\n return out;\n }\n\n /**\n * Carbon Clear (cpp:220-242), the CPU half: drops the frame's records and\n * selections. The index-buffer UAV clear (cpp:224) is device work the AL\n * performs when it consumes the frame.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"ClearLightIndices' UAV clear is AL realization; the vector clears are ported. The render-context parameter is accepted for signature parity and unused.\")\n Clear(_renderContext = null)\n {\n this.#records.length = 0;\n this.#volumetricLights.length = 0;\n this.#shadowCastingLights.length = 0;\n }\n\n /** Carbon SetFrustum (cpp:244-247). */\n @carbon.method\n @impl.implemented\n SetFrustum(frustum)\n {\n this.#frustum = frustum ?? null;\n }\n\n /** Carbon AdjustLightCutoff (cpp:249-252): the cull threshold is 7px * lodFactor. */\n @carbon.method\n @impl.implemented\n AdjustLightCutoff(lodFactor)\n {\n this.#adjustedCutoff = CUTOFF_PIXEL_SIZE * (Number(lodFactor) || 0);\n }\n\n /**\n * Carbon AddPointLight (cpp:297-332): authors a record from scratch, in\n * Carbon's exact order - flags gate, brightness gate, frustum cull, pixel\n * cutoff, premultiply+fade, defaults for everything a caller cannot\n * supply. The direction default is (1,0,0), never zero - a zero direction\n * is a legal bit pattern the shader normalises into NaN (contract §\"third\n * texel\").\n */\n @carbon.method\n @impl.implemented\n AddPointLight(position, radius, color, innerRadius = 0, flags = Tr2LightManager.Flags.DEFAULT)\n {\n if (!Tr2LightManager.areLightFlagsValid(flags)) return;\n\n const brightness = Math.max(color[0], color[1], color[2]);\n if (!(brightness > 0)) return;\n\n const dimming = this.#CullAndDim(position, radius);\n if (dimming <= 0) return;\n\n const scale = radius * dimming;\n this.#records.push({\n owner: null,\n lightData: null,\n lightProfile: null,\n lightType: 0,\n position: vec3.fromValues(position[0], position[1], position[2]),\n direction: vec3.fromValues(1, 0, 0),\n color: vec3.fromValues(color[0] * scale, color[1] * scale, color[2] * scale),\n radius,\n innerRadius,\n flags,\n outerAngle: 0,\n innerAngle: 0,\n projectionPlaneDistance: 0\n });\n }\n\n /**\n * Carbon AddLight (cpp:334-368): takes a caller-built record, applies the\n * same gates, premultiplies, and - faithfully - MUTATES the caller's\n * record in place where Carbon does (the shadow-flag strip on the non-const\n * reference, cpp:359-365; always taken under the shipping pin). The stored\n * record is a by-value copy: every producer reuses a static scratch record,\n * exactly as Carbon's std::vector push copies.\n */\n @carbon.method\n @impl.implemented\n AddLight(record)\n {\n if (!Tr2LightManager.areLightFlagsValid(record.flags)) return;\n\n const brightness = Math.max(record.color[0], record.color[1], record.color[2]);\n if (!(brightness > 0) || !(record.radius > 0)) return;\n\n const dimming = this.#CullAndDim(record.position, record.radius);\n if (dimming <= 0) return;\n\n // Carbon's conditional strip (cpp:359-365): shadows survive only when\n // the setting is on, the scene quality is not DISABLED, and a shadow-map\n // quality has an atlas actually sized for it (qualityUsedByAtlas lags a\n // frame behind). Always taken under the shipping default.\n const usingShadowMap = this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_LOW\n || this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_HIGH;\n if (this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_DISABLED\n || (usingShadowMap && this.#shadowMap.qualityUsedByAtlas === ShadowQuality.SHADOW_DISABLED)\n || !Tr2LightManager.useDynamicLightsShadows)\n {\n record.flags &= ~Tr2LightManager.Flags.CASTS_SHADOWS;\n }\n\n const scale = record.radius * dimming;\n this.#records.push({\n owner: record.owner ?? null,\n lightData: record.lightData ?? null,\n lightProfile: record.lightProfile ?? null,\n lightType: record.lightType ?? 0,\n position: vec3.fromValues(record.position[0], record.position[1], record.position[2]),\n direction: vec3.fromValues(record.direction[0], record.direction[1], record.direction[2]),\n color: vec3.fromValues(record.color[0] * scale, record.color[1] * scale, record.color[2] * scale),\n radius: record.radius,\n innerRadius: record.innerRadius ?? 0,\n flags: record.flags,\n outerAngle: record.outerAngle ?? 0,\n innerAngle: record.innerAngle ?? 0,\n projectionPlaneDistance: record.projectionPlaneDistance ?? 0\n });\n }\n\n /**\n * Carbon ResolveLightData (cpp:520-620): the TLS flatten is a no-op here\n * (one array), the volumetric top-16 selection runs exactly as Carbon's -\n * including clearing IS_VOLUMETRIC on the losers so shader and CPU agree -\n * then the shadow-caster half (ported in full, gated by the same\n * useDynamicLightsShadows setting Carbon ships false), then the packed\n * buffer: byte layout per the contract, profile slots biased by one into\n * flag bits 4-15, the shadow union in word 11.\n */\n @carbon.method\n @impl.implemented\n ResolveLightData()\n {\n const volumetric = [];\n for (let i = 0; i < this.#records.length; i++)\n {\n if (this.#records[i].flags & Tr2LightManager.Flags.IS_VOLUMETRIC)\n {\n const size = this.#ScreenSize(this.#records[i]);\n volumetric.push([ i, Math.min(size, INFINITE_SIZE_CLAMP) ]);\n }\n }\n volumetric.sort((a, b) => b[1] - a[1]);\n\n this.#volumetricLights.length = 0;\n for (let i = 0; i < volumetric.length; i++)\n {\n if (i < MAX_NUM_VOLUMETRIC_LIGHTS) this.#volumetricLights.push(volumetric[i][0]);\n else this.#records[volumetric[i][0]].flags &= ~Tr2LightManager.Flags.IS_VOLUMETRIC;\n }\n\n this.#ResolveShadowCasters();\n\n this.#Pack();\n this.#revision += 1;\n }\n\n /**\n * Carbon's shadow-caster half of ResolveLightData (cpp:568-620): the\n * useDynamicLightsShadows/DISABLED early-out (Carbon ships with the\n * setting FALSE - it is a TRI_REGISTER_SETTING, hence a mutable static\n * here rather than a constant), then filter casters by flag, estimate\n * screen size (Carbon's FLT_MAX inside-the-sphere sentinel clamps to the\n * high-quality atlas size), sort descending, keep the largest sixteen,\n * strip FLAG_CASTS_SHADOWS from the losers, assign raytracing masks by\n * rank under SHADOW_RAYTRACED, and pack the atlas for LOW/HIGH.\n */\n #ResolveShadowCasters()\n {\n this.#shadowCastingLights.length = 0;\n if (!Tr2LightManager.useDynamicLightsShadows\n || this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_DISABLED)\n {\n return;\n }\n\n const lightTuples = [];\n for (let i = 0; i < this.#records.length; i++)\n {\n if ((this.#records[i].flags & Tr2LightManager.Flags.CASTS_SHADOWS) !== 0)\n {\n let sizeAcross = this.#frustum\n ? this.#frustum.GetPixelSizeAccrossEst(this.#records[i].position, this.#records[i].radius)\n : 0;\n if (!Number.isFinite(sizeAcross)) sizeAcross = 1 << HIGH_QUALITY_ATLAS_SIZE_LOG2;\n lightTuples.push({ lightIndex: i, sizeAcross });\n }\n }\n\n lightTuples.sort((a, b) => b.sizeAcross - a.sizeAcross);\n\n const raytraced = this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_RAYTRACED;\n const numShadowCastingLights = Math.min(MAX_NUM_SHADOWCASTING_LIGHTS, lightTuples.length);\n let i = 0;\n for (; i < numShadowCastingLights; i++)\n {\n this.#shadowCastingLights.push(lightTuples[i].lightIndex);\n if (raytraced)\n {\n this.#records[lightTuples[i].lightIndex].raytracingShadowMask = 1 << i;\n }\n }\n for (; i < lightTuples.length; i++)\n {\n const record = this.#records[lightTuples[i].lightIndex];\n record.flags &= ~Tr2LightManager.Flags.CASTS_SHADOWS;\n if (raytraced)\n {\n record.raytracingShadowMask = 0;\n }\n }\n\n if (this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_LOW\n || this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_HIGH)\n {\n this.#CreateShadowMapAtlas(numShadowCastingLights, lightTuples);\n }\n }\n\n /**\n * Carbon CreateShadowMapAtlas (cpp:442-508): five fitting passes, each\n * halving entryMaxSize and incrementing the inverse-scale shift; entry\n * MIN size never scales. A failing pass still inserts every remaining\n * light before retrying. Point lights (innerAngle <= 0) take a 3x2\n * cube-cross, spots a square. Successful entries pack their offsets and\n * scale in entry-min-size units into the record's 10-bit fields; failures\n * zero them.\n */\n #CreateShadowMapAtlas(numShadowCastingLights, lightTuples)\n {\n const settings = this.#shadowMap.atlasSettings;\n const entry = { x: 0, y: 0 };\n let everythingFit = false;\n for (let j = 0; j < 5 && !everythingFit; j++)\n {\n everythingFit = true;\n const entryInverseScaleFactorLog2 = settings.entryInverseScaleFactorLog2 + j;\n const entryMaxSize = settings.entryMaxSize >> j;\n\n this.#shadowMap.atlasNodes.length = 0;\n this.#shadowMap.atlasNodes.push({\n children: [ -1, -1 ],\n lightIndex: -1,\n x: 0,\n y: 0,\n width: settings.size,\n height: settings.size\n });\n\n for (let i = 0; i < numShadowCastingLights; i++)\n {\n const lightIndex = lightTuples[i].lightIndex;\n const record = this.#records[lightIndex];\n\n let size = (lightTuples[i].sizeAcross >>> 0) >>> entryInverseScaleFactorLog2;\n size = Math.min(Math.max(size, settings.entryMinSize), entryMaxSize);\n size = align(size, settings.entryMinSize);\n\n let width, height;\n if (record.innerAngle <= 0)\n {\n // pointlight: a 3x2 cube-face cross\n width = 3 * size;\n height = 2 * size;\n }\n else\n {\n // spotlight\n width = size;\n height = size;\n }\n\n if (this.#GetShadowMapAtlasEntry(lightIndex, width, height, entry))\n {\n record.shadowMapOffsetX = entry.x >>> settings.entryMinSizeLog2;\n record.shadowMapOffsetY = entry.y >>> settings.entryMinSizeLog2;\n record.shadowMapScale = size >>> settings.entryMinSizeLog2;\n }\n else\n {\n record.shadowMapOffsetX = 0;\n record.shadowMapOffsetY = 0;\n record.shadowMapScale = 0;\n everythingFit = false;\n }\n }\n }\n }\n\n /**\n * Carbon GetShadowMapAtlasEntry (cpp:790-808): align the request to the\n * entry min size, insert from the root, and report position ONLY on\n * success - the out object is untouched on failure, exactly as Carbon\n * leaves its out-references.\n */\n #GetShadowMapAtlasEntry(lightIndex, width, height, out)\n {\n const settings = this.#shadowMap.atlasSettings;\n width = align(width, settings.entryMinSize);\n height = align(height, settings.entryMinSize);\n\n const nodeId = this.#InsertAtlasNode(this.#shadowMap.atlasNodes, 0, lightIndex, width, height);\n if (nodeId !== -1)\n {\n out.x = this.#shadowMap.atlasNodes[nodeId].x;\n out.y = this.#shadowMap.atlasNodes[nodeId].y;\n }\n return nodeId !== -1;\n }\n\n /**\n * Carbon InsertAtlasNode (cpp:718-788) - the blackpawn.com guillotine\n * packer, ported branch for branch: descend into split nodes (first\n * child, then second), reject occupied or too-small leaves, claim exact\n * fits, otherwise split along the larger remainder axis and recurse into\n * the first child.\n */\n #InsertAtlasNode(atlasNodes, nodeId, lightIndex, width, height)\n {\n const node = atlasNodes[nodeId];\n if (node.children[0] !== -1 || node.children[1] !== -1)\n {\n const newNode = this.#InsertAtlasNode(atlasNodes, node.children[0], lightIndex, width, height);\n if (newNode !== -1)\n {\n return newNode;\n }\n return this.#InsertAtlasNode(atlasNodes, node.children[1], lightIndex, width, height);\n }\n\n if (node.lightIndex !== -1)\n {\n return -1;\n }\n if (node.width < width || node.height < height)\n {\n return -1;\n }\n if (node.width === width && node.height === height)\n {\n node.lightIndex = lightIndex;\n return nodeId;\n }\n\n const child0 = { children: [ -1, -1 ], lightIndex: -1, x: 0, y: 0, width: 0, height: 0 };\n const child1 = { children: [ -1, -1 ], lightIndex: -1, x: 0, y: 0, width: 0, height: 0 };\n atlasNodes.push(child0, child1);\n node.children[0] = atlasNodes.length - 2;\n node.children[1] = atlasNodes.length - 1;\n\n const deltaWidth = node.width - width;\n const deltaHeight = node.height - height;\n\n if (deltaWidth > deltaHeight)\n {\n child0.x = node.x;\n child0.y = node.y;\n child0.width = width;\n child0.height = node.height;\n child1.x = node.x + width;\n child1.y = node.y;\n child1.width = node.width - width;\n child1.height = node.height;\n }\n else\n {\n child0.x = node.x;\n child0.y = node.y;\n child0.width = node.width;\n child0.height = height;\n child1.x = node.x;\n child1.y = node.y + height;\n child1.width = node.width;\n child1.height = node.height - height;\n }\n\n return this.#InsertAtlasNode(atlasNodes, node.children[0], lightIndex, width, height);\n }\n\n /** Carbon GetCurrentSpaceSceneShadowQuality (cpp:713-716): a bare field read; every record producer asks it before building. */\n @carbon.method\n @impl.implemented\n GetCurrentSpaceSceneShadowQuality()\n {\n return this.#currentSpaceSceneShadowQuality;\n }\n\n /** Carbon GetLightData (cpp:695-698): the frame's resolved records, borrowed. */\n @carbon.method\n @impl.implemented\n GetLightData()\n {\n return this.#records;\n }\n\n /** Carbon GetVolumetricLights (cpp:707-710): indices into GetLightData, borrowed. */\n @carbon.method\n @impl.implemented\n GetVolumetricLights()\n {\n return this.#volumetricLights;\n }\n\n /** Carbon GetShadowCastingLights (cpp:688-691): empty under the shipping pin, kept for signature parity. */\n @carbon.method\n @impl.implemented\n GetShadowCastingLights()\n {\n return this.#shadowCastingLights;\n }\n\n /**\n * Non-Carbon: the frame clock the packed light sets sample their curves\n * with. Carbon's sets read the renderer's clock; the GPU-free runtime\n * threads it through the manager the sets already hold.\n */\n @impl.custom\n @impl.reason(\"Non-Carbon seam: the packed sets need the frame time for curve sampling and the manager is the one object every GetLights implementation already receives.\")\n GetAnimationTime()\n {\n return this.#animationTime;\n }\n\n /** Sets the frame clock GetAnimationTime reports. */\n @impl.custom\n @impl.reason(\"Setter half of the non-Carbon frame-clock seam.\")\n SetAnimationTime(seconds)\n {\n this.#animationTime = Number(seconds) || 0;\n }\n\n /** The packed PerLightData bytes for the AL to upload, borrowed (contract layout, 3 RGBA32 texels per light). */\n @impl.custom\n @impl.reason(\"AL seam: Trinity owns the packed description bytes; the AL realizes LightBuffer from this view (precedent: Tr2DataTextureManager.GetPackedBlocks).\")\n GetLightBufferData()\n {\n return this.#packed.subarray(0, this.#packedCount * FLOATS_PER_LIGHT);\n }\n\n /** The number of packed lights in GetLightBufferData. */\n @impl.custom\n @impl.reason(\"AL seam companion to GetLightBufferData.\")\n GetLightCount()\n {\n return this.#packedCount;\n }\n\n /** Monotonic revision of the packed data, bumped by ResolveLightData, so the AL can skip unchanged re-uploads. */\n @impl.custom\n @impl.reason(\"Non-Carbon extension: cheaper than the AL diffing a typed array; Carbon re-uploads unconditionally.\")\n GetDataRevision()\n {\n return this.#revision;\n }\n\n /** Frustum cull + pixel-size cutoff, returning the fade-band dimming factor (0 = rejected). Cull applies only when a frustum was set. */\n #CullAndDim(position, radius)\n {\n if (!this.#frustum) return 1;\n if (!this.#frustum.IsSphereVisible(position, radius)) return 0;\n const size = this.#frustum.GetPixelSizeAccross(position, radius);\n if (!(size > this.#adjustedCutoff)) return 0;\n // Contract §\"Colour carries the radius\": the fade band sits ABOVE the\n // cutoff - absent at the cutoff, full brightness FADE_SIZE above it.\n return Math.min((size - this.#adjustedCutoff) / FADE_SIZE, 1);\n }\n\n /**\n * Returns the light's projected pixel size, or its radius when no frustum is\n * set.\n */\n #ScreenSize(record)\n {\n if (!this.#frustum) return record.radius;\n return this.#frustum.GetPixelSizeAccross(record.position, record.radius);\n }\n\n /**\n * The slice a profile occupies, +1 biased so 0 means \"no profile\"\n * (Tr2Light.cpp:137: `m_lightProfile ? GetTextureIndex() + 1 : 0`).\n *\n * The index comes from the RESOURCE (`GetTextureIndex`, the texture-array\n * slice - stable, shared across managers, reused after release), never\n * from an invented per-manager counter: Carbon assigns slices through the\n * process-wide light profile array (cpp:682-686), and a manager-local\n * numbering diverges from what the shader samples the moment two managers\n * or a released slot exist. A profile carrying a baked payload but no\n * slice yet is registered here - Carbon does this in the resource's\n * DoPrepare (Tr2LightProfileRes.cpp:95-99), which the layering forbids\n * (resource cannot import trinity), so the manager performs it at the\n * first pack instead; same array, same first-fit slot, one seam later.\n * The first-sight map remains only for foreign profile objects that\n * expose no GetTextureIndex.\n */\n #ProfileSlot(profile)\n {\n if (!profile) return 0;\n if (typeof profile.GetTextureIndex === \"function\")\n {\n let index = profile.GetTextureIndex();\n if (index < 0 && typeof profile.RegisterProfileElement === \"function\")\n {\n const payload = typeof profile.GetPayload === \"function\" ? profile.GetPayload() : null;\n if (payload && payload.samples)\n {\n const element = Tr2LightManager.getLightProfileArray().AddElement(payload);\n if (element.IsValid())\n {\n profile.RegisterProfileElement(element);\n index = element.GetElementIndex();\n }\n }\n }\n return index >= 0 ? index + 1 : 0;\n }\n let slot = this.#profileSlots.get(profile);\n if (slot === undefined)\n {\n slot = this.#profileSlots.size;\n this.#profileSlots.set(profile, slot);\n }\n return slot + 1;\n }\n\n /**\n * The process-wide light profile array (Tr2LightManager.cpp:682-686).\n *\n * Carbon's is a function-local static that deliberately survives manager\n * destruction (ResetVariableStore re-registers the SAME live array,\n * cpp:186) - so under instance-per-scene managers this stays a class\n * static: two scenes share slices, and a profile's texture index means\n * the same thing everywhere. Realizing it as a GPU texture array is the\n * abstraction layer's job; consumers poll GetRevision or subscribe via\n * OnTextureChange.\n *\n * @returns {Tr2TextureArray} The shared profile array.\n */\n static getLightProfileArray()\n {\n if (!Tr2LightManager.#lightProfileArray)\n {\n Tr2LightManager.#lightProfileArray = new Tr2TextureArray();\n }\n return Tr2LightManager.#lightProfileArray;\n }\n\n static #lightProfileArray = null;\n\n /** Packs #records into the 48-byte-per-light buffer per the contract layout. */\n #Pack()\n {\n const count = Math.min(this.#records.length, LIGHT_BUFFER_SIZE);\n for (let i = 0; i < count; i++)\n {\n const record = this.#records[i];\n const f = i * FLOATS_PER_LIGHT;\n\n // Texel 0: position + radius, four f32.\n this.#packed[f] = record.position[0];\n this.#packed[f + 1] = record.position[1];\n this.#packed[f + 2] = record.position[2];\n this.#packed[f + 3] = record.radius;\n\n // Texel 1: colour (premultiplied at Add time) + the packed word -\n // innerRadius f16 low, flags u16 high with the biased profile slot in\n // bits 4-15 (contract §\"The packed flag word\").\n this.#packed[f + 4] = record.color[0];\n this.#packed[f + 5] = record.color[1];\n this.#packed[f + 6] = record.color[2];\n const flagsWord = (record.flags & 0xF) | (this.#ProfileSlot(record.lightProfile) << 4);\n this.#packedBits[f + 7] = toHalf(record.innerRadius) | ((flagsWord & 0xFFFF) << 16);\n\n // Texel 2: direction as three f16, projectionPlaneDistance, the two\n // angles, then the shadow union (h:70-84, MSVC low-bit-first layout:\n // bits 0-1 padding, 2-11 scale, 12-21 offsetX, 22-31 offsetY; the\n // raytraced mask shares the word - the paths are exclusive by\n // quality). All zeros under the shipping pin, exactly as before.\n this.#packedBits[f + 8] = toHalf(record.direction[0]) | (toHalf(record.direction[1]) << 16);\n this.#packedBits[f + 9] = toHalf(record.direction[2]) | (toHalf(record.projectionPlaneDistance) << 16);\n this.#packedBits[f + 10] = toHalf(record.outerAngle) | (toHalf(record.innerAngle) << 16);\n this.#packedBits[f + 11] = this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_RAYTRACED\n ? (record.raytracingShadowMask ?? 0) & 0xFFFF\n : (((record.shadowMapScale ?? 0) & 0x3FF) << 2)\n | (((record.shadowMapOffsetX ?? 0) & 0x3FF) << 12)\n | (((record.shadowMapOffsetY ?? 0) & 0x3FF) << 22);\n }\n this.#packedCount = count;\n }\n}\n"],"names":["LIGHT_BUFFER_SIZE","CUTOFF_PIXEL_SIZE","FADE_SIZE","MAX_NUM_VOLUMETRIC_LIGHTS","MAX_NUM_SHADOWCASTING_LIGHTS","HIGH_QUALITY_ATLAS_SIZE_LOG2","HIGH_QUALITY_ATLAS_ENTRY_MAX_SIZE","INFINITE_SIZE_CLAMP","FLOATS_PER_LIGHT","align","value","alignment","calculateShadowMapAtlasSettings","shadowQuality","settings","actualTextureSize","sizeLog2","size","entryMinSizeLog2","entryMinSize","entryInverseScaleFactorLog2","entryMaxSize","ShadowQuality","SHADOW_DISABLED","SHADOW_RAYTRACED","SHADOW_LOW","SHADOW_HIGH","toHalf","num","toHalfFloat","_Tr2LightManager","_identity","Tr2LightManager","CjsModel","e","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","carbon","method","impl","implemented","adapted","reason","custom","atlasSettings","atlasNodes","qualityUsedByAtlas","Map","Float32Array","Uint32Array","buffer","areLightFlagsValid","flags","Flags","AFFECTS_SURFACES","AFFECTS_PARTICLES","SetShadowQuality","quality","frameCounter","Number","useDynamicLightsShadows","clamped","Math","min","GetShadowMapAtlasSettings","GetUnpackedShadowMapData","record","out","shift","shadowMapScale","shadowMapOffsetX","shadowMapOffsetY","Clear","_renderContext","length","SetFrustum","frustum","AdjustLightCutoff","lodFactor","AddPointLight","position","radius","color","innerRadius","DEFAULT","brightness","max","dimming","scale","push","owner","lightData","lightProfile","lightType","vec3","fromValues","direction","outerAngle","innerAngle","projectionPlaneDistance","AddLight","usingShadowMap","CASTS_SHADOWS","ResolveLightData","volumetric","i","IS_VOLUMETRIC","sort","a","b","#ResolveShadowCasters","lightTuples","sizeAcross","GetPixelSizeAccrossEst","isFinite","lightIndex","raytraced","numShadowCastingLights","raytracingShadowMask","#CreateShadowMapAtlas","entry","x","y","everythingFit","j","children","width","height","#GetShadowMapAtlasEntry","nodeId","#InsertAtlasNode","node","newNode","child0","child1","deltaWidth","deltaHeight","GetCurrentSpaceSceneShadowQuality","GetLightData","GetVolumetricLights","GetShadowCastingLights","GetAnimationTime","SetAnimationTime","seconds","GetLightBufferData","subarray","GetLightCount","GetDataRevision","#CullAndDim","IsSphereVisible","GetPixelSizeAccross","#ScreenSize","#ProfileSlot","profile","GetTextureIndex","index","RegisterProfileElement","payload","GetPayload","samples","element","getLightProfileArray","AddElement","IsValid","GetElementIndex","slot","get","undefined","set","Tr2TextureArray","#Pack","count","f","flagsWord","Object","freeze","LIGHT_BUFFER_NAME","LIGHT_INDEX_BUFFER_NAME","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2LightManager.js","sources":["../../../../../src/trinity/core/lighting/Tr2LightManager.js"],"sourcesContent":["// Source: trinity/trinity/Tr2LightManager.h + Tr2LightManager.cpp\n//\n// The local-light manager: collects per-light records from every\n// ITr2LightOwner during the scene gather, culls and premultiplies them,\n// selects the volumetric set, and owns the PACKED light buffer bytes the\n// abstraction layer uploads. Description-building throughout - under the\n// engine-means-AL vocabulary (docs c5a4b66) everything here is Trinity's;\n// only realizing LightBuffer/LightIndexBuffer into device objects, the\n// tiling compute dispatch, the shadow atlas textures and the raytraced\n// path are the AL's, and all of those are deferred below.\n//\n// SHIPPING BEHAVIOUR PIN: Carbon ships with g_useDynamicLightsShadows =\n// false (cpp:21-22, a TRI_REGISTER_SETTING - runtime-mutable, hence the\n// static below rather than a constant). With it false, ResolveLightData\n// returns after the volumetric pass (cpp:568-571) and AddLight always\n// strips FLAG_CASTS_SHADOWS (cpp:359-365). The caster/atlas CPU half IS\n// ported (settings derivation, guillotine packer, five-pass fit, packed\n// 10-bit offsets) and sits behind the same setting; only its GPU\n// realization (the pooled D32 atlas texture, cpp:703-706) stays the\n// abstraction layer's.\n//\n// Carbon's thread-local gather vectors (safe under Tr2ParallelFor,\n// EveSpaceScene.cpp:1410) collapse to one array: the JS gather is\n// sequential. Carbon's file-static singleton (GetOrCreateInstance) is NOT\n// ported - the runtime injects a manager into GatherLights, which is the\n// shape every call site and test already has.\n//\n// docs/contracts/carbon-light-data.md owns the PerLightData layout, the\n// packed flag word, the premultiply and the fade band; the packing below\n// cites it rather than re-deriving it.\n\nimport { CjsModel } from \"#model\";\nimport { carbon, impl, type } from \"#schema\";\nimport { num } from \"#math/num\";\nimport { vec3 } from \"#math/vec3\";\nimport { ShadowQuality } from \"../../generated/trinityCore/enums.js\";\nimport { Tr2TextureArray } from \"../Tr2TextureArray/index.js\";\n\n// Tr2LightManager.cpp:30-48 - copied verbatim; the buffer sizes are the ABI\n// the AL uploads against.\nconst LIGHT_BUFFER_SIZE = 1024;\nconst CUTOFF_PIXEL_SIZE = 7;\nconst FADE_SIZE = 5;\nconst MAX_NUM_VOLUMETRIC_LIGHTS = 16;\nconst MAX_NUM_SHADOWCASTING_LIGHTS = 16;\nconst HIGH_QUALITY_ATLAS_SIZE_LOG2 = 14;\nconst HIGH_QUALITY_ATLAS_ENTRY_MAX_SIZE = 1 << 13;\nconst INFINITE_SIZE_CLAMP = 1 << 14; // 1 << HIGH_QUALITY_ATLAS_SIZE_LOG2\nconst FLOATS_PER_LIGHT = 12; // 48 bytes / 3 RGBA32 texels\n\n/** CCP_ALIGN: round up to a power-of-two alignment. */\nfunction align(value, alignment)\n{\n return (value + alignment - 1) & ~(alignment - 1);\n}\n\n/**\n * Carbon's anonymous-namespace CalculateShadowMapAtlasSettings (cpp:92-122).\n *\n * Ported branch for branch, including the SHADOW_RAYTRACED quirk: it zeroes\n * with SHADOW_DISABLED but then re-enters the != DISABLED block, so\n * `entryMinSizeLog2 = 0 - 10` wraps unsigned (4294967286) and\n * `1 << entryMinSizeLog2` shifts by that count. MSVC x86 masks the shift\n * count by 31 and SO DOES JavaScript's << - writing the arithmetic plainly\n * reproduces Carbon's shipping behaviour exactly (entryMinSize 1<<22,\n * entryMaxSize 8192 >> 14 = 0).\n *\n * @param {number} shadowQuality ShadowQuality ordinal.\n * @returns {object} ShadowMapAtlasSettings (actualTextureSize starts 0).\n */\nfunction calculateShadowMapAtlasSettings(shadowQuality)\n{\n const settings = {\n actualTextureSize: 0,\n sizeLog2: 0,\n size: 0,\n entryMinSizeLog2: 0,\n entryMinSize: 0,\n entryInverseScaleFactorLog2: 0,\n entryMaxSize: 0\n };\n switch (shadowQuality)\n {\n case ShadowQuality.SHADOW_DISABLED:\n case ShadowQuality.SHADOW_RAYTRACED:\n break;\n case ShadowQuality.SHADOW_LOW:\n settings.sizeLog2 = HIGH_QUALITY_ATLAS_SIZE_LOG2 - 2;\n break;\n case ShadowQuality.SHADOW_HIGH:\n settings.sizeLog2 = HIGH_QUALITY_ATLAS_SIZE_LOG2;\n break;\n }\n if (shadowQuality !== ShadowQuality.SHADOW_DISABLED)\n {\n settings.size = 1 << settings.sizeLog2;\n settings.entryMinSizeLog2 = (settings.sizeLog2 - 10) >>> 0;\n settings.entryMinSize = 1 << settings.entryMinSizeLog2;\n settings.entryInverseScaleFactorLog2 = HIGH_QUALITY_ATLAS_SIZE_LOG2 - settings.sizeLog2;\n settings.entryMaxSize = HIGH_QUALITY_ATLAS_ENTRY_MAX_SIZE >> settings.entryInverseScaleFactorLog2;\n }\n return settings;\n}\n\n// Carbon packs these halves through Float_16(...) (Tr2LightManager.cpp:297,\n// :328-329), which rounds to nearest. num.toHalfFloat is the runtime's one\n// half codec and rounds identically for every in-range value; an earlier\n// file-local encoder here TRUNCATED, a 1-ulp divergence from Carbon,\n// removed 2026-09-08.\nconst toHalf = num.toHalfFloat;\n\n/** Owns the frame's local-light records, their selection, and the packed light-buffer bytes the abstraction layer uploads. */\n@type.define({ className: \"Tr2LightManager\", family: \"trinityCore\" })\nexport class Tr2LightManager extends CjsModel\n{\n\n // Carbon m_lightData after the TLS flatten: the frame's accepted records,\n // plain-object copies (every producer reuses a static scratch record, so\n // AddLight copies by value exactly as std::vector::push_back does).\n #records = [];\n\n // Carbon m_volumetricLights / m_shadowCastingLights: indices into #records.\n #volumetricLights = [];\n\n #shadowCastingLights = [];\n\n // Carbon m_frustum, by reference (SetFrustum copies by value in C++; the\n // stamped frame frustum is not mutated during the gather, so a reference\n // carries the same guarantee here).\n #frustum = null;\n\n // Carbon m_adjustedCutoff (cpp:249-252).\n #adjustedCutoff = CUTOFF_PIXEL_SIZE;\n\n // Carbon m_currentSpaceSceneShadowQuality (h:197).\n #currentSpaceSceneShadowQuality = ShadowQuality.SHADOW_DISABLED;\n\n // Carbon nextFrameShadowQuality (h:196) - a bitmask collecting every\n // scene's requested quality during the current frame.\n #nextFrameShadowQuality = 0;\n\n // Carbon m_currentFrameCounter (h:198; ctor sets -1, cpp:164).\n #currentFrameCounter = -1;\n\n // Carbon's anonymous m_ShadowMap block (h:200-205): the atlas settings,\n // the guillotine node tree, and the quality the atlas was last sized for.\n #shadowMap = {\n atlasSettings: calculateShadowMapAtlasSettings(ShadowQuality.SHADOW_DISABLED),\n atlasNodes: [],\n qualityUsedByAtlas: ShadowQuality.SHADOW_DISABLED\n };\n\n // Non-Carbon: profile-object -> slice index, assigned on first sight. The\n // slot registry is description-side (Carbon assigns slices through the\n // manager-owned Tr2TextureArray, cpp:682-686, whose realization is AL).\n #profileSlots = new Map();\n\n // The packed PerLightData buffer (contract: 48 bytes / 3 RGBA32 texels per\n // light), built by ResolveLightData, uploaded by the AL.\n #packed = new Float32Array(LIGHT_BUFFER_SIZE * FLOATS_PER_LIGHT);\n\n #packedBits = new Uint32Array(this.#packed.buffer);\n\n #packedCount = 0;\n\n // Non-Carbon: bumped by ResolveLightData so the AL can skip re-uploads.\n #revision = 0;\n\n /** Tr2LightManager.h:100-105 - the light flag bits, Carbon's raw uint16 spelling. */\n static Flags = Object.freeze({\n AFFECTS_SURFACES: 1,\n AFFECTS_PARTICLES: 1 << 1,\n CASTS_SHADOWS: 1 << 2,\n IS_VOLUMETRIC: 1 << 3,\n DEFAULT: 1\n });\n\n /** The variable-store names the AL binds the packed buffers under\n * (Tr2LightManager.h:46-47; both isAutoregister). The NAMES are Trinity's\n * contract; the variables are the AL's to create. */\n static LIGHT_BUFFER_NAME = \"LightBuffer\";\n\n static LIGHT_INDEX_BUFFER_NAME = \"LightIndexBuffer\";\n\n /**\n * Carbon g_useDynamicLightsShadows (cpp:21-22) - a TRI_REGISTER_SETTING,\n * i.e. a runtime-mutable setting rather than a compile constant, shipped\n * FALSE. The whole shadow-caster/atlas half sits behind it; flipping it\n * exercises the ported path (the tests do), and shipping behaviour is\n * unchanged while it stays false.\n */\n static useDynamicLightsShadows = false;\n\n /** The atlas-settings derivation, exposed for tests (Carbon cpp:92-122). */\n static calculateShadowMapAtlasSettings = calculateShadowMapAtlasSettings;\n\n /**\n * Carbon Tr2LightManager::AreLightFlagsValid (cpp:677-680): a light must\n * affect surfaces or particles to exist at all.\n */\n @carbon.method\n @impl.implemented\n static areLightFlagsValid(flags)\n {\n return (flags & (Tr2LightManager.Flags.AFFECTS_SURFACES | Tr2LightManager.Flags.AFFECTS_PARTICLES)) !== 0;\n }\n\n /**\n * Carbon SetShadowQuality (cpp:262-295), the full body: record the\n * scene's quality, collapse the previous frame's quality bitmask into\n * qualityUsedByAtlas on a frame change (HIGH beats LOW beats DISABLED),\n * and recompute the atlas settings for min(requested, atlas quality)\n * with actualTextureSize taken from the atlas quality - multiple scenes\n * may request different qualities in one frame and the texture must fit\n * the largest.\n */\n @carbon.method\n @impl.implemented\n SetShadowQuality(quality, frameCounter = 0)\n {\n const shadowQuality = Number(quality) || 0;\n this.#currentSpaceSceneShadowQuality = shadowQuality;\n\n if (this.#currentFrameCounter !== frameCounter)\n {\n if (!Tr2LightManager.useDynamicLightsShadows)\n {\n this.#nextFrameShadowQuality = 0;\n }\n\n if (this.#nextFrameShadowQuality & (1 << ShadowQuality.SHADOW_HIGH))\n {\n this.#shadowMap.qualityUsedByAtlas = ShadowQuality.SHADOW_HIGH;\n }\n else if (this.#nextFrameShadowQuality & (1 << ShadowQuality.SHADOW_LOW))\n {\n this.#shadowMap.qualityUsedByAtlas = ShadowQuality.SHADOW_LOW;\n }\n else\n {\n this.#shadowMap.qualityUsedByAtlas = ShadowQuality.SHADOW_DISABLED;\n }\n this.#nextFrameShadowQuality = 1 << shadowQuality;\n this.#currentFrameCounter = frameCounter;\n }\n\n this.#nextFrameShadowQuality |= 1 << shadowQuality;\n\n const clamped = Math.min(shadowQuality, this.#shadowMap.qualityUsedByAtlas);\n this.#shadowMap.atlasSettings = calculateShadowMapAtlasSettings(clamped);\n this.#shadowMap.atlasSettings.actualTextureSize =\n calculateShadowMapAtlasSettings(this.#shadowMap.qualityUsedByAtlas).size;\n }\n\n /** Carbon GetShadowMapAtlasSettings (cpp:708-711). */\n @carbon.method\n @impl.implemented\n GetShadowMapAtlasSettings()\n {\n return this.#shadowMap.atlasSettings;\n }\n\n /**\n * Carbon GetUnpackedShadowMapData (cpp:810-815): the packed 10-bit\n * offsets/scale back into texels via the entry-min-size shift.\n *\n * @param {object} record A light record carrying the packed fields.\n * @param {object} [out] Receives scale/offsetX/offsetY.\n * @returns {object} out\n */\n @carbon.method\n @impl.implemented\n GetUnpackedShadowMapData(record, out = {})\n {\n const shift = this.#shadowMap.atlasSettings.entryMinSizeLog2;\n out.shadowMapScale = (record.shadowMapScale ?? 0) << shift;\n out.shadowMapOffsetX = (record.shadowMapOffsetX ?? 0) << shift;\n out.shadowMapOffsetY = (record.shadowMapOffsetY ?? 0) << shift;\n return out;\n }\n\n /**\n * Carbon Clear (cpp:220-242), the CPU half: drops the frame's records and\n * selections. The index-buffer UAV clear (cpp:224) is device work the AL\n * performs when it consumes the frame.\n */\n @carbon.method\n @impl.adapted\n @impl.reason(\"ClearLightIndices' UAV clear is AL realization; the vector clears are ported. The render-context parameter is accepted for signature parity and unused.\")\n Clear(_renderContext = null)\n {\n this.#records.length = 0;\n this.#volumetricLights.length = 0;\n this.#shadowCastingLights.length = 0;\n }\n\n /** Carbon SetFrustum (cpp:244-247). */\n @carbon.method\n @impl.implemented\n SetFrustum(frustum)\n {\n this.#frustum = frustum ?? null;\n }\n\n /** Carbon AdjustLightCutoff (cpp:249-252): the cull threshold is 7px * lodFactor. */\n @carbon.method\n @impl.implemented\n AdjustLightCutoff(lodFactor)\n {\n this.#adjustedCutoff = CUTOFF_PIXEL_SIZE * (Number(lodFactor) || 0);\n }\n\n /**\n * Carbon AddPointLight (cpp:297-332): authors a record from scratch, in\n * Carbon's exact order - flags gate, brightness gate, frustum cull, pixel\n * cutoff, premultiply+fade, defaults for everything a caller cannot\n * supply. The direction default is (1,0,0), never zero - a zero direction\n * is a legal bit pattern the shader normalises into NaN (contract §\"third\n * texel\").\n */\n @carbon.method\n @impl.implemented\n AddPointLight(position, radius, color, innerRadius = 0, flags = Tr2LightManager.Flags.DEFAULT)\n {\n if (!Tr2LightManager.areLightFlagsValid(flags)) return;\n\n const brightness = Math.max(color[0], color[1], color[2]);\n if (!(brightness > 0)) return;\n\n const dimming = this.#CullAndDim(position, radius);\n if (dimming <= 0) return;\n\n const scale = radius * dimming;\n this.#records.push({\n owner: null,\n lightData: null,\n lightProfile: null,\n lightType: 0,\n position: vec3.fromValues(position[0], position[1], position[2]),\n direction: vec3.fromValues(1, 0, 0),\n color: vec3.fromValues(color[0] * scale, color[1] * scale, color[2] * scale),\n radius,\n innerRadius,\n flags,\n outerAngle: 0,\n innerAngle: 0,\n projectionPlaneDistance: 0\n });\n }\n\n /**\n * Carbon AddLight (cpp:334-368): takes a caller-built record, applies the\n * same gates, premultiplies, and - faithfully - MUTATES the caller's\n * record in place where Carbon does (the shadow-flag strip on the non-const\n * reference, cpp:359-365; always taken under the shipping pin). The stored\n * record is a by-value copy: every producer reuses a static scratch record,\n * exactly as Carbon's std::vector push copies.\n */\n @carbon.method\n @impl.implemented\n AddLight(record)\n {\n if (!Tr2LightManager.areLightFlagsValid(record.flags)) return;\n\n const brightness = Math.max(record.color[0], record.color[1], record.color[2]);\n if (!(brightness > 0) || !(record.radius > 0)) return;\n\n const dimming = this.#CullAndDim(record.position, record.radius);\n if (dimming <= 0) return;\n\n // Carbon's conditional strip (cpp:359-365): shadows survive only when\n // the setting is on, the scene quality is not DISABLED, and a shadow-map\n // quality has an atlas actually sized for it (qualityUsedByAtlas lags a\n // frame behind). Always taken under the shipping default.\n const usingShadowMap = this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_LOW\n || this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_HIGH;\n if (this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_DISABLED\n || (usingShadowMap && this.#shadowMap.qualityUsedByAtlas === ShadowQuality.SHADOW_DISABLED)\n || !Tr2LightManager.useDynamicLightsShadows)\n {\n record.flags &= ~Tr2LightManager.Flags.CASTS_SHADOWS;\n }\n\n const scale = record.radius * dimming;\n this.#records.push({\n owner: record.owner ?? null,\n lightData: record.lightData ?? null,\n lightProfile: record.lightProfile ?? null,\n lightType: record.lightType ?? 0,\n position: vec3.fromValues(record.position[0], record.position[1], record.position[2]),\n direction: vec3.fromValues(record.direction[0], record.direction[1], record.direction[2]),\n color: vec3.fromValues(record.color[0] * scale, record.color[1] * scale, record.color[2] * scale),\n radius: record.radius,\n innerRadius: record.innerRadius ?? 0,\n flags: record.flags,\n outerAngle: record.outerAngle ?? 0,\n innerAngle: record.innerAngle ?? 0,\n projectionPlaneDistance: record.projectionPlaneDistance ?? 0\n });\n }\n\n /**\n * Carbon ResolveLightData (cpp:520-620): the TLS flatten is a no-op here\n * (one array), the volumetric top-16 selection runs exactly as Carbon's -\n * including clearing IS_VOLUMETRIC on the losers so shader and CPU agree -\n * then the shadow-caster half (ported in full, gated by the same\n * useDynamicLightsShadows setting Carbon ships false), then the packed\n * buffer: byte layout per the contract, profile slots biased by one into\n * flag bits 4-15, the shadow union in word 11.\n */\n @carbon.method\n @impl.implemented\n ResolveLightData()\n {\n const volumetric = [];\n for (let i = 0; i < this.#records.length; i++)\n {\n if (this.#records[i].flags & Tr2LightManager.Flags.IS_VOLUMETRIC)\n {\n const size = this.#ScreenSize(this.#records[i]);\n volumetric.push([ i, Math.min(size, INFINITE_SIZE_CLAMP) ]);\n }\n }\n volumetric.sort((a, b) => b[1] - a[1]);\n\n this.#volumetricLights.length = 0;\n for (let i = 0; i < volumetric.length; i++)\n {\n if (i < MAX_NUM_VOLUMETRIC_LIGHTS) this.#volumetricLights.push(volumetric[i][0]);\n else this.#records[volumetric[i][0]].flags &= ~Tr2LightManager.Flags.IS_VOLUMETRIC;\n }\n\n this.#ResolveShadowCasters();\n\n this.#Pack();\n this.#revision += 1;\n }\n\n /**\n * Carbon's shadow-caster half of ResolveLightData (cpp:568-620): the\n * useDynamicLightsShadows/DISABLED early-out (Carbon ships with the\n * setting FALSE - it is a TRI_REGISTER_SETTING, hence a mutable static\n * here rather than a constant), then filter casters by flag, estimate\n * screen size (Carbon's FLT_MAX inside-the-sphere sentinel clamps to the\n * high-quality atlas size), sort descending, keep the largest sixteen,\n * strip FLAG_CASTS_SHADOWS from the losers, assign raytracing masks by\n * rank under SHADOW_RAYTRACED, and pack the atlas for LOW/HIGH.\n */\n #ResolveShadowCasters()\n {\n this.#shadowCastingLights.length = 0;\n if (!Tr2LightManager.useDynamicLightsShadows\n || this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_DISABLED)\n {\n return;\n }\n\n const lightTuples = [];\n for (let i = 0; i < this.#records.length; i++)\n {\n if ((this.#records[i].flags & Tr2LightManager.Flags.CASTS_SHADOWS) !== 0)\n {\n let sizeAcross = this.#frustum\n ? this.#frustum.GetPixelSizeAccrossEst(this.#records[i].position, this.#records[i].radius)\n : 0;\n if (!Number.isFinite(sizeAcross)) sizeAcross = 1 << HIGH_QUALITY_ATLAS_SIZE_LOG2;\n lightTuples.push({ lightIndex: i, sizeAcross });\n }\n }\n\n lightTuples.sort((a, b) => b.sizeAcross - a.sizeAcross);\n\n const raytraced = this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_RAYTRACED;\n const numShadowCastingLights = Math.min(MAX_NUM_SHADOWCASTING_LIGHTS, lightTuples.length);\n let i = 0;\n for (; i < numShadowCastingLights; i++)\n {\n this.#shadowCastingLights.push(lightTuples[i].lightIndex);\n if (raytraced)\n {\n this.#records[lightTuples[i].lightIndex].raytracingShadowMask = 1 << i;\n }\n }\n for (; i < lightTuples.length; i++)\n {\n const record = this.#records[lightTuples[i].lightIndex];\n record.flags &= ~Tr2LightManager.Flags.CASTS_SHADOWS;\n if (raytraced)\n {\n record.raytracingShadowMask = 0;\n }\n }\n\n if (this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_LOW\n || this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_HIGH)\n {\n this.#CreateShadowMapAtlas(numShadowCastingLights, lightTuples);\n }\n }\n\n /**\n * Carbon CreateShadowMapAtlas (cpp:442-508): five fitting passes, each\n * halving entryMaxSize and incrementing the inverse-scale shift; entry\n * MIN size never scales. A failing pass still inserts every remaining\n * light before retrying. Point lights (innerAngle <= 0) take a 3x2\n * cube-cross, spots a square. Successful entries pack their offsets and\n * scale in entry-min-size units into the record's 10-bit fields; failures\n * zero them.\n */\n #CreateShadowMapAtlas(numShadowCastingLights, lightTuples)\n {\n const settings = this.#shadowMap.atlasSettings;\n const entry = { x: 0, y: 0 };\n let everythingFit = false;\n for (let j = 0; j < 5 && !everythingFit; j++)\n {\n everythingFit = true;\n const entryInverseScaleFactorLog2 = settings.entryInverseScaleFactorLog2 + j;\n const entryMaxSize = settings.entryMaxSize >> j;\n\n this.#shadowMap.atlasNodes.length = 0;\n this.#shadowMap.atlasNodes.push({\n children: [ -1, -1 ],\n lightIndex: -1,\n x: 0,\n y: 0,\n width: settings.size,\n height: settings.size\n });\n\n for (let i = 0; i < numShadowCastingLights; i++)\n {\n const lightIndex = lightTuples[i].lightIndex;\n const record = this.#records[lightIndex];\n\n let size = (lightTuples[i].sizeAcross >>> 0) >>> entryInverseScaleFactorLog2;\n size = Math.min(Math.max(size, settings.entryMinSize), entryMaxSize);\n size = align(size, settings.entryMinSize);\n\n let width, height;\n if (record.innerAngle <= 0)\n {\n // pointlight: a 3x2 cube-face cross\n width = 3 * size;\n height = 2 * size;\n }\n else\n {\n // spotlight\n width = size;\n height = size;\n }\n\n if (this.#GetShadowMapAtlasEntry(lightIndex, width, height, entry))\n {\n record.shadowMapOffsetX = entry.x >>> settings.entryMinSizeLog2;\n record.shadowMapOffsetY = entry.y >>> settings.entryMinSizeLog2;\n record.shadowMapScale = size >>> settings.entryMinSizeLog2;\n }\n else\n {\n record.shadowMapOffsetX = 0;\n record.shadowMapOffsetY = 0;\n record.shadowMapScale = 0;\n everythingFit = false;\n }\n }\n }\n }\n\n /**\n * Carbon GetShadowMapAtlasEntry (cpp:790-808): align the request to the\n * entry min size, insert from the root, and report position ONLY on\n * success - the out object is untouched on failure, exactly as Carbon\n * leaves its out-references.\n */\n #GetShadowMapAtlasEntry(lightIndex, width, height, out)\n {\n const settings = this.#shadowMap.atlasSettings;\n width = align(width, settings.entryMinSize);\n height = align(height, settings.entryMinSize);\n\n const nodeId = this.#InsertAtlasNode(this.#shadowMap.atlasNodes, 0, lightIndex, width, height);\n if (nodeId !== -1)\n {\n out.x = this.#shadowMap.atlasNodes[nodeId].x;\n out.y = this.#shadowMap.atlasNodes[nodeId].y;\n }\n return nodeId !== -1;\n }\n\n /**\n * Carbon InsertAtlasNode (cpp:718-788) - the blackpawn.com guillotine\n * packer, ported branch for branch: descend into split nodes (first\n * child, then second), reject occupied or too-small leaves, claim exact\n * fits, otherwise split along the larger remainder axis and recurse into\n * the first child.\n */\n #InsertAtlasNode(atlasNodes, nodeId, lightIndex, width, height)\n {\n const node = atlasNodes[nodeId];\n if (node.children[0] !== -1 || node.children[1] !== -1)\n {\n const newNode = this.#InsertAtlasNode(atlasNodes, node.children[0], lightIndex, width, height);\n if (newNode !== -1)\n {\n return newNode;\n }\n return this.#InsertAtlasNode(atlasNodes, node.children[1], lightIndex, width, height);\n }\n\n if (node.lightIndex !== -1)\n {\n return -1;\n }\n if (node.width < width || node.height < height)\n {\n return -1;\n }\n if (node.width === width && node.height === height)\n {\n node.lightIndex = lightIndex;\n return nodeId;\n }\n\n const child0 = { children: [ -1, -1 ], lightIndex: -1, x: 0, y: 0, width: 0, height: 0 };\n const child1 = { children: [ -1, -1 ], lightIndex: -1, x: 0, y: 0, width: 0, height: 0 };\n atlasNodes.push(child0, child1);\n node.children[0] = atlasNodes.length - 2;\n node.children[1] = atlasNodes.length - 1;\n\n const deltaWidth = node.width - width;\n const deltaHeight = node.height - height;\n\n if (deltaWidth > deltaHeight)\n {\n child0.x = node.x;\n child0.y = node.y;\n child0.width = width;\n child0.height = node.height;\n child1.x = node.x + width;\n child1.y = node.y;\n child1.width = node.width - width;\n child1.height = node.height;\n }\n else\n {\n child0.x = node.x;\n child0.y = node.y;\n child0.width = node.width;\n child0.height = height;\n child1.x = node.x;\n child1.y = node.y + height;\n child1.width = node.width;\n child1.height = node.height - height;\n }\n\n return this.#InsertAtlasNode(atlasNodes, node.children[0], lightIndex, width, height);\n }\n\n /** Carbon GetCurrentSpaceSceneShadowQuality (cpp:713-716): a bare field read; every record producer asks it before building. */\n @carbon.method\n @impl.implemented\n GetCurrentSpaceSceneShadowQuality()\n {\n return this.#currentSpaceSceneShadowQuality;\n }\n\n /** Carbon GetLightData (cpp:695-698): the frame's resolved records, borrowed. */\n @carbon.method\n @impl.implemented\n GetLightData()\n {\n return this.#records;\n }\n\n /** Carbon GetVolumetricLights (cpp:707-710): indices into GetLightData, borrowed. */\n @carbon.method\n @impl.implemented\n GetVolumetricLights()\n {\n return this.#volumetricLights;\n }\n\n /** Carbon GetShadowCastingLights (cpp:688-691): empty under the shipping pin, kept for signature parity. */\n @carbon.method\n @impl.implemented\n GetShadowCastingLights()\n {\n return this.#shadowCastingLights;\n }\n\n // The frame clock used to be threaded through here, as a non-Carbon seam:\n // the packed sets needed it for curve sampling and the manager was the one\n // object every GetLights implementation already received. Carbon's sets read\n // the renderer's clock, which is `gTriDev->GetAnimationTime()`, and they do\n // that here now. Nothing in src ever called the setter, so the five readers\n // had been sampling a constant zero.\n\n /** The packed PerLightData bytes for the AL to upload, borrowed (contract layout, 3 RGBA32 texels per light). */\n @impl.custom\n @impl.reason(\"AL seam: Trinity owns the packed description bytes; the AL realizes LightBuffer from this view (precedent: Tr2DataTextureManager.GetPackedBlocks).\")\n GetLightBufferData()\n {\n return this.#packed.subarray(0, this.#packedCount * FLOATS_PER_LIGHT);\n }\n\n /** The number of packed lights in GetLightBufferData. */\n @impl.custom\n @impl.reason(\"AL seam companion to GetLightBufferData.\")\n GetLightCount()\n {\n return this.#packedCount;\n }\n\n /** Monotonic revision of the packed data, bumped by ResolveLightData, so the AL can skip unchanged re-uploads. */\n @impl.custom\n @impl.reason(\"Non-Carbon extension: cheaper than the AL diffing a typed array; Carbon re-uploads unconditionally.\")\n GetDataRevision()\n {\n return this.#revision;\n }\n\n /** Frustum cull + pixel-size cutoff, returning the fade-band dimming factor (0 = rejected). Cull applies only when a frustum was set. */\n #CullAndDim(position, radius)\n {\n if (!this.#frustum) return 1;\n if (!this.#frustum.IsSphereVisible(position, radius)) return 0;\n const size = this.#frustum.GetPixelSizeAccross(position, radius);\n if (!(size > this.#adjustedCutoff)) return 0;\n // Contract §\"Colour carries the radius\": the fade band sits ABOVE the\n // cutoff - absent at the cutoff, full brightness FADE_SIZE above it.\n return Math.min((size - this.#adjustedCutoff) / FADE_SIZE, 1);\n }\n\n /**\n * Returns the light's projected pixel size, or its radius when no frustum is\n * set.\n */\n #ScreenSize(record)\n {\n if (!this.#frustum) return record.radius;\n return this.#frustum.GetPixelSizeAccross(record.position, record.radius);\n }\n\n /**\n * The slice a profile occupies, +1 biased so 0 means \"no profile\"\n * (Tr2Light.cpp:137: `m_lightProfile ? GetTextureIndex() + 1 : 0`).\n *\n * The index comes from the RESOURCE (`GetTextureIndex`, the texture-array\n * slice - stable, shared across managers, reused after release), never\n * from an invented per-manager counter: Carbon assigns slices through the\n * process-wide light profile array (cpp:682-686), and a manager-local\n * numbering diverges from what the shader samples the moment two managers\n * or a released slot exist. A profile carrying a baked payload but no\n * slice yet is registered here - Carbon does this in the resource's\n * DoPrepare (Tr2LightProfileRes.cpp:95-99), which the layering forbids\n * (resource cannot import trinity), so the manager performs it at the\n * first pack instead; same array, same first-fit slot, one seam later.\n * The first-sight map remains only for foreign profile objects that\n * expose no GetTextureIndex.\n */\n #ProfileSlot(profile)\n {\n if (!profile) return 0;\n if (typeof profile.GetTextureIndex === \"function\")\n {\n let index = profile.GetTextureIndex();\n if (index < 0 && typeof profile.RegisterProfileElement === \"function\")\n {\n const payload = typeof profile.GetPayload === \"function\" ? profile.GetPayload() : null;\n if (payload && payload.samples)\n {\n const element = Tr2LightManager.getLightProfileArray().AddElement(payload);\n if (element.IsValid())\n {\n profile.RegisterProfileElement(element);\n index = element.GetElementIndex();\n }\n }\n }\n return index >= 0 ? index + 1 : 0;\n }\n let slot = this.#profileSlots.get(profile);\n if (slot === undefined)\n {\n slot = this.#profileSlots.size;\n this.#profileSlots.set(profile, slot);\n }\n return slot + 1;\n }\n\n /**\n * The process-wide light profile array (Tr2LightManager.cpp:682-686).\n *\n * Carbon's is a function-local static that deliberately survives manager\n * destruction (ResetVariableStore re-registers the SAME live array,\n * cpp:186) - so under instance-per-scene managers this stays a class\n * static: two scenes share slices, and a profile's texture index means\n * the same thing everywhere. Realizing it as a GPU texture array is the\n * abstraction layer's job; consumers poll GetRevision or subscribe via\n * OnTextureChange.\n *\n * @returns {Tr2TextureArray} The shared profile array.\n */\n static getLightProfileArray()\n {\n if (!Tr2LightManager.#lightProfileArray)\n {\n Tr2LightManager.#lightProfileArray = new Tr2TextureArray();\n }\n return Tr2LightManager.#lightProfileArray;\n }\n\n static #lightProfileArray = null;\n\n /** Packs #records into the 48-byte-per-light buffer per the contract layout. */\n #Pack()\n {\n const count = Math.min(this.#records.length, LIGHT_BUFFER_SIZE);\n for (let i = 0; i < count; i++)\n {\n const record = this.#records[i];\n const f = i * FLOATS_PER_LIGHT;\n\n // Texel 0: position + radius, four f32.\n this.#packed[f] = record.position[0];\n this.#packed[f + 1] = record.position[1];\n this.#packed[f + 2] = record.position[2];\n this.#packed[f + 3] = record.radius;\n\n // Texel 1: colour (premultiplied at Add time) + the packed word -\n // innerRadius f16 low, flags u16 high with the biased profile slot in\n // bits 4-15 (contract §\"The packed flag word\").\n this.#packed[f + 4] = record.color[0];\n this.#packed[f + 5] = record.color[1];\n this.#packed[f + 6] = record.color[2];\n const flagsWord = (record.flags & 0xF) | (this.#ProfileSlot(record.lightProfile) << 4);\n this.#packedBits[f + 7] = toHalf(record.innerRadius) | ((flagsWord & 0xFFFF) << 16);\n\n // Texel 2: direction as three f16, projectionPlaneDistance, the two\n // angles, then the shadow union (h:70-84, MSVC low-bit-first layout:\n // bits 0-1 padding, 2-11 scale, 12-21 offsetX, 22-31 offsetY; the\n // raytraced mask shares the word - the paths are exclusive by\n // quality). All zeros under the shipping pin, exactly as before.\n this.#packedBits[f + 8] = toHalf(record.direction[0]) | (toHalf(record.direction[1]) << 16);\n this.#packedBits[f + 9] = toHalf(record.direction[2]) | (toHalf(record.projectionPlaneDistance) << 16);\n this.#packedBits[f + 10] = toHalf(record.outerAngle) | (toHalf(record.innerAngle) << 16);\n this.#packedBits[f + 11] = this.#currentSpaceSceneShadowQuality === ShadowQuality.SHADOW_RAYTRACED\n ? (record.raytracingShadowMask ?? 0) & 0xFFFF\n : (((record.shadowMapScale ?? 0) & 0x3FF) << 2)\n | (((record.shadowMapOffsetX ?? 0) & 0x3FF) << 12)\n | (((record.shadowMapOffsetY ?? 0) & 0x3FF) << 22);\n }\n this.#packedCount = count;\n }\n}\n"],"names":["LIGHT_BUFFER_SIZE","CUTOFF_PIXEL_SIZE","FADE_SIZE","MAX_NUM_VOLUMETRIC_LIGHTS","MAX_NUM_SHADOWCASTING_LIGHTS","HIGH_QUALITY_ATLAS_SIZE_LOG2","HIGH_QUALITY_ATLAS_ENTRY_MAX_SIZE","INFINITE_SIZE_CLAMP","FLOATS_PER_LIGHT","align","value","alignment","calculateShadowMapAtlasSettings","shadowQuality","settings","actualTextureSize","sizeLog2","size","entryMinSizeLog2","entryMinSize","entryInverseScaleFactorLog2","entryMaxSize","ShadowQuality","SHADOW_DISABLED","SHADOW_RAYTRACED","SHADOW_LOW","SHADOW_HIGH","toHalf","num","toHalfFloat","_Tr2LightManager","_identity","Tr2LightManager","CjsModel","e","_initProto","_initStatic","c","_initClass","_applyDecs","type","define","className","family","carbon","method","impl","implemented","adapted","reason","custom","atlasSettings","atlasNodes","qualityUsedByAtlas","Map","Float32Array","Uint32Array","buffer","areLightFlagsValid","flags","Flags","AFFECTS_SURFACES","AFFECTS_PARTICLES","SetShadowQuality","quality","frameCounter","Number","useDynamicLightsShadows","clamped","Math","min","GetShadowMapAtlasSettings","GetUnpackedShadowMapData","record","out","shift","shadowMapScale","shadowMapOffsetX","shadowMapOffsetY","Clear","_renderContext","length","SetFrustum","frustum","AdjustLightCutoff","lodFactor","AddPointLight","position","radius","color","innerRadius","DEFAULT","brightness","max","dimming","scale","push","owner","lightData","lightProfile","lightType","vec3","fromValues","direction","outerAngle","innerAngle","projectionPlaneDistance","AddLight","usingShadowMap","CASTS_SHADOWS","ResolveLightData","volumetric","i","IS_VOLUMETRIC","sort","a","b","#ResolveShadowCasters","lightTuples","sizeAcross","GetPixelSizeAccrossEst","isFinite","lightIndex","raytraced","numShadowCastingLights","raytracingShadowMask","#CreateShadowMapAtlas","entry","x","y","everythingFit","j","children","width","height","#GetShadowMapAtlasEntry","nodeId","#InsertAtlasNode","node","newNode","child0","child1","deltaWidth","deltaHeight","GetCurrentSpaceSceneShadowQuality","GetLightData","GetVolumetricLights","GetShadowCastingLights","GetLightBufferData","subarray","GetLightCount","GetDataRevision","#CullAndDim","IsSphereVisible","GetPixelSizeAccross","#ScreenSize","#ProfileSlot","profile","GetTextureIndex","index","RegisterProfileElement","payload","GetPayload","samples","element","getLightProfileArray","AddElement","IsValid","GetElementIndex","slot","get","undefined","set","Tr2TextureArray","#Pack","count","f","flagsWord","Object","freeze","LIGHT_BUFFER_NAME","LIGHT_INDEX_BUFFER_NAME","constructor"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { identity as _identity, applyDecs2311 as _applyDecs2311 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
-
import {
|
|
2
|
+
import { edit, type, carbon, impl } from '#schema';
|
|
3
3
|
import { CjsModel } from '#model';
|
|
4
4
|
import { vec3 } from '#math/vec3';
|
|
5
5
|
|
|
@@ -72,7 +72,7 @@ new class extends _identity {
|
|
|
72
72
|
} = _applyDecs2311(this, [type.define({
|
|
73
73
|
className: "Tr2ShLightingManager",
|
|
74
74
|
family: "trinityCore"
|
|
75
|
-
})], [[[
|
|
75
|
+
})], [[[edit, edit.persist, type, type.int32, void 0, type.enum("Quality")], 16, "quality"], [[edit, edit.persist, void 0, type.list("Tr2PointLight")], 16, "lights"], [[edit, edit.persist, type, type.float32], 16, "primaryIntensity"], [[edit, edit.persist, type, type.float32], 16, "secondaryIntensity"], [[carbon, carbon.method, impl, impl.implemented], 18, "RegisterSecondaryLightSource"], [[carbon, carbon.method, impl, impl.implemented], 18, "UnregisterSecondaryLightSource"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateWithDirectionalLight"], [[carbon, carbon.method, impl, impl.implemented], 18, "UpdateSourceData"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetLighting"]], 0, void 0, CjsModel));
|
|
76
76
|
}
|
|
77
77
|
/** m_quality (Quality - enum Quality) [READWRITE, PERSIST, ENUM] */
|
|
78
78
|
quality = (_initProto(this), _init_quality(this, 1));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2ShLightingManager.js","sources":["../../../../../src/trinity/core/lighting/Tr2ShLightingManager.js"],"sourcesContent":["// Source: trinity/trinity/Tr2ShLightingManager.h\r\n// Source: trinity/trinity/Tr2ShLightingManager.cpp\r\nimport { carbon, impl, io, type } from \"#schema\";\r\nimport { CjsModel } from \"#model\";\r\nimport { vec3 } from \"#math/vec3\";\r\n\r\n\r\n// Secondary lighting: light from one primary source reflected off \"secondary\r\n// light sources\" - spheres with an albedo colour and a radius, optionally\r\n// self-emissive. The result is a set of spherical-harmonic coefficients packed\r\n// the way the shader reads them.\r\n//\r\n// The whole computation is CPU math over CPU state, so it ports whole. Carbon's\r\n// DirectXMath estimate intrinsics (XMVector3LengthEst, XMVectorReciprocalEst)\r\n// become exact operations here; the difference is far below the precision the\r\n// packed coefficients carry.\r\n\r\nconst SQRT_PI = Math.sqrt(Math.PI);\r\n\r\n/** Carbon s_cutoffRadiusRatio (cpp:14). */\r\nconst CUTOFF_RADIUS_RATIO = 0.045 * 7;\r\n\r\n/** ShSolver<L1> pack coefficients. */\r\nconst L1_PACK_0 = 1 / (2 * SQRT_PI);\r\nconst L1_PACK_1 = Math.sqrt(3) / (3 * SQRT_PI);\r\n\r\n/**\r\n * ShSolver<L1>::s_normalizationCoefficients. Carbon writes these as unevaluated\r\n * products; they are reproduced in the same form so every factor stays checkable\r\n * against the source instead of collapsing into an opaque literal.\r\n */\r\nconst L1_NORMALIZATION = Object.freeze([\r\n 2 * SQRT_PI * 0.282094791773878140 * Math.sqrt(0.3141593e1),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * -0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * 0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * -0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2)\r\n]);\r\n\r\n/** ShSolver<L2> pack coefficients. */\r\nconst L2_PACK_0 = 1 / (2 * SQRT_PI);\r\nconst L2_PACK_1 = Math.sqrt(3) / (3 * SQRT_PI);\r\nconst L2_PACK_2 = Math.sqrt(15) / (8 * SQRT_PI);\r\nconst L2_PACK_3 = Math.sqrt(5) / (16 * SQRT_PI);\r\nconst L2_PACK_4 = 0.5 * L2_PACK_2;\r\n\r\n/** ShSolver<L2>::s_normalizationCoefficients. */\r\nconst L2_NORMALIZATION = Object.freeze([\r\n 2 * SQRT_PI * 0.282094791773878140 * Math.sqrt(0.3141593e1),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * -0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * 0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * -0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 5 * Math.sqrt(5 * Math.PI) * 0.546274215296039590 * (-Math.sqrt(5) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 5 * Math.sqrt(5 * Math.PI) * -1.092548430592079200 * (-Math.sqrt(5) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 5 * Math.sqrt(5 * Math.PI) * -0.315391565252520050 * (-Math.sqrt(5) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 5 * Math.sqrt(5 * Math.PI) * -1.092548430592079200 * (-Math.sqrt(5) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 5 * Math.sqrt(5 * Math.PI) * 0.546274215296039590 * (-Math.sqrt(5) * Math.sqrt(0.3141593e1) / 2)\r\n]);\r\n\r\n\r\n/**\r\n * Resolve a value Carbon holds by POINTER, so a source that changes after\r\n * registration is still read at its current value. A number is a snapshot; a\r\n * length-1 array is this repository's float-pointer convention; a function is\r\n * evaluated on every pass.\r\n */\r\nfunction readFloat(value)\r\n{\r\n if (typeof value === \"function\")\r\n {\r\n return Number(value()) || 0;\r\n }\r\n if (typeof value === \"number\")\r\n {\r\n return value;\r\n }\r\n\r\n return Number(value?.[0]) || 0;\r\n}\r\n\r\n\r\n/**\r\n * Computes the spherical-harmonic coefficients that approximate secondary\r\n * lighting - a primary light reflected off nearby spheres - for any receiver\r\n * position in the scene.\r\n */\r\n@type.define({ className: \"Tr2ShLightingManager\", family: \"trinityCore\" })\r\nexport class Tr2ShLightingManager extends CjsModel\r\n{\r\n\r\n /** m_quality (Quality - enum Quality) [READWRITE, PERSIST, ENUM] */\r\n @io.persist\r\n @type.int32\r\n @type.enum(\"Quality\")\r\n quality = 1;\r\n\r\n /** m_lights (PTr2PointLightVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"Tr2PointLight\")\r\n lights = [];\r\n\r\n /** m_primaryIntensity (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n primaryIntensity = 1;\r\n\r\n /** m_secondaryIntensity (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n secondaryIntensity = 1;\r\n\r\n /** m_sunDirection - normalized, set through UpdateWithDirectionalLight. */\r\n #sunDirection = vec3.fromValues(0, 1, 0);\r\n\r\n /** m_sunColor. */\r\n #sunColor = vec3.create();\r\n\r\n /** m_sources - the registered secondary light sources, read live. */\r\n #sources = [];\r\n\r\n /** m_sourceData - the processed run UpdateSourceData rebuilds. */\r\n #sourceData = [];\r\n\r\n /**\r\n * Carbon's SH order. The generated shell carried a four-member\r\n * LOW/MEDIUM/HIGH/COUNT enum that belongs to a different class of the same\r\n * enum name; Carbon declares exactly two orders here\r\n * (Tr2ShLightingManager.h:34-38) and constructs at L2.\r\n */\r\n static Quality = Object.freeze({\r\n L1: 0,\r\n L2: 1\r\n });\r\n\r\n /** PACKED_COEFFICIENT_COUNT (h:51) - packed vec4s per receiver. */\r\n static PACKED_COEFFICIENT_COUNT = 7;\r\n\r\n /**\r\n * Registers a sphere that reflects the primary light. Carbon stores POINTERS\r\n * and reads them on every pass, so the values must stay live here too: pass\r\n * the caller's own vectors rather than copies, and a length-1 array or a\r\n * getter for the radius.\r\n * @param {Float32Array} position - the sphere centre, read live\r\n * @param {Number|Array|Function} radius - the sphere radius, read live\r\n * @param {Float32Array} albedo - reflected colour\r\n * @param {Float32Array} emissive - self-emissive colour\r\n * @returns {Boolean} true once registered\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterSecondaryLightSource(position, radius, albedo, emissive)\r\n {\r\n this.#sources.push({ position, radius, albedo, emissive });\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Removes the source registered with this exact position vector; Carbon keys\r\n * the erase on the pointer, so identity is the match here too.\r\n * @param {Float32Array} position - the vector passed to the register call\r\n * @returns {Boolean} false when no source holds that vector\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UnregisterSecondaryLightSource(position)\r\n {\r\n const index = this.#sources.findIndex((source) => source.position === position);\r\n\r\n if (index === -1)\r\n {\r\n return false;\r\n }\r\n this.#sources.splice(index, 1);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Sets the primary light and rebuilds the processed source run (cpp:396-403).\r\n * @param {Float32Array} direction - primary light direction, normalized here\r\n * @param {Float32Array} color - primary light colour\r\n * @returns {Boolean} true\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateWithDirectionalLight(direction, color)\r\n {\r\n vec3.copy(this.#sunColor, color);\r\n vec3.normalize(this.#sunDirection, direction);\r\n this.UpdateSourceData();\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Rebuilds the processed source run from the registered spheres and point\r\n * lights (cpp:355-394). A sphere with a non-positive radius contributes\r\n * nothing and is skipped; a point light contributes emissive only, and is\r\n * never culled by the caller's cutoff radius.\r\n * @returns {Number} the processed source count\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateSourceData()\r\n {\r\n this.#sourceData.length = 0;\r\n\r\n const maxLight = vec3.maxComponent(this.#sunColor);\r\n\r\n for (const source of this.#sources)\r\n {\r\n const radius = readFloat(source.radius);\r\n\r\n if (radius <= 0)\r\n {\r\n continue;\r\n }\r\n\r\n const albedo = vec3.scale(vec3.create(), source.albedo, this.secondaryIntensity);\r\n const emissive = vec3.scale(vec3.create(), source.emissive, this.secondaryIntensity);\r\n\r\n this.#sourceData.push({\r\n position: source.position,\r\n radius,\r\n albedo,\r\n cutoffMultiplier: 1,\r\n emissive,\r\n maxColorComponent: Math.max(vec3.maxComponent(albedo) * maxLight, vec3.maxComponent(emissive))\r\n });\r\n }\r\n\r\n for (const light of this.lights)\r\n {\r\n if (typeof light?.GetLight !== \"function\")\r\n {\r\n continue;\r\n }\r\n\r\n const position = vec3.create();\r\n const radius = [ 0 ];\r\n const color = [ 0, 0, 0, 0 ];\r\n\r\n light.GetLight(position, radius, color);\r\n\r\n const emissive = vec3.scale(vec3.create(), color, this.primaryIntensity);\r\n\r\n this.#sourceData.push({\r\n position,\r\n radius: readFloat(radius),\r\n albedo: vec3.create(),\r\n cutoffMultiplier: 0,\r\n emissive,\r\n maxColorComponent: vec3.maxComponent(emissive)\r\n });\r\n }\r\n\r\n return this.#sourceData.length;\r\n }\r\n\r\n /**\r\n * Evaluates the packed coefficients for one receiver (cpp:405-419).\r\n * @param {Float32Array} position - receiver position\r\n * @param {Number} intensity - overall scale, usually a distance fade\r\n * @param {Number} cutoffRadius - spheres smaller than this are skipped\r\n * @param {Float32Array} out - seven packed vec4s, 28 floats\r\n * @returns {Float32Array} out\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLighting(position, intensity, cutoffRadius, out)\r\n {\r\n const order = this.quality === Tr2ShLightingManager.Quality.L2 ? 3 : 2;\r\n\r\n return this.#CalculateSecondaryLighting(position, intensity, cutoffRadius, out, order);\r\n }\r\n\r\n /**\r\n * Carbon CalculateSecondaryLighting<Order> (cpp:305-352): accumulates every\r\n * visible source's contribution into `order * order` RGB coefficients, then\r\n * normalizes and packs them.\r\n * @param {Float32Array} position - receiver position\r\n * @param {Number} intensity - overall scale\r\n * @param {Number} cutoffRadius - sphere cull radius\r\n * @param {Float32Array} out - 28 floats\r\n * @param {Number} order - 2 for L1, 3 for L2\r\n * @returns {Float32Array} out\r\n */\r\n #CalculateSecondaryLighting(position, intensity, cutoffRadius, out, order)\r\n {\r\n const count = order * order;\r\n const sh = new Float64Array(count * 3);\r\n const basis = new Float64Array(count);\r\n const direction = Tr2ShLightingManager.#directionScratch;\r\n\r\n for (const source of this.#sourceData)\r\n {\r\n if (source.radius < cutoffRadius * source.cutoffMultiplier)\r\n {\r\n continue;\r\n }\r\n\r\n vec3.subtract(direction, source.position, position);\r\n\r\n const distance = vec3.length(direction);\r\n const oneOverDistance = 1 / distance;\r\n\r\n vec3.scale(direction, direction, oneOverDistance);\r\n\r\n // Carbon's skip test reads the W LANE of vectors loaded as float4 from\r\n // packed struct members, so the values it actually compares are the\r\n // members that FOLLOW position and emissive in the struct: radius and\r\n // maxColorComponent (cpp:330-338). A source is skipped when its apparent\r\n // brightness falls below the cutoff ratio, when the receiver sits within\r\n // one unit of it, or when the distance is not finite.\r\n const apparentBrightness = source.radius * oneOverDistance * source.maxColorComponent;\r\n\r\n if (!Number.isFinite(distance) || apparentBrightness < CUTOFF_RADIUS_RATIO || distance < 1)\r\n {\r\n continue;\r\n }\r\n\r\n if (order === 3)\r\n {\r\n Tr2ShLightingManager.#EvalSphericalLightL2(direction, distance, source.radius, basis);\r\n }\r\n else\r\n {\r\n Tr2ShLightingManager.#EvalSphericalLightL1(direction, distance, source.radius, basis);\r\n }\r\n\r\n // The albedo term is lit by the primary light through a wrapped dot\r\n // product, so a sphere facing away still reflects a little; the emissive\r\n // term is added unlit.\r\n const dot = vec3.dot(this.#sunDirection, direction) * 0.5 + 0.5;\r\n\r\n for (let channel = 0; channel < 3; channel++)\r\n {\r\n const color = dot * source.albedo[channel] * this.#sunColor[channel] + source.emissive[channel];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n sh[index * 3 + channel] += basis[index] * color;\r\n }\r\n }\r\n }\r\n\r\n const normalization = order === 3 ? L2_NORMALIZATION : L1_NORMALIZATION;\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const scale = normalization[index] * intensity;\r\n\r\n sh[index * 3] *= scale;\r\n sh[index * 3 + 1] *= scale;\r\n sh[index * 3 + 2] *= scale;\r\n }\r\n\r\n return order === 3\r\n ? Tr2ShLightingManager.#PackL2(sh, out)\r\n : Tr2ShLightingManager.#PackL1(sh, out);\r\n }\r\n\r\n /**\r\n * ShSolver<L1>::SHEvalSphericalLight (cpp:29-53): the solid angle a sphere of\r\n * `radius` subtends at `distance`, projected onto the four L1 basis\r\n * functions. A receiver inside the sphere sees the whole hemisphere.\r\n * @param {Float32Array} direction - unit direction to the source\r\n * @param {Number} distance - distance to the source centre\r\n * @param {Number} radius - source radius\r\n * @param {Float64Array} out - four basis values\r\n */\r\n static #EvalSphericalLightL1(direction, distance, radius, out)\r\n {\r\n let o0 = 1;\r\n let o1 = 1;\r\n\r\n if (distance > radius)\r\n {\r\n o1 = (radius / distance) * (radius / distance);\r\n o0 = 1 - Math.sqrt(1 - o1);\r\n }\r\n\r\n out[0] = o0;\r\n out[1] = direction[1] * o1;\r\n out[2] = direction[2] * o1;\r\n out[3] = direction[0] * o1;\r\n }\r\n\r\n /**\r\n * ShSolver<L2>::SHEvalSphericalLight (cpp:100-140): the same solid angle\r\n * against the nine L2 basis functions, through Carbon's cap integral.\r\n * @param {Float32Array} direction - unit direction to the source\r\n * @param {Number} distance - distance to the source centre\r\n * @param {Number} radius - source radius\r\n * @param {Float64Array} out - nine basis values\r\n */\r\n static #EvalSphericalLightL2(direction, distance, radius, out)\r\n {\r\n let sinAngle = 1;\r\n let cosAngle = 0;\r\n\r\n if (distance > radius)\r\n {\r\n sinAngle = radius / distance;\r\n cosAngle = Math.sqrt(1 - sinAngle * sinAngle);\r\n }\r\n\r\n // ComputeCapInt (cpp:174-179).\r\n const cap0 = -cosAngle + 1;\r\n const cap1 = sinAngle * sinAngle;\r\n const cap2 = cosAngle * (cosAngle * cosAngle - 1);\r\n\r\n // EvalBasis (cpp:181-192).\r\n const x = direction[0];\r\n const y = direction[1];\r\n const z = direction[2];\r\n\r\n out[0] = 1 * cap0;\r\n out[1] = y * cap1;\r\n out[2] = z * cap1;\r\n out[3] = x * cap1;\r\n out[4] = (x * y + y * x) * cap2;\r\n out[5] = (z * y) * cap2;\r\n out[6] = (3 * (z * z) - 1) * cap2;\r\n out[7] = (z * x) * cap2;\r\n out[8] = (x * x - y * y) * cap2;\r\n }\r\n\r\n /**\r\n * ShSolver<L1>::PackCoefficients (cpp:62-72). L1 fills only the FIRST THREE\r\n * packed vec4s; Carbon leaves the remaining four untouched, so a caller that\r\n * wants them clear zeroes the destination first, as EveSpaceObject2 does.\r\n * @param {Float64Array} sh - normalized coefficients, RGB interleaved\r\n * @param {Float32Array} out - 28 floats\r\n * @returns {Float32Array} out\r\n */\r\n static #PackL1(sh, out)\r\n {\r\n for (let channel = 0; channel < 3; channel++)\r\n {\r\n out[channel * 4] = -L1_PACK_1 * sh[3 * 3 + channel];\r\n out[channel * 4 + 1] = -L1_PACK_1 * sh[1 * 3 + channel];\r\n out[channel * 4 + 2] = L1_PACK_1 * sh[2 * 3 + channel];\r\n out[channel * 4 + 3] = L1_PACK_0 * sh[0 * 3 + channel];\r\n }\r\n\r\n return out;\r\n }\r\n\r\n /**\r\n * ShSolver<L2>::PackCoefficients (cpp:148-169) - all seven vec4s, the last\r\n * carrying a constant 1 in its w lane.\r\n * @param {Float64Array} sh - normalized coefficients, RGB interleaved\r\n * @param {Float32Array} out - 28 floats\r\n * @returns {Float32Array} out\r\n */\r\n static #PackL2(sh, out)\r\n {\r\n for (let channel = 0; channel < 3; channel++)\r\n {\r\n out[channel * 4] = -L2_PACK_1 * sh[3 * 3 + channel];\r\n out[channel * 4 + 1] = -L2_PACK_1 * sh[1 * 3 + channel];\r\n out[channel * 4 + 2] = L2_PACK_1 * sh[2 * 3 + channel];\r\n out[channel * 4 + 3] = L2_PACK_0 * sh[0 * 3 + channel] - L2_PACK_3 * sh[6 * 3 + channel];\r\n }\r\n\r\n for (let channel = 0; channel < 3; channel++)\r\n {\r\n const base = (channel + 3) * 4;\r\n\r\n out[base] = L2_PACK_2 * sh[4 * 3 + channel];\r\n out[base + 1] = -L2_PACK_2 * sh[5 * 3 + channel];\r\n out[base + 2] = 3 * L2_PACK_3 * sh[6 * 3 + channel];\r\n out[base + 3] = -L2_PACK_2 * sh[7 * 3 + channel];\r\n }\r\n\r\n out[24] = L2_PACK_4 * sh[8 * 3];\r\n out[25] = L2_PACK_4 * sh[8 * 3 + 1];\r\n out[26] = L2_PACK_4 * sh[8 * 3 + 2];\r\n out[27] = 1;\r\n\r\n return out;\r\n }\r\n\r\n static #directionScratch = vec3.create();\r\n\r\n}\r\n"],"names":["SQRT_PI","Math","sqrt","PI","CUTOFF_RADIUS_RATIO","L1_PACK_0","L1_PACK_1","L1_NORMALIZATION","Object","freeze","L2_PACK_0","L2_PACK_1","L2_PACK_2","L2_PACK_3","L2_PACK_4","L2_NORMALIZATION","readFloat","value","Number","_Tr2ShLightingManager","_identity","Tr2ShLightingManager","CjsModel","e","_init_quality","_init_extra_quality","_init_lights","_init_extra_lights","_init_primaryIntensity","_init_extra_primaryIntensity","_init_secondaryIntensity","_init_extra_secondaryIntensity","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","int32","enum","list","float32","carbon","method","impl","implemented","quality","lights","primaryIntensity","secondaryIntensity","vec3","fromValues","create","RegisterSecondaryLightSource","position","radius","albedo","emissive","push","UnregisterSecondaryLightSource","index","findIndex","source","splice","UpdateWithDirectionalLight","direction","color","copy","normalize","UpdateSourceData","length","maxLight","maxComponent","scale","cutoffMultiplier","maxColorComponent","max","light","GetLight","GetLighting","intensity","cutoffRadius","out","order","Quality","L2","#CalculateSecondaryLighting","count","sh","Float64Array","basis","subtract","distance","oneOverDistance","apparentBrightness","isFinite","dot","channel","normalization","L1","PACKED_COEFFICIENT_COUNT","#EvalSphericalLightL1","o0","o1","#EvalSphericalLightL2","sinAngle","cosAngle","cap0","cap1","cap2","x","y","z","#PackL1","#PackL2","base","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tr2ShLightingManager.js","sources":["../../../../../src/trinity/core/lighting/Tr2ShLightingManager.js"],"sourcesContent":["// Source: trinity/trinity/Tr2ShLightingManager.h\r\n// Source: trinity/trinity/Tr2ShLightingManager.cpp\r\nimport { carbon, impl, edit, type } from \"#schema\";\r\nimport { CjsModel } from \"#model\";\r\nimport { vec3 } from \"#math/vec3\";\r\n\r\n\r\n// Secondary lighting: light from one primary source reflected off \"secondary\r\n// light sources\" - spheres with an albedo colour and a radius, optionally\r\n// self-emissive. The result is a set of spherical-harmonic coefficients packed\r\n// the way the shader reads them.\r\n//\r\n// The whole computation is CPU math over CPU state, so it ports whole. Carbon's\r\n// DirectXMath estimate intrinsics (XMVector3LengthEst, XMVectorReciprocalEst)\r\n// become exact operations here; the difference is far below the precision the\r\n// packed coefficients carry.\r\n\r\nconst SQRT_PI = Math.sqrt(Math.PI);\r\n\r\n/** Carbon s_cutoffRadiusRatio (cpp:14). */\r\nconst CUTOFF_RADIUS_RATIO = 0.045 * 7;\r\n\r\n/** ShSolver<L1> pack coefficients. */\r\nconst L1_PACK_0 = 1 / (2 * SQRT_PI);\r\nconst L1_PACK_1 = Math.sqrt(3) / (3 * SQRT_PI);\r\n\r\n/**\r\n * ShSolver<L1>::s_normalizationCoefficients. Carbon writes these as unevaluated\r\n * products; they are reproduced in the same form so every factor stays checkable\r\n * against the source instead of collapsing into an opaque literal.\r\n */\r\nconst L1_NORMALIZATION = Object.freeze([\r\n 2 * SQRT_PI * 0.282094791773878140 * Math.sqrt(0.3141593e1),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * -0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * 0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * -0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2)\r\n]);\r\n\r\n/** ShSolver<L2> pack coefficients. */\r\nconst L2_PACK_0 = 1 / (2 * SQRT_PI);\r\nconst L2_PACK_1 = Math.sqrt(3) / (3 * SQRT_PI);\r\nconst L2_PACK_2 = Math.sqrt(15) / (8 * SQRT_PI);\r\nconst L2_PACK_3 = Math.sqrt(5) / (16 * SQRT_PI);\r\nconst L2_PACK_4 = 0.5 * L2_PACK_2;\r\n\r\n/** ShSolver<L2>::s_normalizationCoefficients. */\r\nconst L2_NORMALIZATION = Object.freeze([\r\n 2 * SQRT_PI * 0.282094791773878140 * Math.sqrt(0.3141593e1),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * -0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * 0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 3 * Math.sqrt(3 * Math.PI) * -0.488602511902919920 * (Math.sqrt(3) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 5 * Math.sqrt(5 * Math.PI) * 0.546274215296039590 * (-Math.sqrt(5) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 5 * Math.sqrt(5 * Math.PI) * -1.092548430592079200 * (-Math.sqrt(5) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 5 * Math.sqrt(5 * Math.PI) * -0.315391565252520050 * (-Math.sqrt(5) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 5 * Math.sqrt(5 * Math.PI) * -1.092548430592079200 * (-Math.sqrt(5) * Math.sqrt(0.3141593e1) / 2),\r\n 2 / 5 * Math.sqrt(5 * Math.PI) * 0.546274215296039590 * (-Math.sqrt(5) * Math.sqrt(0.3141593e1) / 2)\r\n]);\r\n\r\n\r\n/**\r\n * Resolve a value Carbon holds by POINTER, so a source that changes after\r\n * registration is still read at its current value. A number is a snapshot; a\r\n * length-1 array is this repository's float-pointer convention; a function is\r\n * evaluated on every pass.\r\n */\r\nfunction readFloat(value)\r\n{\r\n if (typeof value === \"function\")\r\n {\r\n return Number(value()) || 0;\r\n }\r\n if (typeof value === \"number\")\r\n {\r\n return value;\r\n }\r\n\r\n return Number(value?.[0]) || 0;\r\n}\r\n\r\n\r\n/**\r\n * Computes the spherical-harmonic coefficients that approximate secondary\r\n * lighting - a primary light reflected off nearby spheres - for any receiver\r\n * position in the scene.\r\n */\r\n@type.define({ className: \"Tr2ShLightingManager\", family: \"trinityCore\" })\r\nexport class Tr2ShLightingManager extends CjsModel\r\n{\r\n\r\n /** m_quality (Quality - enum Quality) [READWRITE, PERSIST, ENUM] */\r\n @edit.persist\r\n @type.int32\r\n @type.enum(\"Quality\")\r\n quality = 1;\r\n\r\n /** m_lights (PTr2PointLightVector) [READ, PERSIST] */\r\n @edit.persist\r\n @type.list(\"Tr2PointLight\")\r\n lights = [];\r\n\r\n /** m_primaryIntensity (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n primaryIntensity = 1;\r\n\r\n /** m_secondaryIntensity (float) [READWRITE, PERSIST] */\r\n @edit.persist\r\n @type.float32\r\n secondaryIntensity = 1;\r\n\r\n /** m_sunDirection - normalized, set through UpdateWithDirectionalLight. */\r\n #sunDirection = vec3.fromValues(0, 1, 0);\r\n\r\n /** m_sunColor. */\r\n #sunColor = vec3.create();\r\n\r\n /** m_sources - the registered secondary light sources, read live. */\r\n #sources = [];\r\n\r\n /** m_sourceData - the processed run UpdateSourceData rebuilds. */\r\n #sourceData = [];\r\n\r\n /**\r\n * Carbon's SH order. The generated shell carried a four-member\r\n * LOW/MEDIUM/HIGH/COUNT enum that belongs to a different class of the same\r\n * enum name; Carbon declares exactly two orders here\r\n * (Tr2ShLightingManager.h:34-38) and constructs at L2.\r\n */\r\n static Quality = Object.freeze({\r\n L1: 0,\r\n L2: 1\r\n });\r\n\r\n /** PACKED_COEFFICIENT_COUNT (h:51) - packed vec4s per receiver. */\r\n static PACKED_COEFFICIENT_COUNT = 7;\r\n\r\n /**\r\n * Registers a sphere that reflects the primary light. Carbon stores POINTERS\r\n * and reads them on every pass, so the values must stay live here too: pass\r\n * the caller's own vectors rather than copies, and a length-1 array or a\r\n * getter for the radius.\r\n * @param {Float32Array} position - the sphere centre, read live\r\n * @param {Number|Array|Function} radius - the sphere radius, read live\r\n * @param {Float32Array} albedo - reflected colour\r\n * @param {Float32Array} emissive - self-emissive colour\r\n * @returns {Boolean} true once registered\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterSecondaryLightSource(position, radius, albedo, emissive)\r\n {\r\n this.#sources.push({ position, radius, albedo, emissive });\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Removes the source registered with this exact position vector; Carbon keys\r\n * the erase on the pointer, so identity is the match here too.\r\n * @param {Float32Array} position - the vector passed to the register call\r\n * @returns {Boolean} false when no source holds that vector\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UnregisterSecondaryLightSource(position)\r\n {\r\n const index = this.#sources.findIndex((source) => source.position === position);\r\n\r\n if (index === -1)\r\n {\r\n return false;\r\n }\r\n this.#sources.splice(index, 1);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Sets the primary light and rebuilds the processed source run (cpp:396-403).\r\n * @param {Float32Array} direction - primary light direction, normalized here\r\n * @param {Float32Array} color - primary light colour\r\n * @returns {Boolean} true\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateWithDirectionalLight(direction, color)\r\n {\r\n vec3.copy(this.#sunColor, color);\r\n vec3.normalize(this.#sunDirection, direction);\r\n this.UpdateSourceData();\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Rebuilds the processed source run from the registered spheres and point\r\n * lights (cpp:355-394). A sphere with a non-positive radius contributes\r\n * nothing and is skipped; a point light contributes emissive only, and is\r\n * never culled by the caller's cutoff radius.\r\n * @returns {Number} the processed source count\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateSourceData()\r\n {\r\n this.#sourceData.length = 0;\r\n\r\n const maxLight = vec3.maxComponent(this.#sunColor);\r\n\r\n for (const source of this.#sources)\r\n {\r\n const radius = readFloat(source.radius);\r\n\r\n if (radius <= 0)\r\n {\r\n continue;\r\n }\r\n\r\n const albedo = vec3.scale(vec3.create(), source.albedo, this.secondaryIntensity);\r\n const emissive = vec3.scale(vec3.create(), source.emissive, this.secondaryIntensity);\r\n\r\n this.#sourceData.push({\r\n position: source.position,\r\n radius,\r\n albedo,\r\n cutoffMultiplier: 1,\r\n emissive,\r\n maxColorComponent: Math.max(vec3.maxComponent(albedo) * maxLight, vec3.maxComponent(emissive))\r\n });\r\n }\r\n\r\n for (const light of this.lights)\r\n {\r\n if (typeof light?.GetLight !== \"function\")\r\n {\r\n continue;\r\n }\r\n\r\n const position = vec3.create();\r\n const radius = [ 0 ];\r\n const color = [ 0, 0, 0, 0 ];\r\n\r\n light.GetLight(position, radius, color);\r\n\r\n const emissive = vec3.scale(vec3.create(), color, this.primaryIntensity);\r\n\r\n this.#sourceData.push({\r\n position,\r\n radius: readFloat(radius),\r\n albedo: vec3.create(),\r\n cutoffMultiplier: 0,\r\n emissive,\r\n maxColorComponent: vec3.maxComponent(emissive)\r\n });\r\n }\r\n\r\n return this.#sourceData.length;\r\n }\r\n\r\n /**\r\n * Evaluates the packed coefficients for one receiver (cpp:405-419).\r\n * @param {Float32Array} position - receiver position\r\n * @param {Number} intensity - overall scale, usually a distance fade\r\n * @param {Number} cutoffRadius - spheres smaller than this are skipped\r\n * @param {Float32Array} out - seven packed vec4s, 28 floats\r\n * @returns {Float32Array} out\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLighting(position, intensity, cutoffRadius, out)\r\n {\r\n const order = this.quality === Tr2ShLightingManager.Quality.L2 ? 3 : 2;\r\n\r\n return this.#CalculateSecondaryLighting(position, intensity, cutoffRadius, out, order);\r\n }\r\n\r\n /**\r\n * Carbon CalculateSecondaryLighting<Order> (cpp:305-352): accumulates every\r\n * visible source's contribution into `order * order` RGB coefficients, then\r\n * normalizes and packs them.\r\n * @param {Float32Array} position - receiver position\r\n * @param {Number} intensity - overall scale\r\n * @param {Number} cutoffRadius - sphere cull radius\r\n * @param {Float32Array} out - 28 floats\r\n * @param {Number} order - 2 for L1, 3 for L2\r\n * @returns {Float32Array} out\r\n */\r\n #CalculateSecondaryLighting(position, intensity, cutoffRadius, out, order)\r\n {\r\n const count = order * order;\r\n const sh = new Float64Array(count * 3);\r\n const basis = new Float64Array(count);\r\n const direction = Tr2ShLightingManager.#directionScratch;\r\n\r\n for (const source of this.#sourceData)\r\n {\r\n if (source.radius < cutoffRadius * source.cutoffMultiplier)\r\n {\r\n continue;\r\n }\r\n\r\n vec3.subtract(direction, source.position, position);\r\n\r\n const distance = vec3.length(direction);\r\n const oneOverDistance = 1 / distance;\r\n\r\n vec3.scale(direction, direction, oneOverDistance);\r\n\r\n // Carbon's skip test reads the W LANE of vectors loaded as float4 from\r\n // packed struct members, so the values it actually compares are the\r\n // members that FOLLOW position and emissive in the struct: radius and\r\n // maxColorComponent (cpp:330-338). A source is skipped when its apparent\r\n // brightness falls below the cutoff ratio, when the receiver sits within\r\n // one unit of it, or when the distance is not finite.\r\n const apparentBrightness = source.radius * oneOverDistance * source.maxColorComponent;\r\n\r\n if (!Number.isFinite(distance) || apparentBrightness < CUTOFF_RADIUS_RATIO || distance < 1)\r\n {\r\n continue;\r\n }\r\n\r\n if (order === 3)\r\n {\r\n Tr2ShLightingManager.#EvalSphericalLightL2(direction, distance, source.radius, basis);\r\n }\r\n else\r\n {\r\n Tr2ShLightingManager.#EvalSphericalLightL1(direction, distance, source.radius, basis);\r\n }\r\n\r\n // The albedo term is lit by the primary light through a wrapped dot\r\n // product, so a sphere facing away still reflects a little; the emissive\r\n // term is added unlit.\r\n const dot = vec3.dot(this.#sunDirection, direction) * 0.5 + 0.5;\r\n\r\n for (let channel = 0; channel < 3; channel++)\r\n {\r\n const color = dot * source.albedo[channel] * this.#sunColor[channel] + source.emissive[channel];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n sh[index * 3 + channel] += basis[index] * color;\r\n }\r\n }\r\n }\r\n\r\n const normalization = order === 3 ? L2_NORMALIZATION : L1_NORMALIZATION;\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const scale = normalization[index] * intensity;\r\n\r\n sh[index * 3] *= scale;\r\n sh[index * 3 + 1] *= scale;\r\n sh[index * 3 + 2] *= scale;\r\n }\r\n\r\n return order === 3\r\n ? Tr2ShLightingManager.#PackL2(sh, out)\r\n : Tr2ShLightingManager.#PackL1(sh, out);\r\n }\r\n\r\n /**\r\n * ShSolver<L1>::SHEvalSphericalLight (cpp:29-53): the solid angle a sphere of\r\n * `radius` subtends at `distance`, projected onto the four L1 basis\r\n * functions. A receiver inside the sphere sees the whole hemisphere.\r\n * @param {Float32Array} direction - unit direction to the source\r\n * @param {Number} distance - distance to the source centre\r\n * @param {Number} radius - source radius\r\n * @param {Float64Array} out - four basis values\r\n */\r\n static #EvalSphericalLightL1(direction, distance, radius, out)\r\n {\r\n let o0 = 1;\r\n let o1 = 1;\r\n\r\n if (distance > radius)\r\n {\r\n o1 = (radius / distance) * (radius / distance);\r\n o0 = 1 - Math.sqrt(1 - o1);\r\n }\r\n\r\n out[0] = o0;\r\n out[1] = direction[1] * o1;\r\n out[2] = direction[2] * o1;\r\n out[3] = direction[0] * o1;\r\n }\r\n\r\n /**\r\n * ShSolver<L2>::SHEvalSphericalLight (cpp:100-140): the same solid angle\r\n * against the nine L2 basis functions, through Carbon's cap integral.\r\n * @param {Float32Array} direction - unit direction to the source\r\n * @param {Number} distance - distance to the source centre\r\n * @param {Number} radius - source radius\r\n * @param {Float64Array} out - nine basis values\r\n */\r\n static #EvalSphericalLightL2(direction, distance, radius, out)\r\n {\r\n let sinAngle = 1;\r\n let cosAngle = 0;\r\n\r\n if (distance > radius)\r\n {\r\n sinAngle = radius / distance;\r\n cosAngle = Math.sqrt(1 - sinAngle * sinAngle);\r\n }\r\n\r\n // ComputeCapInt (cpp:174-179).\r\n const cap0 = -cosAngle + 1;\r\n const cap1 = sinAngle * sinAngle;\r\n const cap2 = cosAngle * (cosAngle * cosAngle - 1);\r\n\r\n // EvalBasis (cpp:181-192).\r\n const x = direction[0];\r\n const y = direction[1];\r\n const z = direction[2];\r\n\r\n out[0] = 1 * cap0;\r\n out[1] = y * cap1;\r\n out[2] = z * cap1;\r\n out[3] = x * cap1;\r\n out[4] = (x * y + y * x) * cap2;\r\n out[5] = (z * y) * cap2;\r\n out[6] = (3 * (z * z) - 1) * cap2;\r\n out[7] = (z * x) * cap2;\r\n out[8] = (x * x - y * y) * cap2;\r\n }\r\n\r\n /**\r\n * ShSolver<L1>::PackCoefficients (cpp:62-72). L1 fills only the FIRST THREE\r\n * packed vec4s; Carbon leaves the remaining four untouched, so a caller that\r\n * wants them clear zeroes the destination first, as EveSpaceObject2 does.\r\n * @param {Float64Array} sh - normalized coefficients, RGB interleaved\r\n * @param {Float32Array} out - 28 floats\r\n * @returns {Float32Array} out\r\n */\r\n static #PackL1(sh, out)\r\n {\r\n for (let channel = 0; channel < 3; channel++)\r\n {\r\n out[channel * 4] = -L1_PACK_1 * sh[3 * 3 + channel];\r\n out[channel * 4 + 1] = -L1_PACK_1 * sh[1 * 3 + channel];\r\n out[channel * 4 + 2] = L1_PACK_1 * sh[2 * 3 + channel];\r\n out[channel * 4 + 3] = L1_PACK_0 * sh[0 * 3 + channel];\r\n }\r\n\r\n return out;\r\n }\r\n\r\n /**\r\n * ShSolver<L2>::PackCoefficients (cpp:148-169) - all seven vec4s, the last\r\n * carrying a constant 1 in its w lane.\r\n * @param {Float64Array} sh - normalized coefficients, RGB interleaved\r\n * @param {Float32Array} out - 28 floats\r\n * @returns {Float32Array} out\r\n */\r\n static #PackL2(sh, out)\r\n {\r\n for (let channel = 0; channel < 3; channel++)\r\n {\r\n out[channel * 4] = -L2_PACK_1 * sh[3 * 3 + channel];\r\n out[channel * 4 + 1] = -L2_PACK_1 * sh[1 * 3 + channel];\r\n out[channel * 4 + 2] = L2_PACK_1 * sh[2 * 3 + channel];\r\n out[channel * 4 + 3] = L2_PACK_0 * sh[0 * 3 + channel] - L2_PACK_3 * sh[6 * 3 + channel];\r\n }\r\n\r\n for (let channel = 0; channel < 3; channel++)\r\n {\r\n const base = (channel + 3) * 4;\r\n\r\n out[base] = L2_PACK_2 * sh[4 * 3 + channel];\r\n out[base + 1] = -L2_PACK_2 * sh[5 * 3 + channel];\r\n out[base + 2] = 3 * L2_PACK_3 * sh[6 * 3 + channel];\r\n out[base + 3] = -L2_PACK_2 * sh[7 * 3 + channel];\r\n }\r\n\r\n out[24] = L2_PACK_4 * sh[8 * 3];\r\n out[25] = L2_PACK_4 * sh[8 * 3 + 1];\r\n out[26] = L2_PACK_4 * sh[8 * 3 + 2];\r\n out[27] = 1;\r\n\r\n return out;\r\n }\r\n\r\n static #directionScratch = vec3.create();\r\n\r\n}\r\n"],"names":["SQRT_PI","Math","sqrt","PI","CUTOFF_RADIUS_RATIO","L1_PACK_0","L1_PACK_1","L1_NORMALIZATION","Object","freeze","L2_PACK_0","L2_PACK_1","L2_PACK_2","L2_PACK_3","L2_PACK_4","L2_NORMALIZATION","readFloat","value","Number","_Tr2ShLightingManager","_identity","Tr2ShLightingManager","CjsModel","e","_init_quality","_init_extra_quality","_init_lights","_init_extra_lights","_init_primaryIntensity","_init_extra_primaryIntensity","_init_secondaryIntensity","_init_extra_secondaryIntensity","_initProto","c","_initClass","_applyDecs","type","define","className","family","edit","persist","int32","enum","list","float32","carbon","method","impl","implemented","quality","lights","primaryIntensity","secondaryIntensity","vec3","fromValues","create","RegisterSecondaryLightSource","position","radius","albedo","emissive","push","UnregisterSecondaryLightSource","index","findIndex","source","splice","UpdateWithDirectionalLight","direction","color","copy","normalize","UpdateSourceData","length","maxLight","maxComponent","scale","cutoffMultiplier","maxColorComponent","max","light","GetLight","GetLighting","intensity","cutoffRadius","out","order","Quality","L2","#CalculateSecondaryLighting","count","sh","Float64Array","basis","subtract","distance","oneOverDistance","apparentBrightness","isFinite","dot","channel","normalization","L1","PACKED_COEFFICIENT_COUNT","#EvalSphericalLightL1","o0","o1","#EvalSphericalLightL2","sinAngle","cosAngle","cap0","cap1","cap2","x","y","z","#PackL1","#PackL2","base","constructor"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { applyDecs2311 as _applyDecs2311 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
-
import {
|
|
2
|
+
import { edit, type, carbon, impl } from '#schema';
|
|
3
3
|
import { Tr2LineSet as _Tr2LineSet } from './Tr2LineSet.js';
|
|
4
4
|
import { vec3 } from '#math/vec3';
|
|
5
5
|
|
|
@@ -15,7 +15,7 @@ class Tr2BoundingLineSet extends _Tr2LineSet {
|
|
|
15
15
|
} = _applyDecs2311(this, [type.define({
|
|
16
16
|
className: "Tr2BoundingLineSet",
|
|
17
17
|
family: "trinityCore"
|
|
18
|
-
})], [[[
|
|
18
|
+
})], [[[edit, edit.notify, edit, edit.persist, type, type.vec3], 16, "maxBounds"], [[edit, edit.notify, edit, edit.persist, type, type.vec3], 16, "minBounds"], [[carbon, carbon.method, impl, impl.adapted], 18, "UpdateBounds"]], 0, void 0, _Tr2LineSet));
|
|
19
19
|
}
|
|
20
20
|
constructor(...args) {
|
|
21
21
|
super(...args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2BoundingLineSet.js","sources":["../../../../../src/trinity/core/line/Tr2BoundingLineSet.js"],"sourcesContent":["// Source: trinity/trinity/Tr2BoundingLineSet.h\n// Hand-maintained from Carbon source, promoted out of generated intake.\r\nimport { carbon, impl,
|
|
1
|
+
{"version":3,"file":"Tr2BoundingLineSet.js","sources":["../../../../../src/trinity/core/line/Tr2BoundingLineSet.js"],"sourcesContent":["// Source: trinity/trinity/Tr2BoundingLineSet.h\n// Hand-maintained from Carbon source, promoted out of generated intake.\r\nimport { carbon, impl, edit, type } from \"#schema\";\r\nimport { Tr2LineSet } from \"./Tr2LineSet.js\";\r\nimport { vec3 } from \"#math/vec3\";\r\n\r\n/** A line set that draws an axis-aligned bounding box and its picking volume. */\r\n@type.define({ className: \"Tr2BoundingLineSet\", family: \"trinityCore\" })\r\nexport class Tr2BoundingLineSet extends Tr2LineSet\r\n{\r\n\r\n /** m_maxBounds (Vector3) [READWRITE, NOTIFY, PERSIST] */\r\n @edit.notify\r\n @edit.persist\r\n @type.vec3\r\n maxBounds = vec3.create();\r\n\r\n /** m_minBounds (Vector3) [READWRITE, NOTIFY, PERSIST] */\r\n @edit.notify\r\n @edit.persist\r\n @type.vec3\r\n minBounds = vec3.create();\r\n\r\n /** Carbon method UpdateBounds (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n UpdateBounds(min, max)\r\n {\r\n vec3.copy(this.minBounds, min);\r\n vec3.copy(this.maxBounds, max);\r\n this.ClearLines();\r\n this.ClearPickingTriangles();\r\n this.#AddBox(this.minBounds, this.maxBounds, this.color);\r\n this.#AddPickingBox(this.minBounds, this.maxBounds);\r\n return this.SubmitChanges();\r\n }\r\n\r\n /**\r\n * Appends the twelve edges of an axis-aligned box.\r\n */\r\n #AddBox(min, max, color)\r\n {\r\n const minA = vec3.fromValues(max[0], min[1], min[2]);\r\n const minB = vec3.fromValues(min[0], max[1], min[2]);\r\n const minC = vec3.fromValues(max[0], max[1], min[2]);\r\n const maxA = vec3.fromValues(max[0], min[1], max[2]);\r\n const maxB = vec3.fromValues(min[0], max[1], max[2]);\r\n const maxC = vec3.fromValues(min[0], min[1], max[2]);\r\n for (const [from, to] of [[min, minA], [min, minB], [minC, minB], [minA, minC], [max, maxA], [max, maxB], [maxC, maxB], [maxA, maxC], [min, maxC], [max, minC], [minB, maxB], [minA, maxA]])\r\n {\r\n this.AddLine(from, color, to, color);\r\n }\r\n }\r\n\r\n /**\r\n * Appends the box's triangles so it can be picked as a solid volume.\r\n */\r\n #AddPickingBox(min, max)\r\n {\r\n const minA = vec3.fromValues(max[0], min[1], min[2]);\r\n const minB = vec3.fromValues(min[0], max[1], min[2]);\r\n const minC = vec3.fromValues(max[0], max[1], min[2]);\r\n const maxA = vec3.fromValues(max[0], min[1], max[2]);\r\n const maxB = vec3.fromValues(min[0], max[1], max[2]);\r\n const maxC = vec3.fromValues(min[0], min[1], max[2]);\r\n for (const [a, b, c] of [[maxA, max, maxB], [maxA, maxB, maxC], [maxC, maxB, min], [min, maxB, minB], [min, minB, minA], [minA, minB, minC], [minA, minC, max], [minA, max, maxA], [maxA, min, minA], [maxA, maxC, min], [max, minC, minB], [max, minB, maxB]])\r\n {\r\n this.AddPickingTriangle(a, b, c);\r\n }\r\n }\r\n\r\n}\r\n"],"names":["_Tr2BoundingLineSet","Tr2BoundingLineSet","Tr2LineSet","e","_init_maxBounds","_init_extra_maxBounds","_init_minBounds","_init_extra_minBounds","_initProto","c","_initClass","_applyDecs","type","define","className","family","edit","notify","persist","vec3","carbon","method","impl","adapted","constructor","args","maxBounds","create","minBounds","UpdateBounds","min","max","copy","ClearLines","ClearPickingTriangles","color","SubmitChanges","#AddBox","minA","fromValues","minB","minC","maxA","maxB","maxC","from","to","AddLine","#AddPickingBox","a","b","AddPickingTriangle"],"mappings":"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"}
|