@carbonenginejs/runtime-trinity 0.4.3 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/curves/CjsGrannyCurves.js +12 -13
- package/dist/curves/CjsGrannyCurves.js.map +1 -1
- package/dist/eve/EveBannerSet.js +20 -1
- package/dist/eve/EveBannerSet.js.map +1 -1
- package/dist/eve/EveBoosterSet2.js +19 -1
- package/dist/eve/EveBoosterSet2.js.map +1 -1
- package/dist/eve/EveComponentTypes.js +116 -0
- package/dist/eve/EveComponentTypes.js.map +1 -0
- package/dist/eve/EveHazeSet.js +18 -1
- package/dist/eve/EveHazeSet.js.map +1 -1
- package/dist/eve/EvePlaneSet.js +19 -1
- package/dist/eve/EvePlaneSet.js.map +1 -1
- package/dist/eve/EveSpotlightSet.js +18 -1
- package/dist/eve/EveSpotlightSet.js.map +1 -1
- package/dist/eve/EveSpriteLineSet.js +18 -1
- package/dist/eve/EveSpriteLineSet.js.map +1 -1
- package/dist/eve/EveSpriteSet.js +18 -1
- package/dist/eve/EveSpriteSet.js.map +1 -1
- package/dist/eve/EveUpdateContext.js +195 -31
- package/dist/eve/EveUpdateContext.js.map +1 -1
- package/dist/eve/attachment/turrets/EveTurretFiringFX.js +23 -1
- package/dist/eve/attachment/turrets/EveTurretFiringFX.js.map +1 -1
- package/dist/eve/attachment/turrets/EveTurretSet.js +43 -1
- package/dist/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/eve/child/EveChildContainer.js +95 -60
- package/dist/eve/child/EveChildContainer.js.map +1 -1
- package/dist/eve/child/EveChildFogVolume.js +14 -1
- package/dist/eve/child/EveChildFogVolume.js.map +1 -1
- package/dist/eve/child/EveChildInstancedMeshes.js +43 -1
- package/dist/eve/child/EveChildInstancedMeshes.js.map +1 -1
- package/dist/eve/child/EveChildLightingOverride.js +14 -1
- package/dist/eve/child/EveChildLightingOverride.js.map +1 -1
- package/dist/eve/child/EveChildMesh.js +121 -80
- package/dist/eve/child/EveChildMesh.js.map +1 -1
- package/dist/eve/child/EveChildTransform.js +27 -17
- package/dist/eve/child/EveChildTransform.js.map +1 -1
- package/dist/eve/index.js +2 -0
- package/dist/eve/index.js.map +1 -1
- package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js +14 -1
- package/dist/eve/renderable/stretch/EveFiringEffectElementContainer.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch.js +11 -1
- package/dist/eve/renderable/stretch/EveStretch.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch2.js +14 -1
- package/dist/eve/renderable/stretch/EveStretch2.js.map +1 -1
- package/dist/eve/renderable/stretch/EveStretch3.js +24 -1
- package/dist/eve/renderable/stretch/EveStretch3.js.map +1 -1
- package/dist/eve/scene/EveSpaceScene.js +443 -16
- package/dist/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/eve/spaceObject/EveEffectRoot2.js +28 -1
- package/dist/eve/spaceObject/EveEffectRoot2.js.map +1 -1
- package/dist/eve/spaceObject/EveMobile.js +25 -1
- package/dist/eve/spaceObject/EveMobile.js.map +1 -1
- package/dist/eve/spaceObject/EveSpaceObject2.js +59 -1
- package/dist/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/generated/eve/child/EveChildCloud2.js +88 -5
- package/dist/generated/eve/child/EveChildCloud2.js.map +1 -1
- package/dist/generated/eve/child/EveChildExplosion.js +17 -1
- package/dist/generated/eve/child/EveChildExplosion.js.map +1 -1
- package/dist/generated/eve/child/EveChildInstanceContainer.js +29 -1
- package/dist/generated/eve/child/EveChildInstanceContainer.js.map +1 -1
- package/dist/generated/eve/child/EveChildParticleSystem.js +32 -24
- package/dist/generated/eve/child/EveChildParticleSystem.js.map +1 -1
- package/dist/generated/eve/child/EveChildPlug.js +23 -1
- package/dist/generated/eve/child/EveChildPlug.js.map +1 -1
- package/dist/generated/eve/child/EveChildPostProcessVolume.js +27 -14
- package/dist/generated/eve/child/EveChildPostProcessVolume.js.map +1 -1
- package/dist/generated/eve/child/EveChildRef.js +17 -1
- package/dist/generated/eve/child/EveChildRef.js.map +1 -1
- package/dist/generated/eve/child/EveChildSocket.js +17 -1
- package/dist/generated/eve/child/EveChildSocket.js.map +1 -1
- package/dist/generated/eve/child/behaviors/BehaviorGroup.js +43 -40
- package/dist/generated/eve/child/behaviors/BehaviorGroup.js.map +1 -1
- package/dist/generated/eve/child/procedural/EveChildProceduralContainer.js +53 -49
- package/dist/generated/eve/child/procedural/EveChildProceduralContainer.js.map +1 -1
- package/dist/generated/eve/scene/EveComponentRegistry.js +11 -0
- package/dist/generated/eve/scene/EveComponentRegistry.js.map +1 -1
- package/dist/generated/eve/scene/TriShadowFrustum.js +74 -22
- package/dist/generated/eve/scene/TriShadowFrustum.js.map +1 -1
- package/dist/generated/eve/scene/TriShadowOrthoFrustum.js +128 -26
- package/dist/generated/eve/scene/TriShadowOrthoFrustum.js.map +1 -1
- package/dist/generated/eve/smartLights/EveChildSmartLightSet.js +37 -24
- package/dist/generated/eve/smartLights/EveChildSmartLightSet.js.map +1 -1
- package/dist/generated/eve/smartLights/EveSmartLightPointLight.js +29 -28
- package/dist/generated/eve/smartLights/EveSmartLightPointLight.js.map +1 -1
- package/dist/generated/eve/spaceObject/EveShip2.js +39 -19
- package/dist/generated/eve/spaceObject/EveShip2.js.map +1 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarm.js +28 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarm.js.map +1 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarmRenderable.js +28 -1
- package/dist/generated/eve/spaceObject/swarm/EveSwarmRenderable.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/trinityCore/TriFrustum.js +374 -0
- package/dist/trinityCore/TriFrustum.js.map +1 -0
- package/dist/trinityCore/TriFrustumOrtho.js +158 -0
- package/dist/trinityCore/TriFrustumOrtho.js.map +1 -0
- package/dist/trinityCore/index.js +2 -0
- package/dist/trinityCore/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveChildProceduralContainer.js","sources":["../../../../../../src/generated/eve/child/procedural/EveChildProceduralContainer.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\n// trinity/trinity/Eve/SpaceObject/Children/ProceduralContainer/EveChildProceduralContainer.h\n// Generated by format-carbon carbon-class --emit. Verify against eve/child/procedural/EveChildProceduralContainer.json.\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\nimport { EveChildTransform, applyTransformModifiers } from \"../../../../eve/child/EveChildTransform.js\";\nimport { EveChildUpdateParams } from \"../../../../eve/EveChildUpdateParams.js\";\nimport { Tr2Lod } from \"../../../../eve/EveLODHelper.js\";\n\n/** EveChildProceduralContainer (eve/child/procedural) - generated from schema shapeHash 91d6cbc5.... */\n@type.define({ className: \"EveChildProceduralContainer\", family: \"eve/child/procedural\" })\nexport class EveChildProceduralContainer extends EveChildTransform\n{\n\n #proceduralContainerVariables = new Map();\n\n /** m_transformModifiers (PIEveChildTransformModifierVector) [READ, PERSIST] */\n @io.persist\n @type.list(\"IEveChildTransformModifier\")\n transformModifiers = [];\n\n /** m_selectedObject (IEveSpaceObjectChildPtr) [READ] */\n @io.read\n @type.objectRef(\"IEveSpaceObjectChild\")\n selectedObject = null;\n\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\n @io.persist\n @type.string\n name = \"\";\n\n /** m_display (bool) [READWRITE, PERSIST] */\n @io.persist\n @type.boolean\n display = true;\n\n /** m_selectionMethod (IEveProceduralSelectionMethodPtr) [READWRITE, PERSIST] */\n @io.persist\n @type.model(\"IEveProceduralSelectionMethod\")\n selectionMethod = null;\n\n /** Carbon EveChildProceduralContainer::Initialize (cpp:29-32). */\n @carbon.method\n @impl.implemented\n Initialize()\n {\n return true;\n }\n\n /** Carbon EveChildProceduralContainer::OnModified (cpp:313-320): a display\n * change re-registers with the scene component registry (engine-owned,\n * omitted). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"ReRegister on display changes is engine-owned (component registry unported); the notify contract is preserved.\")\n OnModified(_value = null)\n {\n return true;\n }\n\n /** Carbon EveChildProceduralContainer::OnListModified (cpp:34-36) is an\n * intentional no-op. */\n @carbon.method\n @impl.implemented\n OnListModified(_event = 0, _key = 0, _key2 = 0, _value = null, _list = null)\n {\n }\n\n /** Carbon method GetName (cpp:19-22). */\n @carbon.method\n @impl.implemented\n GetName()\n {\n return this.name;\n }\n\n /** Carbon method SetName (cpp:24-27). */\n @carbon.method\n @impl.implemented\n SetName(name)\n {\n this.name = String(name ?? \"\");\n }\n\n /** Carbon EveChildProceduralContainer::ConfigureSelectedObject\n * (cpp:136-156): pull the newly selected child from the selection method,\n * replay the stored procedural variables into it, then swap it in. Carbon\n * also re-registers the entity with the scene component registry\n * (engine-owned, omitted). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Entity Register/UnRegister against the component registry is engine-owned; the variable replay and swap are ported.\")\n ConfigureSelectedObject()\n {\n const child = this.selectionMethod?.GetSelectedChild?.() ?? null;\n if (child)\n {\n for (const [name, value] of this.#proceduralContainerVariables)\n {\n child.SetProceduralContainerVariable?.(name, value);\n }\n }\n this.selectedObject = child;\n }\n\n /** Carbon method GetMethodVariableName (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n GetMethodVariableName()\n {\n return this.selectionMethod?.GetProceduralMethodVariable?.() ?? \"methodUnassigned\";\n }\n\n /** Carbon method HandleControllerEvent (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n HandleControllerEvent(name)\n {\n this.selectedObject?.HandleControllerEvent?.(name);\n }\n\n /** Carbon method SetControllerVariable (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n SetControllerVariable(name, value)\n {\n this.selectedObject?.SetControllerVariable?.(name, value);\n }\n\n /** Carbon method SetProceduralContainerVariable (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n SetProceduralContainerVariable(name, value)\n {\n const key = String(name);\n const next = Number(value);\n this.#proceduralContainerVariables.set(key, next);\n this.selectionMethod?.SetProceduralMethodVariable?.(key, next);\n }\n\n /** Carbon method StartControllers (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.implemented\n StartControllers()\n {\n this.selectedObject?.StartControllers?.();\n }\n\n /**\n * Sync-side frame update (Carbon EveChildProceduralContainer::\n * UpdateSyncronous, cpp:91-107): rebase the params onto this container's\n * world transform, tick the selected child, then reconfigure when the\n * selection method reports a change.\n * @param {Object} updateContext - frame context (EveUpdateContext)\n * @param {EveChildUpdateParams} params\n */\n @carbon.method\n @impl.implemented\n UpdateSyncronous(updateContext, params)\n {\n const newParams = EveChildProceduralContainer.#DeriveChildParams(params);\n newParams.isVisible = (params?.isVisible !== false) && this.display;\n newParams.childParent = this;\n mat4.copy(newParams.localToWorldTransform, this.worldTransform);\n\n this.selectedObject?.UpdateSyncronous?.(updateContext, newParams);\n\n if (this.selectionMethod?.IsSelectedChildModified?.())\n {\n this.ConfigureSelectedObject();\n }\n }\n\n /**\n * Per-frame async update (Carbon EveChildProceduralContainer::\n * UpdateAsyncronous, cpp:109-134): rebuild the world transform from the\n * parent (the Carbon row-vector m_localTransform * parentTransform\n * composition lives in EveChildTransform.UpdateTransform as\n * mat4.multiply(world, parent, local)), fold the transform modifiers, then\n * fan out to the selected child and the selection method.\n * @param {Object} updateContext - frame context (EveUpdateContext), threaded to modifiers\n * @param {EveChildUpdateParams} params - localToWorldTransform + boneCount/bones\n * @returns {Float32Array} worldTransform\n */\n @carbon.method\n @carbon.contextual([\"camera\"])\n @impl.implemented\n UpdateAsyncronous(updateContext, params)\n {\n const parentTransform = params?.localToWorldTransform;\n\n if (parentTransform && parentTransform.length === 16)\n {\n this.UpdateTransform(parentTransform);\n }\n\n applyTransformModifiers(this, updateContext, params?.boneCount ?? 0, params?.bones ?? null);\n\n const newParams = EveChildProceduralContainer.#DeriveChildParams(params);\n newParams.isVisible = (params?.isVisible !== false) && this.display;\n newParams.childParent = this;\n mat4.copy(newParams.localToWorldTransform, this.worldTransform);\n\n this.selectedObject?.UpdateAsyncronous?.(updateContext, newParams);\n\n this.selectionMethod?.UpdateAsyncronous?.(updateContext, newParams);\n\n return this.worldTransform;\n }\n\n /** Carbon EveChildProceduralContainer::UpdateVisibility (cpp:38-49): gate on\n * display, then forward the unchanged parent transform/LOD to the selected\n * child. */\n @carbon.method\n @impl.implemented\n UpdateVisibility(updateContext, parentTransform = null, parentLod = Tr2Lod.TR2_LOD_HIGH)\n {\n if (!this.display)\n {\n return;\n }\n\n this.selectedObject?.UpdateVisibility?.(updateContext, parentTransform, parentLod);\n }\n\n /** Carbon EveChildProceduralContainer::GetRenderables (cpp:51-57). */\n @carbon.method\n @impl.implemented\n GetRenderables(out = [])\n {\n if (this.display && this.selectedObject)\n {\n this.selectedObject.GetRenderables?.(out);\n }\n return out;\n }\n\n /** Carbon EveChildProceduralContainer::GetBoundingSphere (cpp:59-69): the\n * selected child's sphere or nothing. The child sphere is a per-call local\n * rather than module scratch because procedural containers nest through\n * their selected children; this is a bounds query, not the per-frame hot\n * path. */\n @carbon.method\n @impl.implemented\n GetBoundingSphere(out = vec4.create(), _query = 0)\n {\n const childSphere = vec4.create();\n if (this.selectedObject?.GetBoundingSphere?.(childSphere))\n {\n vec4.copy(out, childSphere);\n return true;\n }\n return false;\n }\n\n /** Carbon EveChildProceduralContainer::GetLocalToWorldTransform\n * (cpp:181-184); the optional out follows the EveChildContainer copy-out\n * shape. */\n @carbon.method\n @impl.implemented\n GetLocalToWorldTransform(out = null)\n {\n if (out)\n {\n return mat4.copy(out, this.worldTransform);\n }\n return this.worldTransform;\n }\n\n /** Carbon EveChildProceduralContainer::ChangeLOD (cpp:186-192). */\n @carbon.method\n @impl.implemented\n ChangeLOD(lod)\n {\n this.selectedObject?.ChangeLOD?.(lod);\n }\n\n /** Carbon EveChildProceduralContainer::PlayCurveSet (cpp:194-200): the\n * ITr2CurveSetOwner dynamic_cast becomes a duck call on the selected\n * child. */\n @carbon.method\n @impl.implemented\n PlayCurveSet(name, rangeName = \"\")\n {\n this.selectedObject?.PlayCurveSet?.(name, rangeName);\n }\n\n /** Carbon EveChildProceduralContainer::StopCurveSet (cpp:218-224). */\n @carbon.method\n @impl.implemented\n StopCurveSet(name)\n {\n this.selectedObject?.StopCurveSet?.(name);\n }\n\n /** Carbon EveChildProceduralContainer::UpdateCurveSet (cpp:226-232). */\n @carbon.method\n @impl.implemented\n UpdateCurveSet(name, time)\n {\n this.selectedObject?.UpdateCurveSet?.(name, time);\n }\n\n /** Carbon EveChildProceduralContainer::GetCurveSetDuration (cpp:234-244). */\n @carbon.method\n @impl.implemented\n GetCurveSetDuration(name)\n {\n return Math.max(0, Number(this.selectedObject?.GetCurveSetDuration?.(name) ?? 0));\n }\n\n /** Carbon EveChildProceduralContainer::GetRangeDuration (cpp:246-256). */\n @carbon.method\n @impl.implemented\n GetRangeDuration(name, rangeName)\n {\n return Math.max(0, Number(this.selectedObject?.GetRangeDuration?.(name, rangeName) ?? 0));\n }\n\n /** Carbon EveChildProceduralContainer::PlayAllCurveSets (cpp:202-208). */\n @carbon.method\n @impl.implemented\n PlayAllCurveSets()\n {\n this.selectedObject?.PlayAllCurveSets?.();\n }\n\n /** Carbon EveChildProceduralContainer::StopAllCurveSets (cpp:210-216). */\n @carbon.method\n @impl.implemented\n StopAllCurveSets()\n {\n this.selectedObject?.StopAllCurveSets?.();\n }\n\n /** Carbon EveChildProceduralContainer::Setup (cpp:258-261). */\n @carbon.method\n @impl.implemented\n Setup(scale = null, rotation = null, translation = null, lowestLodVisible = null)\n {\n return super.Setup(scale, rotation, translation, lowestLodVisible);\n }\n\n /** Carbon EveChildProceduralContainer::FindSoundEmitter (cpp:287-298): the\n * ITr2SoundEmitterOwner dynamic_cast becomes a duck call on the selected\n * child. */\n @carbon.method\n @impl.implemented\n FindSoundEmitter(name)\n {\n return this.selectedObject?.FindSoundEmitter?.(name) ?? null;\n }\n\n /** Carbon EveChildProceduralContainer::AddTransformModifier\n * (cpp:300-303). */\n @carbon.method\n @impl.implemented\n AddTransformModifier(modifier)\n {\n this.transformModifiers.push(modifier);\n }\n\n /** Carbon EveChildProceduralContainer::SetShaderOption (cpp:305-311). */\n @carbon.method\n @impl.implemented\n SetShaderOption(name, value)\n {\n this.selectedObject?.SetShaderOption?.(name, value);\n }\n\n /** Carbon EveChildProceduralContainer::SetInheritProperties (cpp:346-356):\n * the IEveInheritPropertiesOwner BlueCast becomes a duck call. */\n @carbon.method\n @impl.implemented\n SetInheritProperties(colorSet)\n {\n this.selectedObject?.SetInheritProperties?.(colorSet);\n }\n\n /** Carbon EveChildProceduralContainer::RegisterComponents (cpp:322-333)\n * registers the selected entity with the scene component registry -\n * unported system. */\n @carbon.method\n @impl.notImplemented\n RegisterComponents(..._args)\n {\n throw new Error(\"EveChildProceduralContainer.RegisterComponents is not implemented in CarbonEngineJS (component registry unported).\");\n }\n\n /** Carbon EveChildProceduralContainer::UnRegisterComponents (cpp:334-344)\n * unregisters the selected entity from the scene component registry -\n * unported system. */\n @carbon.method\n @impl.notImplemented\n UnRegisterComponents(..._args)\n {\n throw new Error(\"EveChildProceduralContainer.UnRegisterComponents is not implemented in CarbonEngineJS (component registry unported).\");\n }\n\n // Copies the caller's params into a fresh child-facing record (Carbon copies\n // EveChildUpdateParams by value, cpp:93/120). Allocated per call like\n // EveChildContainer's fan-out - selected children can nest further\n // containers, making a module scratch record unsafe.\n static #DeriveChildParams(params)\n {\n const next = new EveChildUpdateParams();\n if (params)\n {\n next.spaceObjectParent = params.spaceObjectParent ?? null;\n next.childParent = params.childParent ?? null;\n next.boneCount = params.boneCount ?? 0;\n next.bones = params.bones ?? null;\n next.ownerMaxSpeed = Number(params.ownerMaxSpeed) || 0;\n next.activationStrength = Number(params.activationStrength ?? 1);\n next.controllerUpdateFrequency = Number(params.controllerUpdateFrequency ?? 0.5);\n next.isVisible = params.isVisible !== false;\n if (params.localToWorldTransform?.length === 16)\n {\n mat4.copy(next.localToWorldTransform, params.localToWorldTransform);\n }\n if (params.worldVelocity)\n {\n vec3.copy(next.worldVelocity, params.worldVelocity);\n }\n }\n return next;\n }\n\n}\n"],"names":["_EveChildProceduralCo","_identity","EveChildProceduralContainer","EveChildTransform","e","_init_transformModifiers","_init_extra_transformModifiers","_init_selectedObject","_init_extra_selectedObject","_init_name","_init_extra_name","_init_display","_init_extra_display","_init_selectionMethod","_init_extra_selectionMethod","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","list","read","objectRef","string","boolean","model","carbon","method","impl","implemented","adapted","reason","contextual","notImplemented","constructor","args","Map","transformModifiers","selectedObject","name","display","selectionMethod","Initialize","OnModified","_value","OnListModified","_event","_key","_key2","_list","GetName","SetName","String","ConfigureSelectedObject","child","GetSelectedChild","value","SetProceduralContainerVariable","GetMethodVariableName","GetProceduralMethodVariable","HandleControllerEvent","SetControllerVariable","key","next","Number","set","SetProceduralMethodVariable","StartControllers","UpdateSyncronous","updateContext","params","newParams","isVisible","childParent","mat4","copy","localToWorldTransform","worldTransform","IsSelectedChildModified","UpdateAsyncronous","parentTransform","length","UpdateTransform","applyTransformModifiers","boneCount","bones","UpdateVisibility","parentLod","Tr2Lod","TR2_LOD_HIGH","GetRenderables","out","GetBoundingSphere","vec4","create","_query","childSphere","GetLocalToWorldTransform","ChangeLOD","lod","PlayCurveSet","rangeName","StopCurveSet","UpdateCurveSet","time","GetCurveSetDuration","Math","max","GetRangeDuration","PlayAllCurveSets","StopAllCurveSets","Setup","scale","rotation","translation","lowestLodVisible","FindSoundEmitter","AddTransformModifier","modifier","push","SetShaderOption","SetInheritProperties","colorSet","RegisterComponents","_args","Error","UnRegisterComponents","#DeriveChildParams","EveChildUpdateParams","spaceObjectParent","ownerMaxSpeed","activationStrength","controllerUpdateFrequency","worldVelocity","vec3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveChildProceduralContainer.js","sources":["../../../../../../src/generated/eve/child/procedural/EveChildProceduralContainer.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/SpaceObject/Children/ProceduralContainer/EveChildProceduralContainer.h\r\n// Generated by format-carbon carbon-class --emit. Verify against eve/child/procedural/EveChildProceduralContainer.json.\r\nimport { carbon, impl, io, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\r\nimport { EveChildTransform, applyTransformModifiers } from \"../../../../eve/child/EveChildTransform.js\";\r\nimport { EveChildUpdateParams } from \"../../../../eve/EveChildUpdateParams.js\";\r\nimport { Tr2Lod } from \"../../../../eve/EveLODHelper.js\";\r\n\r\n/** EveChildProceduralContainer (eve/child/procedural) - generated from schema shapeHash 91d6cbc5.... */\r\n@type.define({ className: \"EveChildProceduralContainer\", family: \"eve/child/procedural\" })\r\nexport class EveChildProceduralContainer extends EveChildTransform\r\n{\r\n\r\n #proceduralContainerVariables = new Map();\r\n\r\n /** m_transformModifiers (PIEveChildTransformModifierVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveChildTransformModifier\")\r\n transformModifiers = [];\r\n\r\n /** m_selectedObject (IEveSpaceObjectChildPtr) [READ] */\r\n @io.read\r\n @type.objectRef(\"IEveSpaceObjectChild\")\r\n selectedObject = null;\r\n\r\n /** m_name (BlueSharedString) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_display (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n /** m_selectionMethod (IEveProceduralSelectionMethodPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.model(\"IEveProceduralSelectionMethod\")\r\n selectionMethod = null;\r\n\r\n /** Carbon EveChildProceduralContainer::Initialize (cpp:29-32). */\r\n @carbon.method\r\n @impl.implemented\r\n Initialize()\r\n {\r\n return true;\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::OnModified (cpp:313-320): a display\r\n * change re-registers with the scene component registry (engine-owned,\r\n * omitted). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"ReRegister on display changes is engine-owned (component registry unported); the notify contract is preserved.\")\r\n OnModified(_value = null)\r\n {\r\n return true;\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::OnListModified (cpp:34-36) is an\r\n * intentional no-op. */\r\n @carbon.method\r\n @impl.implemented\r\n OnListModified(_event = 0, _key = 0, _key2 = 0, _value = null, _list = null)\r\n {\r\n }\r\n\r\n /** Carbon method GetName (cpp:19-22). */\r\n @carbon.method\r\n @impl.implemented\r\n GetName()\r\n {\r\n return this.name;\r\n }\r\n\r\n /** Carbon method SetName (cpp:24-27). */\r\n @carbon.method\r\n @impl.implemented\r\n SetName(name)\r\n {\r\n this.name = String(name ?? \"\");\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::ConfigureSelectedObject\r\n * (cpp:136-156): pull the newly selected child from the selection method,\r\n * replay the stored procedural variables into it, then swap it in. Carbon\r\n * also re-registers the entity with the scene component registry\r\n * (engine-owned, omitted). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Entity Register/UnRegister against the component registry is engine-owned; the variable replay and swap are ported.\")\r\n ConfigureSelectedObject()\r\n {\r\n const child = this.selectionMethod?.GetSelectedChild?.() ?? null;\r\n if (child)\r\n {\r\n for (const [name, value] of this.#proceduralContainerVariables)\r\n {\r\n child.SetProceduralContainerVariable?.(name, value);\r\n }\r\n }\r\n this.selectedObject = child;\r\n }\r\n\r\n /** Carbon method GetMethodVariableName (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n GetMethodVariableName()\r\n {\r\n return this.selectionMethod?.GetProceduralMethodVariable?.() ?? \"methodUnassigned\";\r\n }\r\n\r\n /** Carbon method HandleControllerEvent (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n HandleControllerEvent(name)\r\n {\r\n this.selectedObject?.HandleControllerEvent?.(name);\r\n }\r\n\r\n /** Carbon method SetControllerVariable (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n SetControllerVariable(name, value)\r\n {\r\n this.selectedObject?.SetControllerVariable?.(name, value);\r\n }\r\n\r\n /** Carbon method SetProceduralContainerVariable (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n SetProceduralContainerVariable(name, value)\r\n {\r\n const key = String(name);\r\n const next = Number(value);\r\n this.#proceduralContainerVariables.set(key, next);\r\n this.selectionMethod?.SetProceduralMethodVariable?.(key, next);\r\n }\r\n\r\n /** Carbon method StartControllers (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.implemented\r\n StartControllers()\r\n {\r\n this.selectedObject?.StartControllers?.();\r\n }\r\n\r\n /**\r\n * Sync-side frame update (Carbon EveChildProceduralContainer::\r\n * UpdateSyncronous, cpp:91-107): rebase the params onto this container's\r\n * world transform, tick the selected child, then reconfigure when the\r\n * selection method reports a change.\r\n * @param {Object} updateContext - frame context (EveUpdateContext)\r\n * @param {EveChildUpdateParams} params\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateSyncronous(updateContext, params)\r\n {\r\n const newParams = EveChildProceduralContainer.#DeriveChildParams(params);\r\n newParams.isVisible = (params?.isVisible !== false) && this.display;\r\n newParams.childParent = this;\r\n mat4.copy(newParams.localToWorldTransform, this.worldTransform);\r\n\r\n this.selectedObject?.UpdateSyncronous?.(updateContext, newParams);\r\n\r\n if (this.selectionMethod?.IsSelectedChildModified?.())\r\n {\r\n this.ConfigureSelectedObject();\r\n }\r\n }\r\n\r\n /**\r\n * Per-frame async update (Carbon EveChildProceduralContainer::\r\n * UpdateAsyncronous, cpp:109-134): rebuild the world transform from the\r\n * parent (the Carbon row-vector m_localTransform * parentTransform\r\n * composition lives in EveChildTransform.UpdateTransform as\r\n * mat4.multiply(world, parent, local)), fold the transform modifiers, then\r\n * fan out to the selected child and the selection method.\r\n * @param {Object} updateContext - frame context (EveUpdateContext), threaded to modifiers\r\n * @param {EveChildUpdateParams} params - localToWorldTransform + boneCount/bones\r\n * @returns {Float32Array} worldTransform\r\n */\r\n @carbon.method\r\n @carbon.contextual([\"camera\"])\r\n @impl.implemented\r\n UpdateAsyncronous(updateContext, params)\r\n {\r\n const parentTransform = params?.localToWorldTransform;\r\n\r\n if (parentTransform && parentTransform.length === 16)\r\n {\r\n this.UpdateTransform(parentTransform);\r\n }\r\n\r\n applyTransformModifiers(this, updateContext, params?.boneCount ?? 0, params?.bones ?? null);\r\n\r\n const newParams = EveChildProceduralContainer.#DeriveChildParams(params);\r\n newParams.isVisible = (params?.isVisible !== false) && this.display;\r\n newParams.childParent = this;\r\n mat4.copy(newParams.localToWorldTransform, this.worldTransform);\r\n\r\n this.selectedObject?.UpdateAsyncronous?.(updateContext, newParams);\r\n\r\n this.selectionMethod?.UpdateAsyncronous?.(updateContext, newParams);\r\n\r\n return this.worldTransform;\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::UpdateVisibility (cpp:38-49): gate on\r\n * display, then forward the unchanged parent transform/LOD to the selected\r\n * child. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateVisibility(updateContext, parentTransform = null, parentLod = Tr2Lod.TR2_LOD_HIGH)\r\n {\r\n if (!this.display)\r\n {\r\n return;\r\n }\r\n\r\n this.selectedObject?.UpdateVisibility?.(updateContext, parentTransform, parentLod);\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::GetRenderables (cpp:51-57). */\r\n @carbon.method\r\n @impl.implemented\r\n GetRenderables(out = [])\r\n {\r\n if (this.display && this.selectedObject)\r\n {\r\n this.selectedObject.GetRenderables?.(out);\r\n }\r\n return out;\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::GetBoundingSphere (cpp:59-69): the\r\n * selected child's sphere or nothing. The child sphere is a per-call local\r\n * rather than module scratch because procedural containers nest through\r\n * their selected children; this is a bounds query, not the per-frame hot\r\n * path. */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphere(out = vec4.create(), _query = 0)\r\n {\r\n const childSphere = vec4.create();\r\n if (this.selectedObject?.GetBoundingSphere?.(childSphere))\r\n {\r\n vec4.copy(out, childSphere);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::GetLocalToWorldTransform\r\n * (cpp:181-184); the optional out follows the EveChildContainer copy-out\r\n * shape. */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocalToWorldTransform(out = null)\r\n {\r\n if (out)\r\n {\r\n return mat4.copy(out, this.worldTransform);\r\n }\r\n return this.worldTransform;\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::ChangeLOD (cpp:186-192). */\r\n @carbon.method\r\n @impl.implemented\r\n ChangeLOD(lod)\r\n {\r\n this.selectedObject?.ChangeLOD?.(lod);\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::PlayCurveSet (cpp:194-200): the\r\n * ITr2CurveSetOwner dynamic_cast becomes a duck call on the selected\r\n * child. */\r\n @carbon.method\r\n @impl.implemented\r\n PlayCurveSet(name, rangeName = \"\")\r\n {\r\n this.selectedObject?.PlayCurveSet?.(name, rangeName);\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::StopCurveSet (cpp:218-224). */\r\n @carbon.method\r\n @impl.implemented\r\n StopCurveSet(name)\r\n {\r\n this.selectedObject?.StopCurveSet?.(name);\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::UpdateCurveSet (cpp:226-232). */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateCurveSet(name, time)\r\n {\r\n this.selectedObject?.UpdateCurveSet?.(name, time);\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::GetCurveSetDuration (cpp:234-244). */\r\n @carbon.method\r\n @impl.implemented\r\n GetCurveSetDuration(name)\r\n {\r\n return Math.max(0, Number(this.selectedObject?.GetCurveSetDuration?.(name) ?? 0));\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::GetRangeDuration (cpp:246-256). */\r\n @carbon.method\r\n @impl.implemented\r\n GetRangeDuration(name, rangeName)\r\n {\r\n return Math.max(0, Number(this.selectedObject?.GetRangeDuration?.(name, rangeName) ?? 0));\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::PlayAllCurveSets (cpp:202-208). */\r\n @carbon.method\r\n @impl.implemented\r\n PlayAllCurveSets()\r\n {\r\n this.selectedObject?.PlayAllCurveSets?.();\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::StopAllCurveSets (cpp:210-216). */\r\n @carbon.method\r\n @impl.implemented\r\n StopAllCurveSets()\r\n {\r\n this.selectedObject?.StopAllCurveSets?.();\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::Setup (cpp:258-261). */\r\n @carbon.method\r\n @impl.implemented\r\n Setup(scale = null, rotation = null, translation = null, lowestLodVisible = null)\r\n {\r\n return super.Setup(scale, rotation, translation, lowestLodVisible);\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::FindSoundEmitter (cpp:287-298): the\r\n * ITr2SoundEmitterOwner dynamic_cast becomes a duck call on the selected\r\n * child. */\r\n @carbon.method\r\n @impl.implemented\r\n FindSoundEmitter(name)\r\n {\r\n return this.selectedObject?.FindSoundEmitter?.(name) ?? null;\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::AddTransformModifier\r\n * (cpp:300-303). */\r\n @carbon.method\r\n @impl.implemented\r\n AddTransformModifier(modifier)\r\n {\r\n this.transformModifiers.push(modifier);\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::SetShaderOption (cpp:305-311). */\r\n @carbon.method\r\n @impl.implemented\r\n SetShaderOption(name, value)\r\n {\r\n this.selectedObject?.SetShaderOption?.(name, value);\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::SetInheritProperties (cpp:346-356):\r\n * the IEveInheritPropertiesOwner BlueCast becomes a duck call. */\r\n @carbon.method\r\n @impl.implemented\r\n SetInheritProperties(colorSet)\r\n {\r\n this.selectedObject?.SetInheritProperties?.(colorSet);\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::RegisterComponents (cpp:322-333):\r\n * forward-only to the selected object. Gate m_display. */\r\n @carbon.method\r\n @impl.implemented\r\n RegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry && this.display)\r\n {\r\n this.selectedObject?.Register?.(registry);\r\n }\r\n }\r\n\r\n /** Carbon EveChildProceduralContainer::UnRegisterComponents (cpp:334-344):\r\n * forwards to the selected object; no display re-check. */\r\n @carbon.method\r\n @impl.implemented\r\n UnRegisterComponents()\r\n {\r\n const registry = this.GetComponentRegistry();\r\n if (registry)\r\n {\r\n this.selectedObject?.UnRegister?.(registry);\r\n }\r\n }\r\n\r\n // Copies the caller's params into a fresh child-facing record (Carbon copies\r\n // EveChildUpdateParams by value, cpp:93/120). Allocated per call like\r\n // EveChildContainer's fan-out - selected children can nest further\r\n // containers, making a module scratch record unsafe.\r\n static #DeriveChildParams(params)\r\n {\r\n const next = new EveChildUpdateParams();\r\n if (params)\r\n {\r\n next.spaceObjectParent = params.spaceObjectParent ?? null;\r\n next.childParent = params.childParent ?? null;\r\n next.boneCount = params.boneCount ?? 0;\r\n next.bones = params.bones ?? null;\r\n next.ownerMaxSpeed = Number(params.ownerMaxSpeed) || 0;\r\n next.activationStrength = Number(params.activationStrength ?? 1);\r\n next.controllerUpdateFrequency = Number(params.controllerUpdateFrequency ?? 0.5);\r\n next.isVisible = params.isVisible !== false;\r\n if (params.localToWorldTransform?.length === 16)\r\n {\r\n mat4.copy(next.localToWorldTransform, params.localToWorldTransform);\r\n }\r\n if (params.worldVelocity)\r\n {\r\n vec3.copy(next.worldVelocity, params.worldVelocity);\r\n }\r\n }\r\n return next;\r\n }\r\n\r\n}\r\n"],"names":["_EveChildProceduralCo","_identity","EveChildProceduralContainer","EveChildTransform","e","_init_transformModifiers","_init_extra_transformModifiers","_init_selectedObject","_init_extra_selectedObject","_init_name","_init_extra_name","_init_display","_init_extra_display","_init_selectionMethod","_init_extra_selectionMethod","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","persist","list","read","objectRef","string","boolean","model","carbon","method","impl","implemented","adapted","reason","contextual","constructor","args","Map","transformModifiers","selectedObject","name","display","selectionMethod","Initialize","OnModified","_value","OnListModified","_event","_key","_key2","_list","GetName","SetName","String","ConfigureSelectedObject","child","GetSelectedChild","value","SetProceduralContainerVariable","GetMethodVariableName","GetProceduralMethodVariable","HandleControllerEvent","SetControllerVariable","key","next","Number","set","SetProceduralMethodVariable","StartControllers","UpdateSyncronous","updateContext","params","newParams","isVisible","childParent","mat4","copy","localToWorldTransform","worldTransform","IsSelectedChildModified","UpdateAsyncronous","parentTransform","length","UpdateTransform","applyTransformModifiers","boneCount","bones","UpdateVisibility","parentLod","Tr2Lod","TR2_LOD_HIGH","GetRenderables","out","GetBoundingSphere","vec4","create","_query","childSphere","GetLocalToWorldTransform","ChangeLOD","lod","PlayCurveSet","rangeName","StopCurveSet","UpdateCurveSet","time","GetCurveSetDuration","Math","max","GetRangeDuration","PlayAllCurveSets","StopAllCurveSets","Setup","scale","rotation","translation","lowestLodVisible","FindSoundEmitter","AddTransformModifier","modifier","push","SetShaderOption","SetInheritProperties","colorSet","RegisterComponents","registry","GetComponentRegistry","Register","UnRegisterComponents","UnRegister","#DeriveChildParams","EveChildUpdateParams","spaceObjectParent","ownerMaxSpeed","activationStrength","controllerUpdateFrequency","worldVelocity","vec3"],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { applyDecs2311 as _applyDecs2311 } from '../../../_virtual/_rollupPlugin
|
|
|
2
2
|
import { impl, carbon, type } from '@carbonenginejs/core-types/schema';
|
|
3
3
|
import { CjsModel } from '@carbonenginejs/core-types/model';
|
|
4
4
|
import { EveComponentCollection as _EveComponentCollecti } from './EveComponentCollection.js';
|
|
5
|
+
import { EveComponentRequiredMethods } from '../../../eve/EveComponentTypes.js';
|
|
5
6
|
|
|
6
7
|
let _initProto, _initClass, _init_componentCollectionLoopGuard, _init_extra_componentCollectionLoopGuard, _init_registeredEntities, _init_extra_registeredEntities;
|
|
7
8
|
|
|
@@ -79,6 +80,16 @@ class EveComponentRegistry extends CjsModel {
|
|
|
79
80
|
return this.#componentCollections.find(collection => collection.name === componentName) ?? null;
|
|
80
81
|
}
|
|
81
82
|
RegisterComponent(componentName, entity) {
|
|
83
|
+
// Fail-closed duck assertion: Carbon's RegisterComponent<T> cannot compile
|
|
84
|
+
// for an entity that does not implement T; the JS port asserts the
|
|
85
|
+
// interface's pure-virtual surface (EveComponentRequiredMethods) instead.
|
|
86
|
+
if (Object.hasOwn(EveComponentRequiredMethods, componentName)) {
|
|
87
|
+
for (const method of EveComponentRequiredMethods[componentName]) {
|
|
88
|
+
if (typeof entity?.[method] !== "function") {
|
|
89
|
+
throw new TypeError(`EveComponentRegistry.RegisterComponent("${componentName}"): entity ` + `${entity?.constructor?.name ?? typeof entity} is missing required method ${method}().`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
82
93
|
let collection = this.GetComponentCollection(componentName);
|
|
83
94
|
if (!collection) {
|
|
84
95
|
collection = this.AddCollection(componentName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EveComponentRegistry.js","sources":["../../../../../src/generated/eve/scene/EveComponentRegistry.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\n// trinity/trinity/Eve/EveComponentRegistry.h\n// Generated by format-carbon carbon-class --emit. Verify against eve/scene/EveComponentRegistry.json.\nimport { carbon, impl, type } from \"@carbonenginejs/core-types/schema\";\nimport { CjsModel } from \"@carbonenginejs/core-types/model\";\nimport { EveComponentCollection } from \"./EveComponentCollection.js\";\n\n/** EveComponentRegistry (eve/scene) - generated from schema shapeHash abca1458.... */\n@type.define({ className: \"EveComponentRegistry\", family: \"eve/scene\" })\nexport class EveComponentRegistry extends CjsModel\n{\n\n #componentCollections = [];\n\n /** m_componentCollectionLoopGuard (mutable std::shared_mutex) */\n @type.rawStruct(\"std::shared_mutex\")\n componentCollectionLoopGuard = null;\n\n /** m_registeredEntities (std::vector<EveEntity*>) */\n @type.list(\"EveEntity\")\n registeredEntities = [];\n\n @impl.implemented\n Clear()\n {\n for (const collection of this.#componentCollections)\n {\n collection.Clear();\n }\n for (const entity of this.registeredEntities)\n {\n if (entity.registry === this)\n {\n entity.registry = null;\n entity.indexInRegistry = -1;\n entity.ClearComponentState();\n }\n }\n this.registeredEntities.length = 0;\n }\n\n @impl.implemented\n ReRegister(entity)\n {\n entity.UnRegister(this);\n entity.Register(this);\n }\n\n @impl.implemented\n Register(entity)\n {\n if (entity.indexInRegistry !== -1)\n {\n return false;\n }\n entity.registry = this;\n entity.indexInRegistry = this.registeredEntities.length;\n this.registeredEntities.push(entity);\n return true;\n }\n\n @impl.implemented\n UnRegister(entity)\n {\n const index = entity.indexInRegistry;\n if (entity.registry !== this || index < 0 || index >= this.registeredEntities.length)\n {\n return false;\n }\n const lastIndex = this.registeredEntities.length - 1;\n if (index !== lastIndex)\n {\n const swappedEntity = this.registeredEntities[lastIndex];\n swappedEntity.indexInRegistry = index;\n this.registeredEntities[index] = swappedEntity;\n }\n this.registeredEntities.pop();\n entity.registry = null;\n entity.indexInRegistry = -1;\n return true;\n }\n\n @impl.implemented\n UnRegisterAllComponents(entity)\n {\n for (const collection of this.#componentCollections)\n {\n this.RemoveFromCollection(collection, entity);\n }\n }\n\n @impl.implemented\n GetComponentCollection(componentName)\n {\n return this.#componentCollections.find(collection => collection.name === componentName) ?? null;\n }\n\n @impl.adapted\n @impl.reason(\"JavaScript passes Carbon's compile-time component name explicitly because it has no C++ template specialization.\")\n RegisterComponent(componentName, entity)\n {\n let collection = this.GetComponentCollection(componentName);\n if (!collection)\n {\n collection = this.AddCollection(componentName);\n }\n return this.AddToCollection(collection, entity);\n }\n\n @impl.adapted\n @impl.reason(\"JavaScript passes Carbon's compile-time component name explicitly because it has no C++ template specialization.\")\n UnRegisterComponent(componentName, entity)\n {\n const collection = this.GetComponentCollection(componentName);\n return collection ? this.RemoveFromCollection(collection, entity) : false;\n }\n\n @impl.implemented\n AddCollection(componentName)\n {\n if (this.#componentCollections.length >= 32)\n {\n throw new RangeError(\"EveComponentRegistry supports at most 32 component collections.\");\n }\n const collection = new EveComponentCollection();\n collection.name = String(componentName);\n collection.bit = 2 ** this.#componentCollections.length;\n this.#componentCollections.push(collection);\n return collection;\n }\n\n @impl.implemented\n AddToCollection(collection, entity)\n {\n if (entity.GetComponentIndex(collection.GetBit()) !== undefined)\n {\n return false;\n }\n const index = collection.Add(entity);\n entity.SetComponentState(collection.GetBit(), index);\n return true;\n }\n\n @impl.implemented\n RemoveFromCollection(collection, entity)\n {\n const bit = collection.GetBit();\n const index = entity.GetComponentIndex(bit);\n if (index === undefined)\n {\n return false;\n }\n const swappedEntity = collection.SwapWithBack(index);\n if (swappedEntity)\n {\n swappedEntity.SetComponentState(bit, index);\n }\n entity.RemoveComponentState(bit);\n return true;\n }\n\n @impl.implemented\n GetComponents(componentName)\n {\n return this.GetComponentCollection(componentName)?.collection ?? [];\n }\n\n @impl.implemented\n ComponentCount(componentName)\n {\n return this.GetComponentCollection(componentName)?.Size() ?? 0;\n }\n\n /** Carbon method GetComponentInfo (MAP_METHOD_AND_WRAP). */\n @carbon.method\n @impl.adapted\n @impl.reason(\"Returns Carbon's vector of name/count pairs as JavaScript tuple arrays.\")\n GetComponentInfo()\n {\n return this.#componentCollections.map(collection => [collection.name, collection.Size()]);\n }\n\n}\n"],"names":["_EveComponentRegistry","EveComponentRegistry","CjsModel","e","_init_componentCollectionLoopGuard","_init_extra_componentCollectionLoopGuard","_init_registeredEntities","_init_extra_registeredEntities","_initProto","c","_initClass","_applyDecs","type","define","className","family","rawStruct","list","impl","implemented","adapted","reason","carbon","method","constructor","args","componentCollectionLoopGuard","registeredEntities","Clear","collection","entity","registry","indexInRegistry","ClearComponentState","length","ReRegister","UnRegister","Register","push","index","lastIndex","swappedEntity","pop","UnRegisterAllComponents","RemoveFromCollection","GetComponentCollection","componentName","find","name","RegisterComponent","AddCollection","AddToCollection","UnRegisterComponent","RangeError","EveComponentCollection","String","bit","GetComponentIndex","GetBit","undefined","Add","SetComponentState","SwapWithBack","RemoveComponentState","GetComponents","ComponentCount","Size","GetComponentInfo","map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveComponentRegistry.js","sources":["../../../../../src/generated/eve/scene/EveComponentRegistry.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/EveComponentRegistry.h\r\n// Generated by format-carbon carbon-class --emit. Verify against eve/scene/EveComponentRegistry.json.\r\nimport { carbon, impl, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/core-types/model\";\r\nimport { EveComponentCollection } from \"./EveComponentCollection.js\";\r\nimport { EveComponentRequiredMethods } from \"../../../eve/EveComponentTypes.js\";\r\n\r\n/** EveComponentRegistry (eve/scene) - generated from schema shapeHash abca1458.... */\r\n@type.define({ className: \"EveComponentRegistry\", family: \"eve/scene\" })\r\nexport class EveComponentRegistry extends CjsModel\r\n{\r\n\r\n #componentCollections = [];\r\n\r\n /** m_componentCollectionLoopGuard (mutable std::shared_mutex) */\r\n @type.rawStruct(\"std::shared_mutex\")\r\n componentCollectionLoopGuard = null;\r\n\r\n /** m_registeredEntities (std::vector<EveEntity*>) */\r\n @type.list(\"EveEntity\")\r\n registeredEntities = [];\r\n\r\n @impl.implemented\r\n Clear()\r\n {\r\n for (const collection of this.#componentCollections)\r\n {\r\n collection.Clear();\r\n }\r\n for (const entity of this.registeredEntities)\r\n {\r\n if (entity.registry === this)\r\n {\r\n entity.registry = null;\r\n entity.indexInRegistry = -1;\r\n entity.ClearComponentState();\r\n }\r\n }\r\n this.registeredEntities.length = 0;\r\n }\r\n\r\n @impl.implemented\r\n ReRegister(entity)\r\n {\r\n entity.UnRegister(this);\r\n entity.Register(this);\r\n }\r\n\r\n @impl.implemented\r\n Register(entity)\r\n {\r\n if (entity.indexInRegistry !== -1)\r\n {\r\n return false;\r\n }\r\n entity.registry = this;\r\n entity.indexInRegistry = this.registeredEntities.length;\r\n this.registeredEntities.push(entity);\r\n return true;\r\n }\r\n\r\n @impl.implemented\r\n UnRegister(entity)\r\n {\r\n const index = entity.indexInRegistry;\r\n if (entity.registry !== this || index < 0 || index >= this.registeredEntities.length)\r\n {\r\n return false;\r\n }\r\n const lastIndex = this.registeredEntities.length - 1;\r\n if (index !== lastIndex)\r\n {\r\n const swappedEntity = this.registeredEntities[lastIndex];\r\n swappedEntity.indexInRegistry = index;\r\n this.registeredEntities[index] = swappedEntity;\r\n }\r\n this.registeredEntities.pop();\r\n entity.registry = null;\r\n entity.indexInRegistry = -1;\r\n return true;\r\n }\r\n\r\n @impl.implemented\r\n UnRegisterAllComponents(entity)\r\n {\r\n for (const collection of this.#componentCollections)\r\n {\r\n this.RemoveFromCollection(collection, entity);\r\n }\r\n }\r\n\r\n @impl.implemented\r\n GetComponentCollection(componentName)\r\n {\r\n return this.#componentCollections.find(collection => collection.name === componentName) ?? null;\r\n }\r\n\r\n @impl.adapted\r\n @impl.reason(\"JavaScript passes Carbon's compile-time component name explicitly because it has no C++ template specialization.\")\r\n RegisterComponent(componentName, entity)\r\n {\r\n // Fail-closed duck assertion: Carbon's RegisterComponent<T> cannot compile\r\n // for an entity that does not implement T; the JS port asserts the\r\n // interface's pure-virtual surface (EveComponentRequiredMethods) instead.\r\n if (Object.hasOwn(EveComponentRequiredMethods, componentName))\r\n {\r\n for (const method of EveComponentRequiredMethods[componentName])\r\n {\r\n if (typeof entity?.[method] !== \"function\")\r\n {\r\n throw new TypeError(\r\n `EveComponentRegistry.RegisterComponent(\"${componentName}\"): entity `\r\n + `${entity?.constructor?.name ?? typeof entity} is missing required method ${method}().`);\r\n }\r\n }\r\n }\r\n let collection = this.GetComponentCollection(componentName);\r\n if (!collection)\r\n {\r\n collection = this.AddCollection(componentName);\r\n }\r\n return this.AddToCollection(collection, entity);\r\n }\r\n\r\n @impl.adapted\r\n @impl.reason(\"JavaScript passes Carbon's compile-time component name explicitly because it has no C++ template specialization.\")\r\n UnRegisterComponent(componentName, entity)\r\n {\r\n const collection = this.GetComponentCollection(componentName);\r\n return collection ? this.RemoveFromCollection(collection, entity) : false;\r\n }\r\n\r\n @impl.implemented\r\n AddCollection(componentName)\r\n {\r\n if (this.#componentCollections.length >= 32)\r\n {\r\n throw new RangeError(\"EveComponentRegistry supports at most 32 component collections.\");\r\n }\r\n const collection = new EveComponentCollection();\r\n collection.name = String(componentName);\r\n collection.bit = 2 ** this.#componentCollections.length;\r\n this.#componentCollections.push(collection);\r\n return collection;\r\n }\r\n\r\n @impl.implemented\r\n AddToCollection(collection, entity)\r\n {\r\n if (entity.GetComponentIndex(collection.GetBit()) !== undefined)\r\n {\r\n return false;\r\n }\r\n const index = collection.Add(entity);\r\n entity.SetComponentState(collection.GetBit(), index);\r\n return true;\r\n }\r\n\r\n @impl.implemented\r\n RemoveFromCollection(collection, entity)\r\n {\r\n const bit = collection.GetBit();\r\n const index = entity.GetComponentIndex(bit);\r\n if (index === undefined)\r\n {\r\n return false;\r\n }\r\n const swappedEntity = collection.SwapWithBack(index);\r\n if (swappedEntity)\r\n {\r\n swappedEntity.SetComponentState(bit, index);\r\n }\r\n entity.RemoveComponentState(bit);\r\n return true;\r\n }\r\n\r\n @impl.implemented\r\n GetComponents(componentName)\r\n {\r\n return this.GetComponentCollection(componentName)?.collection ?? [];\r\n }\r\n\r\n @impl.implemented\r\n ComponentCount(componentName)\r\n {\r\n return this.GetComponentCollection(componentName)?.Size() ?? 0;\r\n }\r\n\r\n /** Carbon method GetComponentInfo (MAP_METHOD_AND_WRAP). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Returns Carbon's vector of name/count pairs as JavaScript tuple arrays.\")\r\n GetComponentInfo()\r\n {\r\n return this.#componentCollections.map(collection => [collection.name, collection.Size()]);\r\n }\r\n\r\n}\r\n"],"names":["_EveComponentRegistry","EveComponentRegistry","CjsModel","e","_init_componentCollectionLoopGuard","_init_extra_componentCollectionLoopGuard","_init_registeredEntities","_init_extra_registeredEntities","_initProto","c","_initClass","_applyDecs","type","define","className","family","rawStruct","list","impl","implemented","adapted","reason","carbon","method","constructor","args","componentCollectionLoopGuard","registeredEntities","Clear","collection","entity","registry","indexInRegistry","ClearComponentState","length","ReRegister","UnRegister","Register","push","index","lastIndex","swappedEntity","pop","UnRegisterAllComponents","RemoveFromCollection","GetComponentCollection","componentName","find","name","RegisterComponent","Object","hasOwn","EveComponentRequiredMethods","TypeError","AddCollection","AddToCollection","UnRegisterComponent","RangeError","EveComponentCollection","String","bit","GetComponentIndex","GetBit","undefined","Add","SetComponentState","SwapWithBack","RemoveComponentState","GetComponents","ComponentCount","Size","GetComponentInfo","map"],"mappings":"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"}
|
|
@@ -1,31 +1,83 @@
|
|
|
1
|
-
import { applyDecs2311 as _applyDecs2311 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
-
import { type } from '@carbonenginejs/core-types/schema';
|
|
1
|
+
import { identity as _identity, applyDecs2311 as _applyDecs2311 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { carbon, impl, type } from '@carbonenginejs/core-types/schema';
|
|
3
3
|
import { CjsModel } from '@carbonenginejs/core-types/model';
|
|
4
|
+
import { vec3 } from '@carbonenginejs/core-math/vec3';
|
|
5
|
+
import { TriFrustumTestResult } from '../../trinityCore/enums.js';
|
|
4
6
|
|
|
5
|
-
let _initClass, _init_shadow, _init_extra_shadow;
|
|
7
|
+
let _initProto, _initClass, _init_shadow, _init_extra_shadow;
|
|
6
8
|
|
|
7
9
|
/** TriShadowFrustum (eve/scene) - generated from schema shapeHash 2d9400b5.... */
|
|
8
10
|
let _TriShadowFrustum;
|
|
9
|
-
class
|
|
10
|
-
static {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
11
|
+
new class extends _identity {
|
|
12
|
+
static [class TriShadowFrustum extends CjsModel {
|
|
13
|
+
static {
|
|
14
|
+
({
|
|
15
|
+
e: [_init_shadow, _init_extra_shadow, _initProto],
|
|
16
|
+
c: [_TriShadowFrustum, _initClass]
|
|
17
|
+
} = _applyDecs2311(this, [type.define({
|
|
18
|
+
className: "TriShadowFrustum",
|
|
19
|
+
family: "eve/scene"
|
|
20
|
+
})], [[type.rawStruct("TriFrustum"), 0, "shadow"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsVisible"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetSizeInShadow"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetEyePos"], [[carbon, carbon.method, impl, impl.implemented], 18, "SphereTest"]], 0, void 0, CjsModel));
|
|
21
|
+
}
|
|
22
|
+
/** m_shadow (TriFrustum) */
|
|
23
|
+
shadow = (_initProto(this), _init_shadow(this, null));
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Carbon's constructor (h:112-115); optional to keep the shell
|
|
27
|
+
* default-constructible.
|
|
28
|
+
* @param {Object|null} [shadow] - TriFrustum
|
|
29
|
+
*/
|
|
30
|
+
constructor(shadow = null) {
|
|
31
|
+
super(), _init_extra_shadow(this);
|
|
32
|
+
this.shadow = shadow ?? null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Carbon TriShadowFrustum::IsVisible (h:116-121) - the shadow frustum's own
|
|
37
|
+
* sphere test; Carbon leaves camera-based culling as a TODO ("do something
|
|
38
|
+
* smart to cull the shadowcasting sphere using the camera frustum").
|
|
39
|
+
* @param {Object} _camera - TriFrustum duck (unused, Carbon parity)
|
|
40
|
+
* @param {Float32Array} boundingSphere - packed (x, y, z, radius)
|
|
41
|
+
* @returns {Boolean}
|
|
42
|
+
*/
|
|
43
|
+
IsVisible(_camera, boundingSphere) {
|
|
44
|
+
return !!this.shadow?.IsSphereVisible(boundingSphere);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Carbon TriShadowFrustum::GetSizeInShadow (h:122-125).
|
|
49
|
+
* @param {Float32Array} boundingSphere - packed (x, y, z, radius)
|
|
50
|
+
* @returns {Number}
|
|
51
|
+
*/
|
|
52
|
+
GetSizeInShadow(boundingSphere) {
|
|
53
|
+
return this.shadow ? this.shadow.GetPixelSizeAccross(boundingSphere) : 0;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Carbon TriShadowFrustum::GetEyePos (h:126-129) - the shadow frustum's
|
|
58
|
+
* m_viewPos.
|
|
59
|
+
* @returns {Float32Array}
|
|
60
|
+
*/
|
|
61
|
+
GetEyePos() {
|
|
62
|
+
return this.shadow ? this.shadow.viewPos : _TriShadowFrustum.#zeroEyePos;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Carbon TriShadowFrustum::SphereTest (h:131-134) - delegates to the shadow
|
|
67
|
+
* frustum's six-plane classification (camera unused, Carbon parity).
|
|
68
|
+
* @param {Object} _camera - TriFrustum duck (unused)
|
|
69
|
+
* @param {Object|Float32Array} sphere - { center, radius } or packed vec4
|
|
70
|
+
* @returns {Number} TriFrustumTestResult
|
|
71
|
+
*/
|
|
72
|
+
SphereTest(_camera, sphere) {
|
|
73
|
+
return this.shadow ? this.shadow.SphereTest(sphere) : TriFrustumTestResult.Outside;
|
|
74
|
+
}
|
|
75
|
+
}];
|
|
76
|
+
#zeroEyePos = vec3.create();
|
|
77
|
+
constructor() {
|
|
78
|
+
super(_TriShadowFrustum), _initClass();
|
|
27
79
|
}
|
|
28
|
-
}
|
|
80
|
+
}();
|
|
29
81
|
|
|
30
82
|
export { _TriShadowFrustum as TriShadowFrustum };
|
|
31
83
|
//# sourceMappingURL=TriShadowFrustum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriShadowFrustum.js","sources":["../../../../../src/generated/eve/scene/TriShadowFrustum.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\n// trinity/trinity/Eve/IEveShadowCaster.h\n// Generated by format-carbon carbon-class --emit. Verify against eve/scene/TriShadowFrustum.json.\nimport { type } from \"@carbonenginejs/core-types/schema\";\nimport { CjsModel } from \"@carbonenginejs/core-types/model\";\n\n/** TriShadowFrustum (eve/scene) - generated from schema shapeHash 2d9400b5.... */\n@type.define({ className: \"TriShadowFrustum\", family: \"eve/scene\" })\nexport class TriShadowFrustum extends CjsModel\n{\n\n /** m_shadow (TriFrustum) */\n @type.rawStruct(\"TriFrustum\")\n shadow = null;\n\n}\n"],"names":["_TriShadowFrustum","TriShadowFrustum","CjsModel","e","_init_shadow","_init_extra_shadow","c","_initClass","_applyDecs","type","define","className","family","rawStruct","
|
|
1
|
+
{"version":3,"file":"TriShadowFrustum.js","sources":["../../../../../src/generated/eve/scene/TriShadowFrustum.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/IEveShadowCaster.h\r\n// Generated by format-carbon carbon-class --emit. Verify against eve/scene/TriShadowFrustum.json.\r\n//\r\n// Methods implemented from IEveShadowCaster.h:107-135 (TriShadowFrustum, the\r\n// perspective IEveShadowFrustum adapter). Transient per-shadow-pass CPU cull\r\n// adapter - NOT a registry component and never a scene member\r\n// (ECS-VISIBILITY-SPEC-2026-07-23 \"Shadow frustums\"). The shadow member is a\r\n// TriFrustum held by reference (Carbon copies by value into the transient).\r\nimport { carbon, impl, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/core-types/model\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { TriFrustumTestResult } from \"../../trinityCore/enums.js\";\r\n\r\n/** TriShadowFrustum (eve/scene) - generated from schema shapeHash 2d9400b5.... */\r\n@type.define({ className: \"TriShadowFrustum\", family: \"eve/scene\" })\r\nexport class TriShadowFrustum extends CjsModel\r\n{\r\n\r\n /** m_shadow (TriFrustum) */\r\n @type.rawStruct(\"TriFrustum\")\r\n shadow = null;\r\n\r\n /**\r\n * Carbon's constructor (h:112-115); optional to keep the shell\r\n * default-constructible.\r\n * @param {Object|null} [shadow] - TriFrustum\r\n */\r\n constructor(shadow = null)\r\n {\r\n super();\r\n this.shadow = shadow ?? null;\r\n }\r\n\r\n /**\r\n * Carbon TriShadowFrustum::IsVisible (h:116-121) - the shadow frustum's own\r\n * sphere test; Carbon leaves camera-based culling as a TODO (\"do something\r\n * smart to cull the shadowcasting sphere using the camera frustum\").\r\n * @param {Object} _camera - TriFrustum duck (unused, Carbon parity)\r\n * @param {Float32Array} boundingSphere - packed (x, y, z, radius)\r\n * @returns {Boolean}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n IsVisible(_camera, boundingSphere)\r\n {\r\n return !!this.shadow?.IsSphereVisible(boundingSphere);\r\n }\r\n\r\n /**\r\n * Carbon TriShadowFrustum::GetSizeInShadow (h:122-125).\r\n * @param {Float32Array} boundingSphere - packed (x, y, z, radius)\r\n * @returns {Number}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetSizeInShadow(boundingSphere)\r\n {\r\n return this.shadow ? this.shadow.GetPixelSizeAccross(boundingSphere) : 0;\r\n }\r\n\r\n /**\r\n * Carbon TriShadowFrustum::GetEyePos (h:126-129) - the shadow frustum's\r\n * m_viewPos.\r\n * @returns {Float32Array}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetEyePos()\r\n {\r\n return this.shadow ? this.shadow.viewPos : TriShadowFrustum.#zeroEyePos;\r\n }\r\n\r\n /**\r\n * Carbon TriShadowFrustum::SphereTest (h:131-134) - delegates to the shadow\r\n * frustum's six-plane classification (camera unused, Carbon parity).\r\n * @param {Object} _camera - TriFrustum duck (unused)\r\n * @param {Object|Float32Array} sphere - { center, radius } or packed vec4\r\n * @returns {Number} TriFrustumTestResult\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SphereTest(_camera, sphere)\r\n {\r\n return this.shadow ? this.shadow.SphereTest(sphere) : TriFrustumTestResult.Outside;\r\n }\r\n\r\n static #zeroEyePos = vec3.create();\r\n\r\n}\r\n"],"names":["_TriShadowFrustum","_identity","TriShadowFrustum","CjsModel","e","_init_shadow","_init_extra_shadow","_initProto","c","_initClass","_applyDecs","type","define","className","family","rawStruct","carbon","method","impl","implemented","shadow","constructor","IsVisible","_camera","boundingSphere","IsSphereVisible","GetSizeInShadow","GetPixelSizeAccross","GetEyePos","viewPos","SphereTest","sphere","TriFrustumTestResult","Outside","vec3","create"],"mappings":";;;;;;;;AAcA;AAAA,IAAAA;AAAA,IAAA,cAAAC,SAAA,CAAA;AAAA,EAAA,QACA,MAAAC,gBAAA,SACsCC,QAAQ,CAC9C;AAAA,IAAA;AAAA,MAAA,CAAA;AAAAC,QAAAA,CAAA,EAAA,CAAAC,YAAA,EAAAC,kBAAA,EAAAC,UAAA,CAAA;QAAAC,CAAA,EAAA,CAAAR,iBAAA,EAAAS,UAAA;AAAA,OAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,QAAAA,SAAS,EAAE,kBAAkB;AAAEC,QAAAA,MAAM,EAAE;OAAa,CAAC,CAAA,EAAA,CAAA,CAKjEH,IAAI,CAACI,SAAS,CAAC,YAAY,CAAC,EAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAsB5BC,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,CAWhBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAahBH,MAAM,EAANA,MAAM,CAACC,MAAM,EACbC,IAAI,EAAJA,IAAI,CAACC,WAAW,CAAA,EAAA,EAAA,EAAA,YAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAjEmBhB,QAAQ,CAAA;AAAA;AAG5C;AAEAiB,IAAAA,MAAM,IAAAb,UAAA,CAAA,IAAA,CAAA,EAAAF,YAAA,OAAG,IAAI,CAAA;;AAEb;AACF;AACA;AACA;AACA;AACEgB,IAAAA,WAAWA,CAACD,MAAM,GAAG,IAAI,EACzB;MACE,KAAK,EAAE,EAAAd,kBAAA,CAAA,IAAA,CAAA;AACP,MAAA,IAAI,CAACc,MAAM,GAAGA,MAAM,IAAI,IAAI;AAC9B,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AAGEE,IAAAA,SAASA,CAACC,OAAO,EAAEC,cAAc,EACjC;MACE,OAAO,CAAC,CAAC,IAAI,CAACJ,MAAM,EAAEK,eAAe,CAACD,cAAc,CAAC;AACvD,IAAA;;AAEA;AACF;AACA;AACA;AACA;IAGEE,eAAeA,CAACF,cAAc,EAC9B;AACE,MAAA,OAAO,IAAI,CAACJ,MAAM,GAAG,IAAI,CAACA,MAAM,CAACO,mBAAmB,CAACH,cAAc,CAAC,GAAG,CAAC;AAC1E,IAAA;;AAEA;AACF;AACA;AACA;AACA;AAGEI,IAAAA,SAASA,GACT;AACE,MAAA,OAAO,IAAI,CAACR,MAAM,GAAG,IAAI,CAACA,MAAM,CAACS,OAAO,GAAG3B,iBAAgB,CAAC,WAAW;AACzE,IAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AAGE4B,IAAAA,UAAUA,CAACP,OAAO,EAAEQ,MAAM,EAC1B;AACE,MAAA,OAAO,IAAI,CAACX,MAAM,GAAG,IAAI,CAACA,MAAM,CAACU,UAAU,CAACC,MAAM,CAAC,GAAGC,oBAAoB,CAACC,OAAO;AACpF,IAAA;GAID;AAFQ,EAAA,WAAW,GAAGC,IAAI,CAACC,MAAM,EAAE;EAACd,WAAAA,GAAA;IAAA,KAAA,CAAArB,iBAAA,GAAAS,UAAA,EAAA;AAAA,EAAA;AAAA,CAAA,EAAA;;;;"}
|
|
@@ -1,38 +1,140 @@
|
|
|
1
|
-
import { applyDecs2311 as _applyDecs2311 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
-
import { type } from '@carbonenginejs/core-types/schema';
|
|
1
|
+
import { identity as _identity, applyDecs2311 as _applyDecs2311 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { type, carbon, impl } from '@carbonenginejs/core-types/schema';
|
|
3
3
|
import { CjsModel } from '@carbonenginejs/core-types/model';
|
|
4
4
|
import { vec3 } from '@carbonenginejs/core-math/vec3';
|
|
5
|
+
import { PlaneDotNormal, PlaneDotCoord } from '../../../trinityCore/TriFrustum.js';
|
|
6
|
+
import { TriFrustumTestResult } from '../../trinityCore/enums.js';
|
|
5
7
|
|
|
6
|
-
let _initClass, _init_shadow, _init_extra_shadow, _init_shadowMapSize, _init_extra_shadowMapSize, _init_sunDir, _init_extra_sunDir;
|
|
8
|
+
let _initProto, _initClass, _init_shadow, _init_extra_shadow, _init_shadowMapSize, _init_extra_shadowMapSize, _init_sunDir, _init_extra_sunDir;
|
|
7
9
|
|
|
8
10
|
/** TriShadowOrthoFrustum (eve/scene) - generated from schema shapeHash 7a23f56b.... */
|
|
9
11
|
let _TriShadowOrthoFrustu;
|
|
10
|
-
class
|
|
11
|
-
static {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
new class extends _identity {
|
|
13
|
+
static [class TriShadowOrthoFrustum extends CjsModel {
|
|
14
|
+
static {
|
|
15
|
+
({
|
|
16
|
+
e: [_init_shadow, _init_extra_shadow, _init_shadowMapSize, _init_extra_shadowMapSize, _init_sunDir, _init_extra_sunDir, _initProto],
|
|
17
|
+
c: [_TriShadowOrthoFrustu, _initClass]
|
|
18
|
+
} = _applyDecs2311(this, [type.define({
|
|
19
|
+
className: "TriShadowOrthoFrustum",
|
|
20
|
+
family: "eve/scene"
|
|
21
|
+
})], [[type.rawStruct("TriFrustumOrtho"), 0, "shadow"], [[type, type.uint32], 16, "shadowMapSize"], [[type, type.vec3], 16, "sunDir"], [[carbon, carbon.method, impl, impl.implemented], 18, "IsVisible"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetSizeInShadow"], [[carbon, carbon.method, impl, impl.implemented], 18, "GetEyePos"], [[carbon, carbon.method, impl, impl.implemented], 18, "SphereTest"]], 0, void 0, CjsModel));
|
|
22
|
+
}
|
|
23
|
+
/** m_shadow (TriFrustumOrtho) */
|
|
24
|
+
shadow = (_initProto(this), _init_shadow(this, null));
|
|
25
|
+
|
|
26
|
+
/** m_shadowMapSize (uint32_t) */
|
|
27
|
+
shadowMapSize = (_init_extra_shadow(this), _init_shadowMapSize(this, 0));
|
|
28
|
+
|
|
29
|
+
/** m_sunDir (Vector3) */
|
|
30
|
+
sunDir = (_init_extra_shadowMapSize(this), _init_sunDir(this, vec3.create()));
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Carbon's argument constructor (h:42-47); all arguments optional to keep
|
|
34
|
+
* the default-constructible shell contract (h:35-40).
|
|
35
|
+
* @param {Object|null} [shadow] - TriFrustumOrtho
|
|
36
|
+
* @param {Number} [shadowMapSize]
|
|
37
|
+
* @param {Float32Array|null} [sunDir]
|
|
38
|
+
*/
|
|
39
|
+
constructor(shadow = null, shadowMapSize = 0, sunDir = null) {
|
|
40
|
+
super(), _init_extra_sunDir(this);
|
|
41
|
+
this.shadow = shadow ?? null;
|
|
42
|
+
this.shadowMapSize = Number(shadowMapSize) >>> 0;
|
|
43
|
+
if (sunDir) {
|
|
44
|
+
vec3.copy(this.sunDir, sunDir);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Carbon TriShadowOrthoFrustum::IsVisible (h:48-69): the sphere must be
|
|
50
|
+
* visible in the ortho shadow frustum (far plane ignored), and for every
|
|
51
|
+
* camera plane facing away from the sun (DotNormal(plane, sunDir) < 0) the
|
|
52
|
+
* sphere must not be entirely behind that plane. (Carbon's unused local
|
|
53
|
+
* `val` on the negated center is dead code and is omitted.)
|
|
54
|
+
* @param {Object} camera - TriFrustum duck ({ planes })
|
|
55
|
+
* @param {Float32Array} boundingSphere - packed (x, y, z, radius)
|
|
56
|
+
* @returns {Boolean}
|
|
57
|
+
*/
|
|
58
|
+
IsVisible(camera, boundingSphere) {
|
|
59
|
+
if (!this.shadow) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
const sphereIsVisible = this.shadow.IsSphereVisibleIgnoreFarPlane(boundingSphere, boundingSphere[3]);
|
|
63
|
+
if (sphereIsVisible) {
|
|
64
|
+
const planes = camera?.planes ?? [];
|
|
65
|
+
for (let j = 0; j < 6; ++j) {
|
|
66
|
+
// first check if sun direction is perpendicular of the plane
|
|
67
|
+
const d = PlaneDotNormal(planes[j], this.sunDir);
|
|
68
|
+
// if it's not perpendicular then check if the object is "behind" the plane
|
|
69
|
+
if (d < 0) {
|
|
70
|
+
if (PlaneDotCoord(planes[j], boundingSphere) < -boundingSphere[3]) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return sphereIsVisible;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Carbon TriShadowOrthoFrustum::GetSizeInShadow (h:70-73) - shadow-map pixel
|
|
81
|
+
* coverage via TriFrustumOrtho.GetPixelSize.
|
|
82
|
+
* @param {Float32Array} boundingSphere - packed (x, y, z, radius)
|
|
83
|
+
* @returns {Number}
|
|
84
|
+
*/
|
|
85
|
+
GetSizeInShadow(boundingSphere) {
|
|
86
|
+
return this.shadow ? this.shadow.GetPixelSize(boundingSphere, this.shadowMapSize) : 0;
|
|
87
|
+
}
|
|
26
88
|
|
|
27
|
-
|
|
28
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Carbon TriShadowOrthoFrustum::GetEyePos (h:74-77).
|
|
91
|
+
* @returns {Float32Array}
|
|
92
|
+
*/
|
|
93
|
+
GetEyePos() {
|
|
94
|
+
return this.shadow ? this.shadow.GetEyePos() : _TriShadowOrthoFrustu.#zeroEyePos;
|
|
95
|
+
}
|
|
29
96
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Carbon TriShadowOrthoFrustum::SphereTest (h:79-104): the ortho
|
|
99
|
+
* classification (far plane ignored), demoted per sun-facing camera plane -
|
|
100
|
+
* Outside when fully behind one, Intersect when straddling one.
|
|
101
|
+
* @param {Object} camera - TriFrustum duck ({ planes })
|
|
102
|
+
* @param {Object|Float32Array} sphere - { center, radius } or packed vec4
|
|
103
|
+
* @returns {Number} TriFrustumTestResult
|
|
104
|
+
*/
|
|
105
|
+
SphereTest(camera, sphere) {
|
|
106
|
+
if (!this.shadow) {
|
|
107
|
+
return TriFrustumTestResult.Outside;
|
|
108
|
+
}
|
|
109
|
+
let orthoResult = this.shadow.SphereTestIgnoreFarPlane(sphere);
|
|
110
|
+
if (orthoResult !== TriFrustumTestResult.Outside) {
|
|
111
|
+
const packed = typeof sphere?.length === "number" && sphere.length >= 4;
|
|
112
|
+
const center = packed ? sphere : sphere.center;
|
|
113
|
+
const radius = packed ? sphere[3] : sphere.radius;
|
|
114
|
+
const planes = camera?.planes ?? [];
|
|
115
|
+
for (let j = 0; j < 6; ++j) {
|
|
116
|
+
// first check if sun direction is perpendicular of the plane
|
|
117
|
+
const d = PlaneDotNormal(planes[j], this.sunDir);
|
|
118
|
+
// if it's not perpendicular then check if the object is "behind" the plane
|
|
119
|
+
if (d < 0) {
|
|
120
|
+
const val = PlaneDotCoord(planes[j], center);
|
|
121
|
+
if (val < -radius) {
|
|
122
|
+
return TriFrustumTestResult.Outside;
|
|
123
|
+
}
|
|
124
|
+
if (val < radius) {
|
|
125
|
+
orthoResult = TriFrustumTestResult.Intersect;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return orthoResult;
|
|
131
|
+
}
|
|
132
|
+
}];
|
|
133
|
+
#zeroEyePos = vec3.create();
|
|
134
|
+
constructor() {
|
|
135
|
+
super(_TriShadowOrthoFrustu), _initClass();
|
|
34
136
|
}
|
|
35
|
-
}
|
|
137
|
+
}();
|
|
36
138
|
|
|
37
139
|
export { _TriShadowOrthoFrustu as TriShadowOrthoFrustum };
|
|
38
140
|
//# sourceMappingURL=TriShadowOrthoFrustum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriShadowOrthoFrustum.js","sources":["../../../../../src/generated/eve/scene/TriShadowOrthoFrustum.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\n// trinity/trinity/Eve/IEveShadowCaster.h\n// Generated by format-carbon carbon-class --emit. Verify against eve/scene/TriShadowOrthoFrustum.json.\nimport { type } from \"@carbonenginejs/core-types/schema\";\nimport { CjsModel } from \"@carbonenginejs/core-types/model\";\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\n\n/** TriShadowOrthoFrustum (eve/scene) - generated from schema shapeHash 7a23f56b.... */\n@type.define({ className: \"TriShadowOrthoFrustum\", family: \"eve/scene\" })\nexport class TriShadowOrthoFrustum extends CjsModel\n{\n\n /** m_shadow (TriFrustumOrtho) */\n @type.rawStruct(\"TriFrustumOrtho\")\n shadow = null;\n\n /** m_shadowMapSize (uint32_t) */\n @type.uint32\n shadowMapSize = 0;\n\n /** m_sunDir (Vector3) */\n @type.vec3\n sunDir = vec3.create();\n\n}\n"],"names":["_TriShadowOrthoFrustu","TriShadowOrthoFrustum","CjsModel","e","_init_shadow","_init_extra_shadow","_init_shadowMapSize","_init_extra_shadowMapSize","_init_sunDir","_init_extra_sunDir","c","_initClass","_applyDecs","type","define","className","family","rawStruct","uint32","vec3","constructor","args","shadow","shadowMapSize","sunDir","create"],"mappings":";;;;;;;AAOA;AAAA,IAAAA;AACA,MAAAC,qBAAA,SAC2CC,QAAQ,CACnD;AAAA,EAAA;AAAA,IAAA,CAAA;MAAAC,CAAA,EAAA,CAAAC,YAAA,EAAAC,kBAAA,EAAAC,mBAAA,EAAAC,yBAAA,EAAAC,YAAA,EAAAC,kBAAA,CAAA;MAAAC,CAAA,EAAA,CAAAV,qBAAA,EAAAW,UAAA;AAAA,KAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,MAAAA,SAAS,EAAE,uBAAuB;AAAEC,MAAAA,MAAM,EAAE;KAAa,CAAC,KAKtEH,IAAI,CAACI,SAAS,CAAC,iBAAiB,CAAC,EAAA,CAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAIjCJ,IAAI,EAAJA,IAAI,CAACK,MAAM,CAAA,EAAA,EAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAIXL,IAAI,EAAJA,IAAI,CAACM,IAAI,CAAA,EAAA,EAAA,EAAA,QAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAZ+BjB,QAAQ,CAAA;AAAA;AAAAkB,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAAZ,kBAAA,CAAA,IAAA,CAAA;AAAA,EAAA;AAGjD;EAEAa,MAAM,GAAAlB,YAAA,CAAA,IAAA,EAAG,IAAI,CAAA;;AAEb;AAEAmB,EAAAA,aAAa,IAAAlB,kBAAA,CAAA,IAAA,CAAA,EAAAC,mBAAA,OAAG,CAAC,CAAA;;AAEjB;EAEAkB,MAAM,IAAAjB,yBAAA,CAAA,IAAA,CAAA,EAAAC,YAAA,OAAGW,IAAI,CAACM,MAAM,EAAE,CAAA;AAAC,EAAA;IAAAd,UAAA,EAAA;AAAA;AAEzB;;;;"}
|
|
1
|
+
{"version":3,"file":"TriShadowOrthoFrustum.js","sources":["../../../../../src/generated/eve/scene/TriShadowOrthoFrustum.js"],"sourcesContent":["// Ported from CarbonEngine (MIT, (c) 2026 CCP Games) - https://github.com/carbonengine/trinity\r\n// trinity/trinity/Eve/IEveShadowCaster.h\r\n// Generated by format-carbon carbon-class --emit. Verify against eve/scene/TriShadowOrthoFrustum.json.\r\n//\r\n// Methods implemented from IEveShadowCaster.h:28-105 (TriShadowOrthoFrustum,\r\n// the cascaded-shadow-map IEveShadowFrustum adapter). Transient per-shadow-pass\r\n// CPU cull adapter - NOT a registry component and never a scene member\r\n// (ECS-VISIBILITY-SPEC-2026-07-23 \"Shadow frustums\"). The camera argument is a\r\n// TriFrustum duck (world-space planes array); the shadow member is a\r\n// TriFrustumOrtho held by reference (Carbon copies by value into the\r\n// transient).\r\nimport { carbon, impl, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/core-types/model\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { PlaneDotCoord, PlaneDotNormal } from \"../../../trinityCore/TriFrustum.js\";\r\nimport { TriFrustumTestResult } from \"../../trinityCore/enums.js\";\r\n\r\n/** TriShadowOrthoFrustum (eve/scene) - generated from schema shapeHash 7a23f56b.... */\r\n@type.define({ className: \"TriShadowOrthoFrustum\", family: \"eve/scene\" })\r\nexport class TriShadowOrthoFrustum extends CjsModel\r\n{\r\n\r\n /** m_shadow (TriFrustumOrtho) */\r\n @type.rawStruct(\"TriFrustumOrtho\")\r\n shadow = null;\r\n\r\n /** m_shadowMapSize (uint32_t) */\r\n @type.uint32\r\n shadowMapSize = 0;\r\n\r\n /** m_sunDir (Vector3) */\r\n @type.vec3\r\n sunDir = vec3.create();\r\n\r\n /**\r\n * Carbon's argument constructor (h:42-47); all arguments optional to keep\r\n * the default-constructible shell contract (h:35-40).\r\n * @param {Object|null} [shadow] - TriFrustumOrtho\r\n * @param {Number} [shadowMapSize]\r\n * @param {Float32Array|null} [sunDir]\r\n */\r\n constructor(shadow = null, shadowMapSize = 0, sunDir = null)\r\n {\r\n super();\r\n this.shadow = shadow ?? null;\r\n this.shadowMapSize = Number(shadowMapSize) >>> 0;\r\n if (sunDir)\r\n {\r\n vec3.copy(this.sunDir, sunDir);\r\n }\r\n }\r\n\r\n /**\r\n * Carbon TriShadowOrthoFrustum::IsVisible (h:48-69): the sphere must be\r\n * visible in the ortho shadow frustum (far plane ignored), and for every\r\n * camera plane facing away from the sun (DotNormal(plane, sunDir) < 0) the\r\n * sphere must not be entirely behind that plane. (Carbon's unused local\r\n * `val` on the negated center is dead code and is omitted.)\r\n * @param {Object} camera - TriFrustum duck ({ planes })\r\n * @param {Float32Array} boundingSphere - packed (x, y, z, radius)\r\n * @returns {Boolean}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n IsVisible(camera, boundingSphere)\r\n {\r\n if (!this.shadow)\r\n {\r\n return false;\r\n }\r\n const sphereIsVisible = this.shadow.IsSphereVisibleIgnoreFarPlane(boundingSphere, boundingSphere[3]);\r\n if (sphereIsVisible)\r\n {\r\n const planes = camera?.planes ?? [];\r\n for (let j = 0; j < 6; ++j)\r\n {\r\n // first check if sun direction is perpendicular of the plane\r\n const d = PlaneDotNormal(planes[j], this.sunDir);\r\n // if it's not perpendicular then check if the object is \"behind\" the plane\r\n if (d < 0)\r\n {\r\n if (PlaneDotCoord(planes[j], boundingSphere) < -boundingSphere[3])\r\n {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return sphereIsVisible;\r\n }\r\n\r\n /**\r\n * Carbon TriShadowOrthoFrustum::GetSizeInShadow (h:70-73) - shadow-map pixel\r\n * coverage via TriFrustumOrtho.GetPixelSize.\r\n * @param {Float32Array} boundingSphere - packed (x, y, z, radius)\r\n * @returns {Number}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetSizeInShadow(boundingSphere)\r\n {\r\n return this.shadow ? this.shadow.GetPixelSize(boundingSphere, this.shadowMapSize) : 0;\r\n }\r\n\r\n /**\r\n * Carbon TriShadowOrthoFrustum::GetEyePos (h:74-77).\r\n * @returns {Float32Array}\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetEyePos()\r\n {\r\n return this.shadow ? this.shadow.GetEyePos() : TriShadowOrthoFrustum.#zeroEyePos;\r\n }\r\n\r\n /**\r\n * Carbon TriShadowOrthoFrustum::SphereTest (h:79-104): the ortho\r\n * classification (far plane ignored), demoted per sun-facing camera plane -\r\n * Outside when fully behind one, Intersect when straddling one.\r\n * @param {Object} camera - TriFrustum duck ({ planes })\r\n * @param {Object|Float32Array} sphere - { center, radius } or packed vec4\r\n * @returns {Number} TriFrustumTestResult\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SphereTest(camera, sphere)\r\n {\r\n if (!this.shadow)\r\n {\r\n return TriFrustumTestResult.Outside;\r\n }\r\n let orthoResult = this.shadow.SphereTestIgnoreFarPlane(sphere);\r\n if (orthoResult !== TriFrustumTestResult.Outside)\r\n {\r\n const packed = typeof sphere?.length === \"number\" && sphere.length >= 4;\r\n const center = packed ? sphere : sphere.center;\r\n const radius = packed ? sphere[3] : sphere.radius;\r\n const planes = camera?.planes ?? [];\r\n for (let j = 0; j < 6; ++j)\r\n {\r\n // first check if sun direction is perpendicular of the plane\r\n const d = PlaneDotNormal(planes[j], this.sunDir);\r\n // if it's not perpendicular then check if the object is \"behind\" the plane\r\n if (d < 0)\r\n {\r\n const val = PlaneDotCoord(planes[j], center);\r\n if (val < -radius)\r\n {\r\n return TriFrustumTestResult.Outside;\r\n }\r\n if (val < radius)\r\n {\r\n orthoResult = TriFrustumTestResult.Intersect;\r\n }\r\n }\r\n }\r\n }\r\n return orthoResult;\r\n }\r\n\r\n static #zeroEyePos = vec3.create();\r\n\r\n}\r\n"],"names":["_TriShadowOrthoFrustu","_identity","TriShadowOrthoFrustum","CjsModel","e","_init_shadow","_init_extra_shadow","_init_shadowMapSize","_init_extra_shadowMapSize","_init_sunDir","_init_extra_sunDir","_initProto","c","_initClass","_applyDecs","type","define","className","family","rawStruct","uint32","vec3","carbon","method","impl","implemented","shadow","shadowMapSize","sunDir","create","constructor","Number","copy","IsVisible","camera","boundingSphere","sphereIsVisible","IsSphereVisibleIgnoreFarPlane","planes","j","d","PlaneDotNormal","PlaneDotCoord","GetSizeInShadow","GetPixelSize","GetEyePos","SphereTest","sphere","TriFrustumTestResult","Outside","orthoResult","SphereTestIgnoreFarPlane","packed","length","center","radius","val","Intersect"],"mappings":"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"}
|