@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":"EveSpaceObject2.js","sources":["../../../../src/eve/spaceObject/EveSpaceObject2.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveSpaceObject2.h\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveSpaceObject2.cpp\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveSpaceObject2_Blue.cpp\r\nimport { carbon, impl, io, schema, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { EveEntity } from \"../../generated/eve/EveEntity.js\";\r\nimport { EveChildUpdateParams } from \"../EveChildUpdateParams.js\";\r\nimport { EveChildInheritProperties } from \"../child/EveChildInheritProperties.js\";\r\nimport { box3 } from \"@carbonenginejs/core-math/box3\";\r\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\r\nimport { quat } from \"@carbonenginejs/core-math/quat\";\r\nimport { sph3 } from \"@carbonenginejs/core-math/sph3\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\r\nimport { ReflectionMode } from \"../../generated/eve/enums.js\";\r\nimport { ImpactConfiguration } from \"../../generated/include/enums.js\";\r\nimport { EveLODHelper, Tr2Lod } from \"../EveLODHelper.js\";\r\nimport { TriBatchType } from \"@carbonenginejs/runtime-const/graphics\";\r\nimport { Tr2PerObjectData } from \"../../trinityCore/Tr2PerObjectData.js\";\r\nimport { Tr2RenderBatch, TriRenderBatchAreaBlock } from \"../../trinityCore/Tr2RenderBatch.js\";\r\n\r\n// Static scratch for the sorted-transparent area pass (allocation rules: hot\r\n// per-frame path, copy-into, never allocate per call).\r\nconst TRANSPARENT_AABB_MIN = vec3.create();\r\nconst TRANSPARENT_AABB_MAX = vec3.create();\r\nconst TRANSPARENT_CENTER = vec3.create();\r\n\r\n// Carbon EveMeshOverlayEffect::OverlayType (EveMeshOverlayEffect.h:35-41).\r\nconst OVERLAY_TYPE_OPAQUEONLY = 0;\r\nconst OVERLAY_TYPE_ALL = 1;\r\n\r\n@type.define({ className: \"EveSpaceObject2\", family: \"eve/spaceObject\" })\r\nexport class EveSpaceObject2 extends EveEntity\r\n{\r\n\r\n /** m_reflectionMode (EntityComponents::ReflectionMode - enum ReflectionMode) [READWRITE, PERSIST, NOTIFY, ENUM] */\r\n @io.notify\r\n @io.persist\r\n @type.int32\r\n @schema.enum(\"ReflectionMode\")\r\n reflectionMode = 3;\r\n\r\n /** m_effectChildren (PIEveSpaceObjectChildVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveSpaceObjectChild\")\r\n effectChildren = [];\r\n\r\n /** m_children (PIEveTransformVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveTransform\")\r\n children = [];\r\n\r\n /** m_name (std::string) [READWRITE, NOTIFY, PERSIST] */\r\n @io.notify\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_mute (bool) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.boolean\r\n mute = false;\r\n\r\n /** m_inheritProperties (EveChildInheritPropertiesPtr) [READWRITE] */\r\n @io.readwrite\r\n @type.objectRef(\"EveChildInheritProperties\")\r\n inheritProperties = null;\r\n\r\n /** m_customMasks (PEveCustomMaskVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveCustomMask\")\r\n customMasks = [];\r\n\r\n /** m_overlayEffects (PEveMeshOverlayEffectVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveMeshOverlayEffect\")\r\n overlayEffects = [];\r\n\r\n /** m_positionDelta (Tr2BindingVector3Ptr) [READ] */\r\n @io.read\r\n @type.objectRef(\"Tr2BindingVector3\")\r\n positionDelta = null;\r\n\r\n /** m_lodLevel (Tr2Lod - enum Tr2Lod) [READ] */\r\n @io.read\r\n @type.int32\r\n @schema.enum(\"Tr2Lod\")\r\n lodLevel = -1;\r\n\r\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"TriCurveSet\")\r\n curveSets = [];\r\n\r\n /** m_isPickable (bool) [READWRITE] */\r\n @io.readwrite\r\n @type.boolean\r\n isPickable = true;\r\n\r\n /** m_estimatedPixelDiameter (float) [READ] */\r\n @io.read\r\n @type.float32\r\n estimatedPixelDiameter = 0;\r\n\r\n /** m_estimatedPixelDiameterWithChildren (float) [READ] */\r\n @io.read\r\n @type.float32\r\n estimatedPixelDiameterWithChildren = 0;\r\n\r\n /** m_generatedShapeEllipsoidCenter (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n generatedShapeEllipsoidCenter = vec3.create();\r\n\r\n /** m_generatedShapeEllipsoidRadius (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n generatedShapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\r\n\r\n /** m_animationUpdater (Tr2GrannyAnimationPtr) [READ] */\r\n @io.read\r\n @type.objectRef(\"Tr2GrannyAnimation\")\r\n animationUpdater = null;\r\n\r\n /** m_dna (std::string) [READ, PERSIST] */\r\n @io.persist\r\n @type.string\r\n dna = \"\";\r\n\r\n /** m_castShadow (bool) [READWRITE, NOTIFY, PERSIST] */\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n castShadow = false;\r\n\r\n /** m_isAnimated (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n isAnimated = false;\r\n\r\n /** m_dynamicBoundingSphereEnabled (bool) [READ, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n dynamicBoundingSphereEnabled = false;\r\n\r\n /** m_attachments (PIEveSpaceObjectAttachmentVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveSpaceObjectAttachment\")\r\n attachments = [];\r\n\r\n /** m_decals (PEveSpaceObjectDecalVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveSpaceObjectDecal\")\r\n decals = [];\r\n\r\n /** m_lights (PTr2LightVector) [READ, PERSIST, NOTIFY] */\r\n @io.notify\r\n @io.persist\r\n @type.list(\"Tr2Light\")\r\n lights = [];\r\n\r\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"Tr2ExternalParameter\")\r\n externalParameters = [];\r\n\r\n /** m_controllers (PITr2ControllerVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"ITr2Controller\")\r\n controllers = [];\r\n\r\n /** m_locators (PEveLocator2Vector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveLocator2\")\r\n locators = [];\r\n\r\n /** m_mesh (Tr2MeshBasePtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"Tr2MeshBase\")\r\n mesh = null;\r\n\r\n /** m_impactOverlay (EveImpactOverlayPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"EveImpactOverlay\")\r\n impactOverlay = null;\r\n\r\n /** m_clipSphereCenter (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n clipSphereCenter = vec3.create();\r\n\r\n /** m_clipSphereFactor2 (float) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.float32\r\n clipSphereFactor2 = 0;\r\n\r\n /** m_clipSphereFactor (float) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.float32\r\n clipSphereFactor = 0;\r\n\r\n /** m_observers (PTriObserverLocalVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"TriObserverLocal\")\r\n observers = [];\r\n\r\n /** m_worldPosition (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n worldPosition = vec3.create();\r\n\r\n /** m_ballRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriQuaternionFunction\")\r\n rotationCurve = null;\r\n\r\n /** m_worldRotation (Quaternion) [READ] */\r\n @io.read\r\n @type.quat\r\n worldRotation = quat.create();\r\n\r\n /** m_modelScale (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n modelScale = 1;\r\n\r\n /** m_locatorSets (PEveLocatorSetsVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveLocatorSets\")\r\n locatorSets = [];\r\n\r\n /** m_activationStrength (float) [READWRITE] */\r\n @io.readwrite\r\n @type.float32\r\n activationStrength = 1;\r\n\r\n /** m_albedoColor (Color) [READWRITE] */\r\n @io.readwrite\r\n @type.color\r\n albedoColor = vec4.createLinear();\r\n\r\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n /** m_update (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n update = true;\r\n\r\n /** m_secondaryLightingSphereRadius (float) [READ] */\r\n @io.read\r\n @type.float32\r\n secondaryLightingSphereRadius = 0;\r\n\r\n /** m_boundingSphereCenter (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n boundingSphereCenter = vec3.create();\r\n\r\n /** m_dirtLevel (float) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.float32\r\n dirtLevel = 0;\r\n\r\n /** m_psData.customData (Vector4) [READWRITE] - script/SOF-driven custom shader data. */\r\n @io.readwrite\r\n @type.vec4\r\n customShaderData = vec4.create();\r\n\r\n /** m_lastDamageLocatorHit (int) [READ] */\r\n @io.read\r\n @type.int32\r\n lastDamageLocatorHit = -1;\r\n\r\n /** m_boundingSphereRadius (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n boundingSphereRadius = -1;\r\n\r\n /** m_boundingSphereWorldCenter (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n modelWorldPosition = vec3.create();\r\n\r\n /** m_modelTranslation (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriVectorFunction\")\r\n modelTranslationCurve = null;\r\n\r\n /** m_modelRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriQuaternionFunction\")\r\n modelRotationCurve = null;\r\n\r\n /** m_shapeEllipsoidCenter (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n shapeEllipsoidCenter = vec3.create();\r\n\r\n /** m_shapeEllipsoidRadius (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n shapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\r\n\r\n /** m_ballPosition (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriVectorFunction\")\r\n translationCurve = null;\r\n\r\n @io.read\r\n @type.mat4\r\n worldTransform = mat4.create();\r\n\r\n @io.read\r\n @type.mat4\r\n inverseWorldTransform = mat4.create();\r\n\r\n @io.read\r\n @type.mat4\r\n lastWorldTransform = mat4.create();\r\n\r\n @io.read\r\n @type.vec3\r\n worldVelocity = vec3.create();\r\n\r\n @io.readwrite\r\n @type.objectRef(\"ITr2AudGeometry\")\r\n audioGeometry = null;\r\n\r\n @type.boolean\r\n isVisible = false;\r\n\r\n #controllerVariables = new Map([\r\n [\"DirtLevel\", 0],\r\n [\"ActivationStrength\", 1],\r\n [\"ShieldDamage\", 1],\r\n [\"ArmorDamage\", 1],\r\n [\"HullDamage\", 1],\r\n [\"ClipSphereFactor\", 0],\r\n [\"ClipSphereFactor2\", 0]\r\n ]);\r\n\r\n #lastUpdateTransformTime = null;\r\n\r\n // Carbon m_lastCurveUpdateTime: stamped by the sync-side LOD gate; the async\r\n // side updates curve sets only when it matches the frame time.\r\n #lastCurveUpdateTime = 0;\r\n\r\n // Carbon m_dynamicBoundingSphere: disabled while w is -1; a future animation\r\n // updater port publishes skinned bounds here.\r\n #dynamicBoundingSphere = sph3.set(sph3.create(), 0, 0, 0, -1);\r\n\r\n // Carbon keeps the realized world sphere separate from the authored local\r\n // sphere. It is refreshed by UpdateWorldBounds after transform changes.\r\n #boundingSphereWorldRadius = -1;\r\n\r\n // Carbon visibility and mesh LOD state are runtime-only renderer results.\r\n #isInFrustum = false;\r\n\r\n #isMeshVisible = false;\r\n\r\n #lodLevelWithChildren = Tr2Lod.TR2_LOD_UNSPECIFIED;\r\n\r\n #meshScreenSize = 0;\r\n\r\n #overlayMeshAreaBlocks = [ [], [] ];\r\n\r\n #shadowMeshOpaqueAreas = [];\r\n\r\n #cachedAreaBlocksBuilt = false;\r\n\r\n // Carbon m_localAabbMin/Max: cached so GetLocalBoundingBox can answer before\r\n // LOD selection assigns a mesh (at worst it lags one frame).\r\n #localAabbMin = vec3.create();\r\n\r\n #localAabbMax = vec3.create();\r\n\r\n // Carbon m_allowLodSelection: cleared by FreezeHighDetailMesh.\r\n #allowLodSelection = true;\r\n\r\n // Carbon m_impostorMode: the impostor system that raises it is unported.\r\n #impostorMode = false;\r\n\r\n get meshLod()\r\n {\r\n return this.mesh;\r\n }\r\n\r\n set meshLod(mesh)\r\n {\r\n this.mesh = mesh ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n Initialize()\r\n {\r\n for (const controller of this.controllers)\r\n {\r\n if (!controller?.IsLinked?.())\r\n {\r\n controller?.Link?.(this);\r\n }\r\n }\r\n // Authored inherit properties propagate as part of the lifecycle so a\r\n // field-populated graph (values import, document hydration) matches the\r\n // SetInheritProperties authoring path.\r\n if (this.inheritProperties)\r\n {\r\n this.#PropagateInheritProperties();\r\n }\r\n // Carbon derives the impact overlay's damage locator count from the\r\n // \"damage\" locator set at build time; deriving it here keeps it out of\r\n // the authored values while reproducing the same live state.\r\n if (this.impactOverlay)\r\n {\r\n let damageLocatorCount = 0;\r\n for (const set of this.locatorSets)\r\n {\r\n if (set?.HasName?.(\"damage\")) damageLocatorCount += set.locators.length;\r\n }\r\n this.impactOverlay.SetDamageLocatorCount(damageLocatorCount);\r\n }\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetMesh()\r\n {\r\n return this.mesh;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n SetMesh(mesh)\r\n {\r\n this.mesh = mesh ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n AddController(controller)\r\n {\r\n this.controllers.push(controller);\r\n if (!controller?.IsLinked?.())\r\n {\r\n controller?.Link?.(this);\r\n }\r\n EveSpaceObject2.#ApplyControllerVariables(controller, this.#controllerVariables, \"SetVariable\");\r\n return controller;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n AddObserver(observer)\r\n {\r\n this.observers.push(observer);\r\n return observer;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetInheritProperties(colorSet)\r\n {\r\n if (!this.inheritProperties)\r\n {\r\n this.inheritProperties = new EveChildInheritProperties();\r\n }\r\n this.inheritProperties.SetProperties(colorSet);\r\n this.#PropagateInheritProperties();\r\n }\r\n\r\n #PropagateInheritProperties()\r\n {\r\n const properties = this.inheritProperties.GetProperties();\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetInheritProperties?.(properties);\r\n }\r\n for (const light of this.lights)\r\n {\r\n light?.SetInheritProperties?.(properties);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetEffectChildByName(name)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const child of this.effectChildren)\r\n {\r\n if ((child?.GetName?.() ?? child?.name ?? \"\") === target)\r\n {\r\n return child;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n AddToEffectChildrenList(child)\r\n {\r\n if (this.inheritProperties)\r\n {\r\n child?.SetInheritProperties?.(this.inheritProperties.GetProperties());\r\n }\r\n this.effectChildren.push(child);\r\n EveSpaceObject2.#ApplyControllerVariables(child, this.#controllerVariables, \"SetControllerVariable\");\r\n return child;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n AddLight(light)\r\n {\r\n if (this.inheritProperties)\r\n {\r\n light?.SetInheritProperties?.(this.inheritProperties.GetProperties());\r\n }\r\n this.lights.push(light);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n ClearLights()\r\n {\r\n this.lights.length = 0;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n RemoveFromEffectChildrenList(child)\r\n {\r\n const index = this.effectChildren.indexOf(child);\r\n if (index === -1)\r\n {\r\n return false;\r\n }\r\n this.effectChildren.splice(index, 1);\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetModelRotationCurve(curve)\r\n {\r\n this.modelRotationCurve = curve ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetModelRotationCurve()\r\n {\r\n return this.modelRotationCurve;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetModelTranslationCurve(curve)\r\n {\r\n this.modelTranslationCurve = curve ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetModelTranslationCurve()\r\n {\r\n return this.modelTranslationCurve;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n UpdateWorldTransform(time)\r\n {\r\n const nextTime = Number(time) || 0;\r\n if (this.#lastUpdateTransformTime === nextTime)\r\n {\r\n return false;\r\n }\r\n this.#lastUpdateTransformTime = nextTime;\r\n mat4.copy(this.lastWorldTransform, this.worldTransform);\r\n\r\n EveSpaceObject2.#UpdateCurve(this.translationCurve, nextTime, this.worldPosition, EveSpaceObject2.#zero);\r\n if (this.translationCurve?.GetValueDotAt)\r\n {\r\n this.translationCurve.GetValueDotAt(nextTime, this.worldVelocity);\r\n }\r\n else\r\n {\r\n vec3.set(this.worldVelocity, 0, 0, 0);\r\n }\r\n\r\n EveSpaceObject2.#UpdateCurve(this.rotationCurve, nextTime, this.worldRotation, EveSpaceObject2.#identityRotation);\r\n const rotation = quat.clone(this.worldRotation);\r\n if (this.modelRotationCurve)\r\n {\r\n const modelRotation = quat.create();\r\n EveSpaceObject2.#UpdateCurve(this.modelRotationCurve, nextTime, modelRotation, EveSpaceObject2.#identityRotation);\r\n // Carbon (row-vector): rotation = modelRotation * m_worldRotation - model first.\r\n quat.multiply(rotation, rotation, modelRotation);\r\n }\r\n\r\n mat4.fromQuat(this.worldTransform, rotation);\r\n if (this.modelScale !== 1)\r\n {\r\n mat4.scale(this.worldTransform, this.worldTransform, [this.modelScale, this.modelScale, this.modelScale]);\r\n }\r\n\r\n if (this.modelTranslationCurve)\r\n {\r\n const modelTranslation = vec3.create();\r\n EveSpaceObject2.#UpdateCurve(this.modelTranslationCurve, nextTime, modelTranslation, EveSpaceObject2.#zero);\r\n vec3.transformMat4(modelTranslation, modelTranslation, this.worldTransform);\r\n this.worldTransform[12] = this.worldPosition[0] + modelTranslation[0];\r\n this.worldTransform[13] = this.worldPosition[1] + modelTranslation[1];\r\n this.worldTransform[14] = this.worldPosition[2] + modelTranslation[2];\r\n }\r\n else\r\n {\r\n this.worldTransform[12] = this.worldPosition[0];\r\n this.worldTransform[13] = this.worldPosition[1];\r\n this.worldTransform[14] = this.worldPosition[2];\r\n }\r\n\r\n if (!mat4.invert(this.inverseWorldTransform, this.worldTransform))\r\n {\r\n mat4.identity(this.inverseWorldTransform);\r\n }\r\n this.UpdateWorldBounds();\r\n return true;\r\n }\r\n\r\n /**\r\n * Refreshes Carbon's realized world-space sphere from the dynamic skinned\r\n * sphere when available, otherwise from the authored local sphere.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The browser runtime refreshes the cache with world-transform updates instead of Carbon's renderer-side PrepareShaderData pass.\")\r\n UpdateWorldBounds()\r\n {\r\n const updater = this.animationUpdater;\r\n if (this.dynamicBoundingSphereEnabled && updater?.IsInitialized?.())\r\n {\r\n updater.GetDynamicBounds?.(this.#dynamicBoundingSphere, this.#localAabbMin, this.#localAabbMax);\r\n if (this.#dynamicBoundingSphere[3] > 0)\r\n {\r\n vec3.transformMat4(this.modelWorldPosition, this.#dynamicBoundingSphere, this.worldTransform);\r\n this.#boundingSphereWorldRadius = this.modelScale * this.#dynamicBoundingSphere[3];\r\n return true;\r\n }\r\n }\r\n if (this.boundingSphereRadius > 0)\r\n {\r\n vec3.transformMat4(this.modelWorldPosition, this.boundingSphereCenter, this.worldTransform);\r\n this.#boundingSphereWorldRadius = this.modelScale * this.boundingSphereRadius;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n UpdateSyncronous(updateContext = null)\r\n {\r\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\r\n this.UpdateWorldTransform(time);\r\n if (!this.update)\r\n {\r\n return false;\r\n }\r\n\r\n const observerTransform = this.GetObserverTransform();\r\n for (const observer of this.observers)\r\n {\r\n observer?.Update?.(observerTransform);\r\n }\r\n\r\n // LOD-gated curve/overlay stamp (Carbon EveSpaceObject2::UpdateSyncronous:\r\n // ShouldUpdate(m_lodLevelWithChildren, time - m_lastCurveUpdateTime) -\r\n // adapted to lodLevel, m_lodLevelWithChildren is unported). Overlay effects\r\n // receive the context time as BOTH clocks, as Carbon does; the async pass\r\n // updates curve sets only on frames stamped here.\r\n if (EveLODHelper.ShouldUpdate(this.lodLevel, time - this.#lastCurveUpdateTime))\r\n {\r\n this.#lastCurveUpdateTime = time;\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.Update?.(time, time);\r\n }\r\n }\r\n\r\n if (this.effectChildren.length)\r\n {\r\n const params = new EveChildUpdateParams();\r\n params.spaceObjectParent = this;\r\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\r\n params.activationStrength = this.activationStrength;\r\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\r\n for (const child of this.effectChildren)\r\n {\r\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\r\n child?.UpdateSyncronous?.(updateContext, params);\r\n }\r\n }\r\n\r\n this.impactOverlay?.UpdateSyncronous?.(updateContext, this);\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n UpdateAsyncronous(updateContext = null)\r\n {\r\n if (!this.update)\r\n {\r\n return 0;\r\n }\r\n\r\n const threshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetHighDetailThreshold\", \"highDetailThreshold\");\r\n const frequency = this.isVisible && threshold > 0\r\n ? Math.min(1, this.estimatedPixelDiameter / threshold)\r\n : 0;\r\n for (const controller of this.controllers)\r\n {\r\n controller?.Update?.(frequency);\r\n }\r\n\r\n // Object-level curve sets update only on frames the sync-side LOD gate\r\n // stamped, receiving the context time as BOTH realTime and simTime\r\n // (Carbon EveSpaceObject2::UpdateAsyncronous: if (m_lastCurveUpdateTime ==\r\n // time) (*it)->Update(time, time)).\r\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\r\n if (this.#lastCurveUpdateTime === time)\r\n {\r\n for (const curveSet of this.curveSets)\r\n {\r\n curveSet?.Update?.(time, time);\r\n }\r\n }\r\n\r\n for (const child of this.children)\r\n {\r\n child?.Update?.(updateContext);\r\n }\r\n\r\n if (this.effectChildren.length)\r\n {\r\n const params = new EveChildUpdateParams();\r\n params.spaceObjectParent = this;\r\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\r\n params.activationStrength = this.activationStrength;\r\n params.controllerUpdateFrequency = frequency;\r\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\r\n for (const child of this.effectChildren)\r\n {\r\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\r\n child?.UpdateAsyncronous?.(updateContext, params);\r\n }\r\n }\r\n\r\n this.impactOverlay?.UpdateAsyncronous?.(updateContext, this);\r\n return frequency;\r\n }\r\n\r\n /**\r\n * Updates Carbon's visibility, pixel-size, and mesh-LOD state, then forwards\r\n * visibility to the explicitly owned visual branches.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Native impostor, raytracing, and audio-emitter realization remain engine-owned; graph visibility and LOD state are preserved.\")\r\n UpdateVisibility(updateContext = null, _parentTransform = EveSpaceObject2.#identityTransform)\r\n {\r\n this.isVisible = false;\r\n this.#isMeshVisible = false;\r\n this.#isInFrustum = false;\r\n if (!this.display)\r\n {\r\n return false;\r\n }\r\n\r\n this.UpdateWorldBounds();\r\n this.lodLevel = Tr2Lod.TR2_LOD_LOW;\r\n this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\r\n this.#impostorMode = false;\r\n\r\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\r\n const lowThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetLowDetailThreshold\", \"lowDetailThreshold\");\r\n const mediumThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetMediumDetailThreshold\", \"mediumDetailThreshold\");\r\n const visibilityThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetVisibilityThreshold\", \"visibilityThreshold\");\r\n const lodFactor = EveSpaceObject2.#GetContextValue(updateContext, \"GetLodFactor\", \"lodFactor\") || 1;\r\n\r\n if (this.boundingSphereRadius > 0 && this.#boundingSphereWorldRadius > 0)\r\n {\r\n EveSpaceObject2.#SetSphere(\r\n EveSpaceObject2.#worldSphere,\r\n this.modelWorldPosition,\r\n this.#boundingSphereWorldRadius\r\n );\r\n if (frustum?.IsSphereVisible?.(EveSpaceObject2.#worldSphere) !== false)\r\n {\r\n this.EstimatePixelDiameter(frustum);\r\n this.#isMeshVisible = true;\r\n }\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n if (attachment?.UpdateVisibility?.(updateContext, this.worldTransform, null, 0))\r\n {\r\n this.#isMeshVisible = true;\r\n this.isVisible = true;\r\n }\r\n }\r\n\r\n if (this.DisplayChildren())\r\n {\r\n for (const child of this.children)\r\n {\r\n child?.UpdateVisibility?.(updateContext, this.worldTransform);\r\n }\r\n }\r\n\r\n if (this.GetBoundingSphere(EveSpaceObject2.#worldSphere, 1))\r\n {\r\n this.#isInFrustum = frustum?.IsSphereVisible?.(EveSpaceObject2.#worldSphere) !== false;\r\n this.estimatedPixelDiameterWithChildren = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\r\n if (this.#isInFrustum && this.estimatedPixelDiameterWithChildren >= visibilityThreshold)\r\n {\r\n this.isVisible = true;\r\n }\r\n }\r\n\r\n if (this.isVisible)\r\n {\r\n if (this.estimatedPixelDiameter > mediumThreshold) this.lodLevel = Tr2Lod.TR2_LOD_HIGH;\r\n else if (this.estimatedPixelDiameter > lowThreshold) this.lodLevel = Tr2Lod.TR2_LOD_MEDIUM;\r\n\r\n if (this.estimatedPixelDiameterWithChildren > mediumThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_HIGH;\r\n else if (this.estimatedPixelDiameterWithChildren > lowThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_MEDIUM;\r\n else this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\r\n }\r\n\r\n for (const observer of this.observers)\r\n {\r\n const target = observer?.GetObserver?.() ?? observer?.observer;\r\n target?.SetVisibility?.(this.isVisible);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.UpdateVisibility?.(updateContext, this.worldTransform, this.#lodLevelWithChildren);\r\n }\r\n\r\n if (this.mesh && this.#boundingSphereWorldRadius > 0)\r\n {\r\n EveSpaceObject2.#SetSphere(\r\n EveSpaceObject2.#worldSphere,\r\n this.modelWorldPosition,\r\n this.#boundingSphereWorldRadius\r\n );\r\n this.#meshScreenSize = EveSpaceObject2.#GetEstimatedPixelSize(frustum, EveSpaceObject2.#worldSphere) * lodFactor;\r\n if (!this.#allowLodSelection) this.#meshScreenSize = Infinity;\r\n this.mesh.UseWithScreenSize?.(this.#meshScreenSize, this.#boundingSphereWorldRadius);\r\n }\r\n return this.isVisible;\r\n }\r\n\r\n /** Collects the hull and explicitly owned Carbon child/decal renderables. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Impostor submission and decal mesh caches are engine-owned; Trinity returns the backend-neutral renderable graph.\")\r\n GetRenderables(out = [])\r\n {\r\n if (!this.display || !this.isVisible) return out;\r\n if (this.#allowLodSelection && this.#isMeshVisible)\r\n {\r\n this.mesh?.GetBoundingBox?.(this.#localAabbMin, this.#localAabbMax);\r\n }\r\n if (this.mesh && this.#isMeshVisible && this.mesh.IsLoading?.() !== true)\r\n {\r\n out.push(this);\r\n }\r\n if (this.DisplayChildren())\r\n {\r\n for (const child of this.children) child?.GetRenderables?.(out);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n if (this.DisplayChildren() || child?.IsAlwaysOn?.()) child?.GetRenderables?.(out);\r\n }\r\n if (this.mesh && this.#isMeshVisible)\r\n {\r\n const geometryResource = this.mesh.GetGeometryResource?.();\r\n if (geometryResource)\r\n {\r\n for (const decal of this.decals)\r\n {\r\n decal?.GetRenderables?.(out, null, geometryResource, this.#meshScreenSize);\r\n }\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n /** Carbon ITr2Renderable contract (EveSpaceObject2.cpp:1097-1140): activated\r\n * attachments recurse, the impact overlay contributes, the hull mesh delegates\r\n * per batch type, and TRANSPARENT routes through the distance-sorted area\r\n * path. GetBatchesFromOverlayVector (precomputed overlay area blocks) is\r\n * deferred with the overlay realization work. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Overlay area-block batches are deferred; the view position arrives via the appended render-context argument instead of Carbon's renderer global.\")\r\n GetBatches(batches, batchType, perObjectData, reason, renderContext = null)\r\n {\r\n if (!this.mesh) return false;\r\n if (this.mesh.display === false) return false;\r\n\r\n // Returns whether any batch was committed (JS addition; Carbon returns\r\n // void). The O(1) accumulator count makes the delta check free.\r\n const committedBefore = batches.GetBatchCount?.() ?? 0;\r\n\r\n if (this.activationStrength !== 0)\r\n {\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.GetBatches?.(batches, batchType, perObjectData, reason);\r\n }\r\n }\r\n\r\n this.impactOverlay?.GetBatches?.(batches, batchType, perObjectData, this.#meshScreenSize);\r\n\r\n const areas = this.mesh.GetAreas?.(batchType);\r\n if (areas)\r\n {\r\n if (batchType !== TriBatchType.TRIBATCHTYPE_TRANSPARENT)\r\n {\r\n this.mesh.GetBatches(batches, areas, perObjectData);\r\n }\r\n else\r\n {\r\n this.#GetSortedTransparentBatches(areas, batches, perObjectData, renderContext);\r\n }\r\n }\r\n\r\n // add overlay effect batches (Carbon calls this for every batch type)\r\n this.GetBatchesFromOverlayVector(batches, perObjectData, batchType, this.mesh);\r\n\r\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\r\n }\r\n\r\n // Carbon GetSortedBatchesFromMeshAreaVector (EveSpaceObject2.cpp:57-121):\r\n // object-space area bounding-box centers -> world space -> squared distance to\r\n // the view position, sorted back-to-front (descending), committed in that\r\n // order into the order-preserving TRANSPARENT accumulator. Bounding boxes come\r\n // from the geometry resource when it exposes them; a failed lookup keeps\r\n // Carbon's origin-center fallback.\r\n #GetSortedTransparentBatches(areas, batches, perObjectData, renderContext)\r\n {\r\n const geometry = this.mesh.GetGeometryResource?.() ?? null;\r\n const viewPosition = renderContext?.GetViewPosition?.();\r\n const meshIndex = this.mesh.meshIndex ?? 0;\r\n\r\n const sorted = [];\r\n for (const area of areas)\r\n {\r\n if (!area || area.GetDisplay?.() === false) continue;\r\n\r\n vec3.set(TRANSPARENT_CENTER, 0, 0, 0);\r\n if (geometry?.GetAreaBoundingBox?.(meshIndex, area.GetIndex(), TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX))\r\n {\r\n vec3.add(TRANSPARENT_CENTER, TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX);\r\n vec3.scale(TRANSPARENT_CENTER, TRANSPARENT_CENTER, 0.5);\r\n }\r\n vec3.transformMat4(TRANSPARENT_CENTER, TRANSPARENT_CENTER, this.worldTransform);\r\n\r\n const dx = (viewPosition?.[0] ?? 0) - TRANSPARENT_CENTER[0];\r\n const dy = (viewPosition?.[1] ?? 0) - TRANSPARENT_CENTER[1];\r\n const dz = (viewPosition?.[2] ?? 0) - TRANSPARENT_CENTER[2];\r\n sorted.push({ area, distance: dx * dx + dy * dy + dz * dz });\r\n }\r\n\r\n sorted.sort((a, b) => b.distance - a.distance);\r\n\r\n for (const entry of sorted)\r\n {\r\n const area = entry.area;\r\n if (!area.GetMaterialInterface?.()) continue;\r\n const batch = this.mesh.CreateGeometryBatch(geometry, area, perObjectData);\r\n if (batch) batches.Commit(batch);\r\n }\r\n }\r\n\r\n /** Rebuilds the cached overlay/shadow area-block lists from the current mesh\r\n * (Carbon RebuildCachedData, EveSpaceObject2.cpp:2077-2097, triggered there by\r\n * the geometry-resource load callback). TYPE_ALL = shadow-casting OPAQUE +\r\n * TRANSPARENT + DECAL areas; TYPE_OPAQUEONLY = shadow-casting OPAQUE; the\r\n * shadow list groups OPAQUE areas by shared material. All coalesced. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon rebuilds from the geometry-resource notify callback; the GPU-free port rebuilds lazily on first batch use from the mesh areas alone.\")\r\n RebuildCachedData()\r\n {\r\n this.ReleaseCachedData();\r\n if (!this.mesh) return;\r\n\r\n const all = this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL];\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_TRANSPARENT);\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_DECAL);\r\n this.mesh.CollectAreaBlocks(\r\n this.#overlayMeshAreaBlocks[OVERLAY_TYPE_OPAQUEONLY], TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n for (const blocks of this.#overlayMeshAreaBlocks)\r\n {\r\n TriRenderBatchAreaBlock.Optimize(blocks);\r\n }\r\n\r\n this.mesh.CollectAreaBlocksWithSharedMaterials(\r\n this.#shadowMeshOpaqueAreas, TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n for (const collector of this.#shadowMeshOpaqueAreas)\r\n {\r\n collector.Optimize();\r\n }\r\n this.#cachedAreaBlocksBuilt = true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n ReleaseCachedData()\r\n {\r\n for (const blocks of this.#overlayMeshAreaBlocks)\r\n {\r\n blocks.length = 0;\r\n }\r\n this.#shadowMeshOpaqueAreas.length = 0;\r\n this.#cachedAreaBlocksBuilt = false;\r\n }\r\n\r\n #EnsureCachedAreaBlocks()\r\n {\r\n if (!this.#cachedAreaBlocksBuilt && this.mesh) this.RebuildCachedData();\r\n }\r\n\r\n /** Carbon GetShadowBatches (EveSpaceObject2.cpp:1143-1184): one batch per\r\n * cached shared-material OPAQUE area block, using the area's own material.\r\n * Carbon bakes realized-LOD draw args; the GPU-free port defers them to the\r\n * engine via the geometry source descriptor, so shadowPixelSize travels unused\r\n * until engine LOD selection consumes it. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Realized-LOD draw args are engine-resolved from the geometry source descriptor; primitive-count gating happens at realization.\")\r\n GetShadowBatches(batches, perObjectData, _shadowPixelSize)\r\n {\r\n if (!this.mesh || this.mesh.display === false) return false;\r\n this.#EnsureCachedAreaBlocks();\r\n\r\n const geometry = this.mesh.GetGeometryResource?.() ?? null;\r\n const meshIndex = this.mesh.meshIndex ?? 0;\r\n\r\n let committed = false;\r\n for (const collector of this.#shadowMeshOpaqueAreas)\r\n {\r\n const material = collector.shaderMaterial;\r\n if (!material) continue;\r\n for (const block of collector.areaBlockVector)\r\n {\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(material);\r\n if (!batch.IsValid()) continue;\r\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n committed = batches.Commit(batch) || committed;\r\n }\r\n }\r\n return committed;\r\n }\r\n\r\n /** Carbon GetBatchesFromOverlayVector (EveSpaceObject2.cpp:1199-1285): the\r\n * impact overlay's armor-damage shader draws over the TYPE_ALL blocks at\r\n * maximum priority; each displayed overlay effect draws its per-batch-type\r\n * effects over its overlay-type blocks (OPAQUE -> TYPE_OPAQUEONLY, everything\r\n * else -> TYPE_ALL). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Generated EveMeshOverlayEffect has no method surface yet, so the per-batch-type effect selection reads its fields here until the class is promoted; realized-LOD draw args defer to the engine.\")\r\n GetBatchesFromOverlayVector(batches, perObjectData, batchType, mesh)\r\n {\r\n const impactEffect = this.impactOverlay?.GetArmorDamageShader?.(batchType) ?? null;\r\n if (!impactEffect && !this.overlayEffects.length) return false;\r\n if (!mesh) return false;\r\n this.#EnsureCachedAreaBlocks();\r\n\r\n const committedBefore = batches.GetBatchCount?.() ?? 0;\r\n\r\n const geometry = mesh.GetGeometryResource?.() ?? null;\r\n const meshIndex = mesh.meshIndex ?? 0;\r\n\r\n if (impactEffect)\r\n {\r\n for (const block of this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL])\r\n {\r\n this.#CommitBlockBatch(batches, impactEffect, geometry, meshIndex, block, perObjectData, 0xFFFFFFFF);\r\n }\r\n }\r\n\r\n for (const overlay of this.overlayEffects)\r\n {\r\n const effects = this.#OverlayEffectsFor(overlay, batchType);\r\n if (!effects) continue;\r\n\r\n const overlayType = batchType === TriBatchType.TRIBATCHTYPE_OPAQUE\r\n ? OVERLAY_TYPE_OPAQUEONLY\r\n : OVERLAY_TYPE_ALL;\r\n const blocks = this.#overlayMeshAreaBlocks[overlayType];\r\n for (const effect of effects)\r\n {\r\n for (const block of blocks)\r\n {\r\n this.#CommitBlockBatch(batches, effect, geometry, meshIndex, block, perObjectData, 0);\r\n }\r\n }\r\n }\r\n\r\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\r\n }\r\n\r\n #CommitBlockBatch(batches, material, geometry, meshIndex, block, perObjectData, priority)\r\n {\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(material);\r\n if (!batch.IsValid()) return;\r\n if (priority !== 0) batch.SetPriority(priority);\r\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n batches.Commit(batch);\r\n }\r\n\r\n // EveMeshOverlayEffect::GetEffects (display-gated, per batch type). Prefers a\r\n // promoted method surface; falls back to the generated class's fields.\r\n #OverlayEffectsFor(overlay, batchType)\r\n {\r\n if (!overlay) return null;\r\n if (typeof overlay.GetEffects === \"function\") return overlay.GetEffects(batchType) ?? null;\r\n if (overlay.display === false) return null;\r\n\r\n switch (batchType)\r\n {\r\n case TriBatchType.TRIBATCHTYPE_OPAQUE: return overlay.opaqueEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_DECAL: return overlay.decalEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_TRANSPARENT: return overlay.transparentEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_ADDITIVE: return overlay.additiveEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_DISTORTION: return overlay.distortionEffects ?? null;\r\n default: return null;\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The overlay HasTransparentArea predicate reads the generated class's transparentEffects field until the class is promoted.\")\r\n HasTransparentBatches()\r\n {\r\n if (!this.mesh) return false;\r\n if ((this.mesh.GetAreas?.(TriBatchType.TRIBATCHTYPE_TRANSPARENT)?.length ?? 0) > 0) return true;\r\n\r\n for (const overlay of this.overlayEffects)\r\n {\r\n if (overlay?.HasTransparentArea?.() ?? ((overlay?.transparentEffects?.length ?? 0) > 0)) return true;\r\n }\r\n return false;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\r\n GetSortValue(renderContext = null)\r\n {\r\n const viewPosition = renderContext?.GetViewPosition?.();\r\n const x = (viewPosition?.[0] ?? 0) - this.worldTransform[12];\r\n const y = (viewPosition?.[1] ?? 0) - this.worldTransform[13];\r\n const z = (viewPosition?.[2] ?? 0) - this.worldTransform[14];\r\n return Math.hypot(x, y, z);\r\n }\r\n\r\n /** Carbon allocates Tr2PerObjectDataWithPersistentBuffers<EveSpaceObject2>,\r\n * which calls back into the object at upload time; the GPU-free record carries\r\n * the same live object reference for the engine serializer (the space-object\r\n * Main profile) to pull current values at realization. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Persistent VS/PS device buffers are engine-owned; the record carries the object reference the engine serializer consumes.\")\r\n GetPerObjectData(accumulator = null)\r\n {\r\n const data = typeof accumulator?.Allocate === \"function\"\r\n ? accumulator.Allocate(Tr2PerObjectData)\r\n : new Tr2PerObjectData();\r\n data.object = this;\r\n return data;\r\n }\r\n\r\n /** Carbon forwards the shadow pass to the same per-object record. */\r\n @carbon.method\r\n @impl.implemented\r\n GetShadowPerObjectData(accumulator = null)\r\n {\r\n return this.GetPerObjectData(accumulator);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n DisplayChildren()\r\n {\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetObserverTransform()\r\n {\r\n return this.worldTransform;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetLocalToWorldTransform()\r\n {\r\n return this.worldTransform;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetWorldPosition()\r\n {\r\n return this.worldPosition;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetWorldRotation()\r\n {\r\n return this.worldRotation;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n FindSoundEmitter(name)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const observer of this.observers)\r\n {\r\n if (observer?.name === target)\r\n {\r\n return typeof observer.GetObserver === \"function\"\r\n ? observer.GetObserver()\r\n : observer.observer ?? null;\r\n }\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n const emitter = child?.FindSoundEmitter?.(target);\r\n if (emitter)\r\n {\r\n return emitter;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n SetMute(mute)\r\n {\r\n this.mute = !!mute;\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetMute?.(this.mute);\r\n }\r\n for (const observer of this.observers)\r\n {\r\n observer?.SetMute?.(this.mute);\r\n }\r\n }\r\n\r\n /**\r\n * Plays an animation with explicit loop, start, and speed settings\r\n * (Carbon PlayAnimationEx, MAP_METHOD_AND_WRAP_OPTIONAL_ARGS).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n PlayAnimationEx(animName, loopCount, start, speed, clearWhenDone = true)\r\n {\r\n this.#PlayAnimation(animName, true, loopCount, start, speed, clearWhenDone);\r\n }\r\n\r\n /**\r\n * Calculates the skinned bounding box under a transform (CMF path: the\r\n * local box corners transformed with perspective divide). The granny path\r\n * is unported. Returns an inverted-empty { min, max } box when dynamic\r\n * bounds are disabled, as Carbon's BoundingBoxInitialize does.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CalculateSkinnedBoundingBoxFromTransform(transform)\r\n {\r\n const min = vec3.fromValues(Infinity, Infinity, Infinity);\r\n const max = vec3.fromValues(-Infinity, -Infinity, -Infinity);\r\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource?.()?.IsUsingCMF?.())\r\n {\r\n const { min: localMin, max: localMax } = this.GetLocalBoundingBox();\r\n const corner = vec3.create();\r\n for (let index = 0; index < 8; index++)\r\n {\r\n vec3.set(\r\n corner,\r\n index & 1 ? localMax[0] : localMin[0],\r\n index & 2 ? localMax[1] : localMin[1],\r\n index & 4 ? localMax[2] : localMin[2]\r\n );\r\n vec3.transformMat4(corner, corner, transform);\r\n vec3.min(min, min, corner);\r\n vec3.max(max, max, corner);\r\n }\r\n }\r\n return { min, max };\r\n }\r\n\r\n /**\r\n * Calculates the skinned bounding sphere (CMF path: the current bounding\r\n * sphere; granny path unported). Returns (0,0,0,-1) when dynamic bounds\r\n * are disabled.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CalculateSkinnedBoundingSphere(out = vec4.create())\r\n {\r\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource?.()?.IsUsingCMF?.())\r\n {\r\n const center = this.GetBoundingSphereCenter();\r\n return vec4.set(out, center[0], center[1], center[2], this.GetBoundingSphereRadius());\r\n }\r\n return vec4.set(out, 0, 0, 0, -1);\r\n }\r\n\r\n /**\r\n * Clears all impact and damage effects on the impact overlay.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearImpactDamage()\r\n {\r\n this.impactOverlay?.Clear?.();\r\n }\r\n\r\n /**\r\n * Clears all animations on the animation updater.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearAnimations()\r\n {\r\n this.animationUpdater?.ClearAnimations?.();\r\n }\r\n\r\n /**\r\n * Creates an impact facing a position on the closest facing damage locator.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n CreateImpactFromPosition(position, direction, lifeTime, size)\r\n {\r\n const closestDamageLocator = this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\r\n return this.CreateImpact(closestDamageLocator, direction, lifeTime, size);\r\n }\r\n\r\n /**\r\n * Creates an impact effect on a damage locator through the impact overlay.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CreateImpact(damageLocatorIndex, direction, lifeTime, size)\r\n {\r\n if (this.impactOverlay)\r\n {\r\n return this.impactOverlay.CreateImpact?.(damageLocatorIndex, direction, lifeTime, size, 1, this.lodLevel, this) ?? -1;\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * Ends the current animation on the animation updater.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n EndAnimation()\r\n {\r\n this.animationUpdater?.EndAnimation?.();\r\n }\r\n\r\n /**\r\n * Freezes LOD selection at the current mesh and marks decal geometry\r\n * frozen.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n FreezeHighDetailMesh()\r\n {\r\n this.#allowLodSelection = false;\r\n for (const decal of this.decals)\r\n {\r\n decal?.SetHighDetailDecalState?.(true);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the number of damage locators on this object.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageLocatorCount()\r\n {\r\n return this.GetLocatorCount(EveSpaceObject2.#damageLocatorSetName);\r\n }\r\n\r\n /**\r\n * Gets the number of locators in a named locator set.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorCount(locatorSetName)\r\n {\r\n return this.#GetLocatorsForSet(locatorSetName)?.length ?? 0;\r\n }\r\n\r\n /**\r\n * Gets the first locator list whose set has the requested Carbon name.\r\n * The returned list remains owned by the locator set.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorsForSet(locatorSetName)\r\n {\r\n return this.#GetLocatorsForSet(locatorSetName);\r\n }\r\n\r\n /**\r\n * Gets the closest locator in a set to a world position, ignoring locator\r\n * facing. Returns -1 when the set is missing or empty.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetCloseLocatorIndex(position, locatorSetName)\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (!locators)\r\n {\r\n return -1;\r\n }\r\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\r\n const locatorPosition = vec3.create();\r\n const locatorDirection = vec3.create();\r\n let closestLength = Infinity;\r\n let closestIndex = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n this.#GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index]);\r\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\r\n if (distance < closestLength)\r\n {\r\n closestIndex = index;\r\n closestLength = distance;\r\n }\r\n }\r\n return closestIndex;\r\n }\r\n\r\n /**\r\n * Carbon's script surface maps GetGoodLocatorIndex to GetCloseLocatorIndex\r\n * (EveSpaceObject2_Blue.cpp); the internal randomized fit heuristic is not\r\n * script-exposed.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetGoodLocatorIndex(position, locatorSetName)\r\n {\r\n return this.GetCloseLocatorIndex(position, locatorSetName);\r\n }\r\n\r\n /**\r\n * Gets the local direction of an indexed damage locator, (0,0,0) for\r\n * indices out of range (Carbon script GetDamageLocatorDirection maps to\r\n * GetDamageLocatorDirectionLocal).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetDamageLocatorDirection(index, inWorldSpaceOrOut = vec3.create(), out = vec3.create())\r\n {\r\n const targetableCall = typeof inWorldSpaceOrOut === \"boolean\";\r\n const inWorldSpace = targetableCall && inWorldSpaceOrOut;\r\n if (!targetableCall) out = inWorldSpaceOrOut;\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n vec3.set(out, 0, targetableCall ? 1 : 0, 0);\r\n return targetableCall ? false : out;\r\n }\r\n const position = vec3.create();\r\n this.#GetLocatorInObjectSpace(position, out, locators[index]);\r\n if (inWorldSpace) EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\r\n return targetableCall ? true : out;\r\n }\r\n\r\n /** Internal ITriTargetable locator query, using the org-standard out-last convention. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS keeps output parameters last and returns a validity flag for targetable callers.\")\r\n GetDamageLocatorPosition(index, inWorldSpace, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n if (inWorldSpace) vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\r\n else vec3.set(out, 0, 0, 0);\r\n return false;\r\n }\r\n this.#GetLocatorInObjectSpace(out, EveSpaceObject2.#locatorDirection, locators[index]);\r\n if (inWorldSpace) vec3.transformMat4(out, out, this.worldTransform);\r\n return true;\r\n }\r\n\r\n /** Gets the closest facing damage locator for ITriTargetable consumers. */\r\n @carbon.method\r\n @impl.implemented\r\n GetClosestDamageLocatorIndex(position)\r\n {\r\n return this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\r\n }\r\n\r\n /** Ports Carbon's randomized distance/direction fit for impact variation. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"TriRand is represented by Math.random; all locator scoring remains source-faithful.\")\r\n GetGoodDamageLocatorIndex(position)\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators) return 0;\r\n\r\n const objectPosition = vec3.transformMat4(EveSpaceObject2.#objectPosition, position, this.inverseWorldTransform);\r\n let minDistance = Infinity;\r\n let maxDistance = Number.MIN_VALUE;\r\n let bestDirectionFit = 0;\r\n\r\n for (const locator of locators)\r\n {\r\n this.#GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locator);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\r\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\r\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\r\n minDistance = Math.min(minDistance, distance);\r\n maxDistance = Math.max(maxDistance, distance);\r\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\r\n bestDirectionFit = Math.max(bestDirectionFit, EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset));\r\n }\r\n\r\n const desiredFit = Math.random() * (0.25 - (1 - bestDirectionFit)) + 0.75;\r\n let bestFit = 1;\r\n let bestLocator = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n this.#GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locators[index]);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\r\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\r\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\r\n const range = maxDistance - minDistance;\r\n let scale = range > 0 ? 1 - (distance - minDistance) / range : 1;\r\n let value = 2 * scale - 1;\r\n value = value < 0 ? 1 - Math.sqrt(Math.abs(value)) : Math.sqrt(Math.abs(value)) + 1;\r\n value *= 0.5;\r\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\r\n value *= EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset);\r\n const fit = Math.abs(value - desiredFit);\r\n if (fit < bestFit)\r\n {\r\n bestFit = fit;\r\n bestLocator = index;\r\n }\r\n }\r\n return bestLocator < 0 ? this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName) : bestLocator;\r\n }\r\n\r\n /** Gets the model-scaled target radius. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRadius()\r\n {\r\n return this.GetBoundingSphereRadius();\r\n }\r\n\r\n /** Computes a miss point just outside the model silhouette. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMissPosition(hit, source, out = vec3.create())\r\n {\r\n if (this.boundingSphereRadius > 0)\r\n {\r\n vec3.copy(out, this.modelWorldPosition);\r\n if (hit && source)\r\n {\r\n vec3.subtract(EveSpaceObject2.#missOffset, hit, out);\r\n vec3.subtract(EveSpaceObject2.#missDirection, hit, source);\r\n const directionLength = vec3.length(EveSpaceObject2.#missDirection);\r\n if (directionLength) vec3.scale(EveSpaceObject2.#missDirection, EveSpaceObject2.#missDirection, 1 / directionLength);\r\n vec3.scaleAndAdd(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, EveSpaceObject2.#missDirection, -vec3.dot(EveSpaceObject2.#missDirection, EveSpaceObject2.#missOffset));\r\n const offsetLength = vec3.length(EveSpaceObject2.#missOffset);\r\n if (offsetLength) vec3.scale(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, 1 / offsetLength);\r\n vec3.scaleAndAdd(out, out, EveSpaceObject2.#missOffset, this.GetBoundingSphereRadius() * 1.125);\r\n }\r\n }\r\n else\r\n {\r\n this.GetDamageLocatorPosition(-1, true, out);\r\n }\r\n return out;\r\n }\r\n\r\n /** Gets the current target impact material. */\r\n @carbon.method\r\n @impl.implemented\r\n GetImpactConfiguration()\r\n {\r\n return this.impactOverlay?.GetImpactConfiguration?.() ?? ImpactConfiguration.IMPACT_INVALID;\r\n }\r\n\r\n /** Reports whether impacts currently use the authored shield ellipsoid. */\r\n @carbon.method\r\n @impl.implemented\r\n HasImpactConfigurationShield()\r\n {\r\n return !!this.impactOverlay?.HasShieldEllipsoid?.()\r\n && this.GetImpactConfiguration() === ImpactConfiguration.IMPACT_SHIELD;\r\n }\r\n\r\n /** Resolves a shield-ray or damage-locator collision point. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS uses an out-last signature; the ellipsoid intersection is otherwise source-faithful CPU math.\")\r\n GetImpactPosition(locator, posPrev, posNow, epsilon, out = vec3.create())\r\n {\r\n if (!this.HasImpactConfigurationShield())\r\n {\r\n this.GetDamageLocatorPosition(locator, true, out);\r\n return vec3.squaredDistance(posNow, out) < Number(epsilon);\r\n }\r\n\r\n vec3.transformMat4(EveSpaceObject2.#rayOrigin, posPrev, this.inverseWorldTransform);\r\n vec3.transformMat4(EveSpaceObject2.#rayEnd, posNow, this.inverseWorldTransform);\r\n vec3.subtract(EveSpaceObject2.#rayDirection, EveSpaceObject2.#rayEnd, EveSpaceObject2.#rayOrigin);\r\n this.#GetShapeEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii);\r\n const t = EveSpaceObject2.#IntersectEllipsoidRay(out, EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayOrigin, EveSpaceObject2.#rayDirection);\r\n if (t !== null && t >= -1 && t <= 1)\r\n {\r\n vec3.transformMat4(out, out, this.worldTransform);\r\n return true;\r\n }\r\n if (EveSpaceObject2.#IsPointInsideEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayEnd))\r\n {\r\n vec3.copy(out, posNow);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Updates an existing impact overlay entry. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateImpact(out, direction, impactIndex)\r\n {\r\n return this.impactOverlay?.UpdateImpact?.(out, direction, impactIndex) ?? false;\r\n }\r\n\r\n /**\r\n * Gets the local position of an indexed damage locator, (0,0,0) for\r\n * indices out of range.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageLocator(index, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\r\n return out;\r\n }\r\n\r\n /**\r\n * Gets the world-space position of an indexed damage locator, (0,0,0) for\r\n * indices out of range (returned untransformed, as Carbon does).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetTransformedDamageLocator(index, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\r\n return vec3.transformMat4(out, out, this.worldTransform);\r\n }\r\n\r\n /**\r\n * Checks whether this object is in impostor mode. The impostor system that\r\n * raises the flag is unported, so this reports the default until then.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n IsImpostor()\r\n {\r\n return this.#impostorMode;\r\n }\r\n\r\n /**\r\n * Gets a locator position from a named set. Out-of-range or missing-set\r\n * queries return the world translation in world space and (0,0,0) in\r\n * object space, as Carbon does.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorPositionFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (index < 0 || !locators || index >= locators.length)\r\n {\r\n if (inWorldSpace)\r\n {\r\n return vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\r\n }\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\r\n if (inWorldSpace)\r\n {\r\n vec3.transformMat4(out, out, this.worldTransform);\r\n }\r\n return out;\r\n }\r\n\r\n /**\r\n * Gets a locator direction from a named set. Out-of-range or missing-set\r\n * queries return (0,1,0), as Carbon does.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorRotationFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (index < 0 || !locators || index >= locators.length)\r\n {\r\n return vec3.set(out, 0, 1, 0);\r\n }\r\n const position = vec3.create();\r\n this.#GetLocatorInObjectSpace(position, out, locators[index]);\r\n if (inWorldSpace)\r\n {\r\n EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\r\n }\r\n return out;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n HandleControllerEvent(name)\r\n {\r\n const eventName = String(name ?? \"\");\r\n for (const controller of this.controllers)\r\n {\r\n controller?.HandleEvent?.(eventName);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.HandleControllerEvent?.(eventName);\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.HandleControllerEvent?.(eventName);\r\n }\r\n }\r\n\r\n /**\r\n * Plays an animation once, replacing the current one\r\n * (Carbon script PlayAnimation maps to PlayAnimationOnce).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n PlayAnimation(animName)\r\n {\r\n this.#PlayAnimation(animName, true, 1, 0, 1, true);\r\n }\r\n\r\n /**\r\n * Chains an animation once after the current one (Carbon ChainAnimation).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ChainAnimation(animName)\r\n {\r\n this.#PlayAnimation(animName, false, 1, 0, 1, true);\r\n }\r\n\r\n /**\r\n * Chains an animation with explicit loop, start, and speed settings\r\n * (Carbon ChainAnimationEx).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ChainAnimationEx(animName, loopCount, start, speed)\r\n {\r\n this.#PlayAnimation(animName, false, loopCount, start, speed, true);\r\n }\r\n\r\n // Carbon EveSpaceObject2::PlayAnimation: every playback wrapper funnels\r\n // into the animation updater, which owns playback state; a missing updater\r\n // is a Carbon-faithful no-op.\r\n #PlayAnimation(animName, replace, loopCount, delay, speed, clearWhenDone)\r\n {\r\n this.animationUpdater?.PlayAnimation?.(String(animName ?? \"\"), replace, loopCount, delay, speed, clearWhenDone);\r\n }\r\n\r\n /**\r\n * Recalculates the authored bounding sphere from the mesh geometry\r\n * resource. Fails when no mesh or ready geometry resource is attached.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n RebuildBoundingSphereInformation()\r\n {\r\n const mesh = this.mesh;\r\n if (!mesh)\r\n {\r\n return false;\r\n }\r\n const geometryRes = mesh.GetGeometryResource?.();\r\n if (!geometryRes || !geometryRes.IsGood?.())\r\n {\r\n return false;\r\n }\r\n geometryRes.RecalculateBoundingSphere?.();\r\n const sphere = vec4.create();\r\n geometryRes.GetBoundingSphere?.(mesh.GetMeshIndex?.() ?? 0, sphere);\r\n vec3.set(this.boundingSphereCenter, sphere[0], sphere[1], sphere[2]);\r\n this.boundingSphereRadius = sphere[3];\r\n return true;\r\n }\r\n\r\n /** Sets Carbon's authored local bounding sphere from a sph3-compatible value. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon's CcpMath::Sphere is represented by core-math sph3; object-shaped center/radius input is accepted at adapter boundaries.\")\r\n SetBoundingSphereInformation(sphere)\r\n {\r\n if (sphere?.center)\r\n {\r\n vec3.copy(this.boundingSphereCenter, sphere.center);\r\n this.boundingSphereRadius = Number(sphere.radius);\r\n }\r\n else\r\n {\r\n this.boundingSphereRadius = sph3.extract(sphere, this.boundingSphereCenter);\r\n }\r\n this.UpdateWorldBounds();\r\n return this;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetControllerVariables()\r\n {\r\n return Object.fromEntries(this.#controllerVariables);\r\n }\r\n\r\n /** Gets Carbon's most recently selected geometry LOD. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Geometry resources without multi-LOD support expose their sole browser LOD as index zero.\")\r\n GetLastUsedMeshLod()\r\n {\r\n const geometryResource = this.mesh?.GetGeometryResource?.();\r\n if (!geometryResource) return -1;\r\n if (!this.#allowLodSelection) return 0;\r\n return geometryResource.GetLodIndexForScreenSize?.(this.mesh?.GetMeshIndex?.() ?? 0, this.#meshScreenSize) ?? 0;\r\n }\r\n\r\n /**\r\n * Gets a named locator's transform (Carbon script GetLocatorTransform maps\r\n * to GetEveLocatorTransform): the identity for unknown names, the animated\r\n * bone world transform when the animation updater resolves the name, else\r\n * the authored locator transform.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetLocatorTransform(name, out = mat4.create())\r\n {\r\n const target = String(name ?? \"\");\r\n let locator = null;\r\n for (const candidate of this.locators)\r\n {\r\n if (candidate?.GetName?.() === target)\r\n {\r\n locator = candidate;\r\n break;\r\n }\r\n }\r\n if (!locator)\r\n {\r\n return mat4.identity(out);\r\n }\r\n if (this.animationUpdater?.GetBoneWorldTransform?.(target, out))\r\n {\r\n return out;\r\n }\r\n return mat4.copy(out, locator.GetTransform());\r\n }\r\n\r\n /**\r\n * Gets the local axis-aligned bounding box: dynamic skinned bounds when\r\n * enabled, else the mesh box, else the cached box (at worst it lags one\r\n * frame). With out arguments it fills them and returns true; without, it\r\n * returns { min, max }.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetLocalBoundingBox(minBounds, maxBounds)\r\n {\r\n const min = vec3.create();\r\n const max = vec3.create();\r\n const updater = this.animationUpdater;\r\n if (this.dynamicBoundingSphereEnabled && updater?.IsInitialized?.())\r\n {\r\n const sphere = vec4.create();\r\n updater.GetDynamicBounds?.(sphere, min, max);\r\n vec3.copy(this.#localAabbMin, min);\r\n vec3.copy(this.#localAabbMax, max);\r\n }\r\n else if (this.mesh?.GetBoundingBox?.(min, max))\r\n {\r\n vec3.copy(this.#localAabbMin, min);\r\n vec3.copy(this.#localAabbMax, max);\r\n }\r\n else\r\n {\r\n vec3.copy(min, this.#localAabbMin);\r\n vec3.copy(max, this.#localAabbMax);\r\n }\r\n if (minBounds && maxBounds)\r\n {\r\n vec3.copy(minBounds, min);\r\n vec3.copy(maxBounds, max);\r\n return true;\r\n }\r\n return { min, max };\r\n }\r\n\r\n /** Gets Carbon's cached local box transformed into a world-axis-aligned box. */\r\n @carbon.method\r\n @impl.adapted\r\n GetWorldBoundingBox(minBounds, maxBounds)\r\n {\r\n box3.fromBounds(EveSpaceObject2.#localBox, this.#localAabbMin, this.#localAabbMax);\r\n EveSpaceObject2.#TransformBox(EveSpaceObject2.#worldBox, EveSpaceObject2.#localBox, this.worldTransform);\r\n const min = minBounds ?? vec3.create();\r\n const max = maxBounds ?? vec3.create();\r\n vec3.set(min, EveSpaceObject2.#worldBox[0], EveSpaceObject2.#worldBox[1], EveSpaceObject2.#worldBox[2]);\r\n vec3.set(max, EveSpaceObject2.#worldBox[3], EveSpaceObject2.#worldBox[4], EveSpaceObject2.#worldBox[5]);\r\n return minBounds && maxBounds ? true : { min, max };\r\n }\r\n\r\n /** Reports whether the attached mesh has a ready geometry resource. */\r\n @carbon.method\r\n @impl.implemented\r\n IsBoundingBoxReady()\r\n {\r\n const geometryResource = this.mesh?.GetGeometryResource?.();\r\n return !!geometryResource?.IsGood?.();\r\n }\r\n\r\n /**\r\n * Gets Carbon's realized world sphere, optionally accumulated with transform\r\n * and effect children when query is EVE_BOUNDS_WITH_CHILDREN.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetBoundingSphere(out = sph3.create(), query = 0)\r\n {\r\n if (!this.UpdateWorldBounds()) return false;\r\n EveSpaceObject2.#SetSphere(out, this.modelWorldPosition, this.#boundingSphereWorldRadius);\r\n if (!query || !this.DisplayChildren()) return true;\r\n for (const child of this.children)\r\n {\r\n if (child?.GetBoundingSphere?.(EveSpaceObject2.#childSphere, query))\r\n {\r\n sph3.union(out, out, EveSpaceObject2.#childSphere);\r\n }\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n if (child?.GetBoundingSphere?.(EveSpaceObject2.#childSphere, query))\r\n {\r\n sph3.union(out, out, EveSpaceObject2.#childSphere);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /** Updates Carbon's geometry-derived on-screen pixel diameter. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"TriFrustum is supplied structurally by the active engine; both exact and estimated browser frustum methods are supported.\")\r\n EstimatePixelDiameter(frustum)\r\n {\r\n if (this.mesh?.GetBoundingBox?.(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax))\r\n {\r\n vec3.copy(this.#localAabbMin, EveSpaceObject2.#boundsMin);\r\n vec3.copy(this.#localAabbMax, EveSpaceObject2.#boundsMax);\r\n }\r\n sph3.fromBounds(EveSpaceObject2.#localSphere, this.#localAabbMin, this.#localAabbMax);\r\n sph3.transformMat4(EveSpaceObject2.#worldSphere, EveSpaceObject2.#localSphere, this.worldTransform);\r\n this.estimatedPixelDiameter = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\r\n return this.estimatedPixelDiameter;\r\n }\r\n\r\n /** Reports the result of the latest Carbon visibility update. */\r\n @carbon.method\r\n @impl.implemented\r\n IsInFrustum()\r\n {\r\n return this.#isInFrustum;\r\n }\r\n\r\n /**\r\n * Gets the bounding sphere center, preferring the dynamic skinned sphere\r\n * when one is published.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphereCenter(out = vec3.create())\r\n {\r\n if (this.#dynamicBoundingSphere[3] !== -1)\r\n {\r\n return vec3.set(out, this.#dynamicBoundingSphere[0], this.#dynamicBoundingSphere[1], this.#dynamicBoundingSphere[2]);\r\n }\r\n return vec3.copy(out, this.boundingSphereCenter);\r\n }\r\n\r\n /**\r\n * Gets the model-scaled bounding sphere radius, preferring the dynamic\r\n * skinned sphere when one is published.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphereRadius()\r\n {\r\n if (this.#dynamicBoundingSphere[3] !== -1)\r\n {\r\n return this.modelScale * this.#dynamicBoundingSphere[3];\r\n }\r\n return this.modelScale * this.boundingSphereRadius;\r\n }\r\n\r\n /**\r\n * Gets the number of mesh-bound bones. Carbon dereferences the animation\r\n * updater unchecked; CarbonEngineJS reports 0 when none is attached.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetBoneCount()\r\n {\r\n const updater = this.animationUpdater;\r\n if (!updater)\r\n {\r\n return 0;\r\n }\r\n if (updater.IsUsingCMF?.())\r\n {\r\n if (!updater.HasMeshBinding?.())\r\n {\r\n return 0;\r\n }\r\n return updater.GetSkeletonBoneIndices?.().length ?? 0;\r\n }\r\n return updater.GetMeshBindingBoneCount?.() ?? 0;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n SetImpactDamageState(shield, armor, hull, doCreateArmorImpacts = true)\r\n {\r\n this.impactOverlay?.SetDamageState?.(shield, armor, hull, doCreateArmorImpacts);\r\n this.SetControllerVariable(\"ShieldDamage\", shield);\r\n this.SetControllerVariable(\"ArmorDamage\", armor);\r\n this.SetControllerVariable(\"HullDamage\", hull);\r\n }\r\n\r\n /**\r\n * Toggles a named impact-overlay animation (boosters, hardeners, ...).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetImpactAnimation(name, enable, duration)\r\n {\r\n this.impactOverlay?.ToggleEffect?.(name, enable, duration);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetControllerVariable(name, value)\r\n {\r\n const key = String(name ?? \"\");\r\n const next = Number(value);\r\n this.#controllerVariables.set(key, next);\r\n for (const controller of this.controllers)\r\n {\r\n controller?.SetVariable?.(key, next);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetControllerVariable?.(key, next);\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.SetControllerVariable?.(key, next);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetProceduralContainerVariable(name, value)\r\n {\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetProceduralContainerVariable?.(name, value);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n StartControllers()\r\n {\r\n for (const controller of this.controllers)\r\n {\r\n controller?.Start?.();\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.StartControllers?.();\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.StartControllers?.();\r\n }\r\n }\r\n\r\n /**\r\n * Applies bone and model transforms to locators and returns\r\n * [position, rotation, boneIndex] tuples, as the Carbon script surface\r\n * does (TransformLocators maps to PyTransformLocators). Accepts either\r\n * locator records ({ position, direction, boneIndex }, Carbon's\r\n * LocatorStructureList shape) or the same [position, rotation, boneIndex]\r\n * tuple shape it returns.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n TransformLocators(locators = [])\r\n {\r\n const result = [];\r\n for (const locator of locators ?? [])\r\n {\r\n const record = Array.isArray(locator)\r\n ? { position: locator[0], rotation: locator[1], boneIndex: locator[2] }\r\n : { position: locator?.position, rotation: locator?.direction ?? locator?.rotation, boneIndex: locator?.boneIndex };\r\n const position = vec3.clone(record.position ?? EveSpaceObject2.#zero);\r\n const rotation = quat.clone(record.rotation ?? EveSpaceObject2.#identityRotation);\r\n const boneIndex = Number(record.boneIndex ?? 0);\r\n this.#TransformLocator(position, rotation, boneIndex);\r\n if (this.modelTranslationCurve || this.modelRotationCurve)\r\n {\r\n this.#ApplyModelTransform(position, rotation);\r\n }\r\n result.push([position, rotation, boneIndex]);\r\n }\r\n return result;\r\n }\r\n\r\n // Carbon Blue TransformLocator: bone-attached records pick up the mesh\r\n // bone matrix; without bone data the authored values pass through.\r\n #TransformLocator(position, rotation, boneIndex)\r\n {\r\n const updater = this.animationUpdater;\r\n if (boneIndex <= 0 || !updater?.IsInitialized?.())\r\n {\r\n return;\r\n }\r\n const bone = EveSpaceObject2.#GetBoneMatrix(updater, boneIndex);\r\n if (!bone)\r\n {\r\n return;\r\n }\r\n vec3.transformMat4(position, position, bone);\r\n const boneRotation = mat4.getRotation(quat.create(), bone);\r\n quat.multiply(rotation, boneRotation, rotation);\r\n }\r\n\r\n // Carbon Blue ApplyModelTransform samples both curves at the Be::Time()\r\n // origin (pure GetValueAt, no playback advance): translation adds, model\r\n // rotation rotates the position and pre-multiplies.\r\n #ApplyModelTransform(position, rotation)\r\n {\r\n if (this.modelTranslationCurve)\r\n {\r\n const translation = vec3.create();\r\n this.modelTranslationCurve.GetValueAt?.(0, translation);\r\n vec3.add(position, position, translation);\r\n }\r\n if (this.modelRotationCurve)\r\n {\r\n const modelRotation = quat.create();\r\n this.modelRotationCurve.GetValueAt?.(0, modelRotation);\r\n vec3.transformQuat(position, position, modelRotation);\r\n quat.multiply(rotation, modelRotation, rotation);\r\n }\r\n }\r\n\r\n // Carbon GetLocatorsForSet: first set matching the name wins.\r\n #GetLocatorsForSet(locatorSetName)\r\n {\r\n const target = String(locatorSetName ?? \"\");\r\n for (const set of this.locatorSets)\r\n {\r\n if (set?.HasName?.(target))\r\n {\r\n return set.GetLocators();\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n // Carbon GetLocatorInObjectSpace: the direction is +Y rotated by the\r\n // authored quaternion; bone-attached locators additionally apply the mesh\r\n // bone matrix. Carbon leaves the outputs untouched (caller-uninitialized)\r\n // when bone data is missing; CarbonEngineJS keeps the unskinned values.\r\n #GetLocatorInObjectSpace(outPosition, outDirection, locator)\r\n {\r\n vec3.transformQuat(outDirection, EveSpaceObject2.#unitY, locator.direction);\r\n vec3.copy(outPosition, locator.position);\r\n const updater = this.animationUpdater;\r\n if (locator.boneIndex > 0 && updater?.IsInitialized?.())\r\n {\r\n const boneCount = Number(updater.GetMeshBoneCount?.() ?? 0);\r\n if (locator.boneIndex < boneCount)\r\n {\r\n const bone = EveSpaceObject2.#GetBoneMatrix(updater, locator.boneIndex);\r\n if (bone)\r\n {\r\n vec3.transformMat4(outPosition, locator.position, bone);\r\n EveSpaceObject2.#TransformNormal(outDirection, outDirection, bone);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Carbon GetClosestLocatorIndex: facing-gated closest search; 0 when the\r\n // set is missing, -1 when no locator faces the position.\r\n #GetClosestLocatorIndex(position, locatorSetName)\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (!locators)\r\n {\r\n return 0;\r\n }\r\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\r\n const locatorPosition = vec3.create();\r\n const locatorDirection = vec3.create();\r\n let closestLength = Infinity;\r\n let closestIndex = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n this.#GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index]);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(locatorDirection, posInObjectSpace))\r\n {\r\n continue;\r\n }\r\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\r\n if (distance < closestLength)\r\n {\r\n closestIndex = index;\r\n closestLength = distance;\r\n }\r\n }\r\n return closestIndex;\r\n }\r\n\r\n static #IsLocatorFacingPosition(locatorDirection, posInObjectSpace)\r\n {\r\n const moved = vec3.subtract(vec3.create(), posInObjectSpace, locatorDirection);\r\n return vec3.squaredLength(moved) < vec3.squaredLength(posInObjectSpace);\r\n }\r\n\r\n static #TransformNormal(out, direction, matrix)\r\n {\r\n const x = direction[0];\r\n const y = direction[1];\r\n const z = direction[2];\r\n out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z;\r\n out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z;\r\n out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z;\r\n return out;\r\n }\r\n\r\n #GetShapeEllipsoid(outCenter, outRadii)\r\n {\r\n if (this.shapeEllipsoidRadius[0] > 0)\r\n {\r\n vec3.copy(outCenter, this.shapeEllipsoidCenter);\r\n vec3.copy(outRadii, this.shapeEllipsoidRadius);\r\n }\r\n else\r\n {\r\n const bounds = this.GetLocalBoundingBox(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax);\r\n if (bounds === false)\r\n {\r\n vec3.set(EveSpaceObject2.#boundsMin, -1, -1, -1);\r\n vec3.set(EveSpaceObject2.#boundsMax, 1, 1, 1);\r\n }\r\n vec3.subtract(outRadii, EveSpaceObject2.#boundsMax, EveSpaceObject2.#boundsMin);\r\n vec3.scale(outRadii, outRadii, Math.sqrt(3) * 0.5);\r\n vec3.lerp(outCenter, EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax, 0.5);\r\n }\r\n vec3.copy(this.generatedShapeEllipsoidCenter, outCenter);\r\n vec3.copy(this.generatedShapeEllipsoidRadius, outRadii);\r\n }\r\n\r\n static #GetDirectionFit(v0, v1)\r\n {\r\n const direction = -vec3.dot(v0, v1);\r\n return direction < 0\r\n ? (1 - Math.sqrt(Math.abs(direction))) * 0.5\r\n : (Math.sqrt(Math.abs(direction)) + 1) * 0.5;\r\n }\r\n\r\n static #IntersectEllipsoidRay(out, center, radii, origin, direction)\r\n {\r\n const vx = direction[0] / radii[0];\r\n const vy = direction[1] / radii[1];\r\n const vz = direction[2] / radii[2];\r\n const sx = (origin[0] - center[0]) / radii[0];\r\n const sy = (origin[1] - center[1]) / radii[1];\r\n const sz = (origin[2] - center[2]) / radii[2];\r\n const vv = vx * vx + vy * vy + vz * vz;\r\n if (!(vv > 0)) return null;\r\n const vs = vx * sx + vy * sy + vz * sz;\r\n const ss = sx * sx + sy * sy + sz * sz;\r\n let discriminant = (vs / vv) ** 2 - ss / vv + 1 / vv;\r\n if (discriminant < 0) return null;\r\n discriminant = Math.sqrt(discriminant);\r\n let t = -discriminant - vs / vv;\r\n if (t < 0) t = discriminant - vs / vv;\r\n vec3.scaleAndAdd(out, origin, direction, t);\r\n return t;\r\n }\r\n\r\n static #IsPointInsideEllipsoid(center, radii, point)\r\n {\r\n const x = (point[0] - center[0]) / radii[0];\r\n const y = (point[1] - center[1]) / radii[1];\r\n const z = (point[2] - center[2]) / radii[2];\r\n return x * x + y * y + z * z <= 1;\r\n }\r\n\r\n // Mesh bone matrices come from the animation updater; only mat4-shaped\r\n // entries are usable.\r\n static #GetBoneMatrix(updater, boneIndex)\r\n {\r\n const bones = updater.GetMeshBoneMatrixList?.();\r\n const bone = bones?.[boneIndex];\r\n return bone && bone.length >= 16 ? bone : null;\r\n }\r\n\r\n static #ApplyControllerVariables(target, variables, methodName)\r\n {\r\n const setter = target?.[methodName];\r\n if (typeof setter !== \"function\")\r\n {\r\n return;\r\n }\r\n for (const [name, value] of variables)\r\n {\r\n setter.call(target, name, value);\r\n }\r\n }\r\n\r\n static #UpdateCurve(curve, time, out, fallback)\r\n {\r\n if (!curve)\r\n {\r\n for (let index = 0; index < out.length; index++)\r\n {\r\n out[index] = fallback[index];\r\n }\r\n return out;\r\n }\r\n\r\n let result;\r\n if (typeof curve.Update === \"function\")\r\n {\r\n result = curve.Update(time, out);\r\n }\r\n else if (typeof curve.GetValueAt === \"function\")\r\n {\r\n result = curve.GetValueAt(time, out);\r\n }\r\n if ((Array.isArray(result) || ArrayBuffer.isView(result)) && result !== out)\r\n {\r\n for (let index = 0; index < out.length; index++)\r\n {\r\n out[index] = result[index];\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n static #GetContextValue(context, methodName, ...propertyNames)\r\n {\r\n const method = context?.[methodName];\r\n if (typeof method === \"function\")\r\n {\r\n return Number(method.call(context)) || 0;\r\n }\r\n for (const propertyName of propertyNames)\r\n {\r\n if (context?.[propertyName] !== undefined && context?.[propertyName] !== null)\r\n {\r\n return Number(context[propertyName]) || 0;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n static #GetPixelSize(frustum, sphere)\r\n {\r\n const method = frustum?.GetPixelSizeAccross;\r\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\r\n }\r\n\r\n static #GetEstimatedPixelSize(frustum, sphere)\r\n {\r\n const method = frustum?.GetPixelSizeAccrossEst ?? frustum?.GetPixelSizeAccross;\r\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\r\n }\r\n\r\n static #SetSphere(out, center, radius)\r\n {\r\n return sph3.set(out, center[0], center[1], center[2], radius);\r\n }\r\n\r\n // Avoid box3.transformMat4's legacy all-components-sum empty sentinel: a\r\n // valid symmetric box such as [-1,-1,-1,1,1,1] has that same sum.\r\n static #TransformBox(out, bounds, transform)\r\n {\r\n out[0] = out[1] = out[2] = Infinity;\r\n out[3] = out[4] = out[5] = -Infinity;\r\n for (let index = 0; index < 8; index++)\r\n {\r\n vec3.set(\r\n EveSpaceObject2.#boxCorner,\r\n index & 1 ? bounds[3] : bounds[0],\r\n index & 2 ? bounds[4] : bounds[1],\r\n index & 4 ? bounds[5] : bounds[2]\r\n );\r\n vec3.transformMat4(EveSpaceObject2.#boxCorner, EveSpaceObject2.#boxCorner, transform);\r\n out[0] = Math.min(out[0], EveSpaceObject2.#boxCorner[0]);\r\n out[1] = Math.min(out[1], EveSpaceObject2.#boxCorner[1]);\r\n out[2] = Math.min(out[2], EveSpaceObject2.#boxCorner[2]);\r\n out[3] = Math.max(out[3], EveSpaceObject2.#boxCorner[0]);\r\n out[4] = Math.max(out[4], EveSpaceObject2.#boxCorner[1]);\r\n out[5] = Math.max(out[5], EveSpaceObject2.#boxCorner[2]);\r\n }\r\n return out;\r\n }\r\n\r\n static #zero = Object.freeze([0, 0, 0]);\r\n\r\n static #unitY = Object.freeze([0, 1, 0]);\r\n\r\n static #locatorDirection = vec3.create();\r\n static #locatorPosition = vec3.create();\r\n static #locatorOffset = vec3.create();\r\n static #objectPosition = vec3.create();\r\n static #missOffset = vec3.create();\r\n static #missDirection = vec3.create();\r\n static #rayOrigin = vec3.create();\r\n static #rayEnd = vec3.create();\r\n static #rayDirection = vec3.create();\r\n static #ellipsoidCenter = vec3.create();\r\n static #ellipsoidRadii = vec3.create();\r\n static #boundsMin = vec3.create();\r\n static #boundsMax = vec3.create();\r\n static #childSphere = sph3.create();\r\n static #localSphere = sph3.create();\r\n static #worldSphere = sph3.create();\r\n static #localBox = box3.create();\r\n static #worldBox = box3.create();\r\n static #boxCorner = vec3.create();\r\n\r\n static #identityRotation = Object.freeze([0, 0, 0, 1]);\r\n\r\n static #identityTransform = mat4.create();\r\n\r\n static #damageLocatorSetName = \"damage\";\r\n\r\n static ReflectionMode = ReflectionMode;\r\n\r\n static Tr2Lod = Tr2Lod;\r\n\r\n static ImpactConfiguration = ImpactConfiguration;\r\n\r\n}\r\n"],"names":["TRANSPARENT_AABB_MIN","vec3","create","TRANSPARENT_AABB_MAX","TRANSPARENT_CENTER","OVERLAY_TYPE_OPAQUEONLY","OVERLAY_TYPE_ALL","_EveSpaceObject","_identity","EveSpaceObject2","EveEntity","e","_init_reflectionMode","_init_extra_reflectionMode","_init_effectChildren","_init_extra_effectChildren","_init_children","_init_extra_children","_init_name","_init_extra_name","_init_mute","_init_extra_mute","_init_inheritProperties","_init_extra_inheritProperties","_init_customMasks","_init_extra_customMasks","_init_overlayEffects","_init_extra_overlayEffects","_init_positionDelta","_init_extra_positionDelta","_init_lodLevel","_init_extra_lodLevel","_init_curveSets","_init_extra_curveSets","_init_isPickable","_init_extra_isPickable","_init_estimatedPixelDiameter","_init_extra_estimatedPixelDiameter","_init_estimatedPixelDiameterWithChildren","_init_extra_estimatedPixelDiameterWithChildren","_init_generatedShapeEllipsoidCenter","_init_extra_generatedShapeEllipsoidCenter","_init_generatedShapeEllipsoidRadius","_init_extra_generatedShapeEllipsoidRadius","_init_animationUpdater","_init_extra_animationUpdater","_init_dna","_init_extra_dna","_init_castShadow","_init_extra_castShadow","_init_isAnimated","_init_extra_isAnimated","_init_dynamicBoundingSphereEnabled","_init_extra_dynamicBoundingSphereEnabled","_init_attachments","_init_extra_attachments","_init_decals","_init_extra_decals","_init_lights","_init_extra_lights","_init_externalParameters","_init_extra_externalParameters","_init_controllers","_init_extra_controllers","_init_locators","_init_extra_locators","_init_mesh","_init_extra_mesh","_init_impactOverlay","_init_extra_impactOverlay","_init_clipSphereCenter","_init_extra_clipSphereCenter","_init_clipSphereFactor","_init_extra_clipSphereFactor","_init_clipSphereFactor2","_init_extra_clipSphereFactor2","_init_observers","_init_extra_observers","_init_worldPosition","_init_extra_worldPosition","_init_rotationCurve","_init_extra_rotationCurve","_init_worldRotation","_init_extra_worldRotation","_init_modelScale","_init_extra_modelScale","_init_locatorSets","_init_extra_locatorSets","_init_activationStrength","_init_extra_activationStrength","_init_albedoColor","_init_extra_albedoColor","_init_display","_init_extra_display","_init_update","_init_extra_update","_init_secondaryLightingSphereRadius","_init_extra_secondaryLightingSphereRadius","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_dirtLevel","_init_extra_dirtLevel","_init_customShaderData","_init_extra_customShaderData","_init_lastDamageLocatorHit","_init_extra_lastDamageLocatorHit","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_modelWorldPosition","_init_extra_modelWorldPosition","_init_modelTranslationCurve","_init_extra_modelTranslationCurve","_init_modelRotationCurve","_init_extra_modelRotationCurve","_init_shapeEllipsoidCenter","_init_extra_shapeEllipsoidCenter","_init_shapeEllipsoidRadius","_init_extra_shapeEllipsoidRadius","_init_translationCurve","_init_extra_translationCurve","_init_worldTransform","_init_extra_worldTransform","_init_inverseWorldTransform","_init_extra_inverseWorldTransform","_init_lastWorldTransform","_init_extra_lastWorldTransform","_init_worldVelocity","_init_extra_worldVelocity","_init_audioGeometry","_init_extra_audioGeometry","_init_isVisible","_init_extra_isVisible","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","persist","int32","schema","enum","list","string","readwrite","boolean","objectRef","read","float32","quat","color","vec4","mat4","carbon","method","impl","adapted","implemented","reason","reflectionMode","effectChildren","children","name","mute","inheritProperties","customMasks","overlayEffects","positionDelta","lodLevel","curveSets","isPickable","estimatedPixelDiameter","estimatedPixelDiameterWithChildren","generatedShapeEllipsoidCenter","generatedShapeEllipsoidRadius","fromValues","animationUpdater","dna","castShadow","isAnimated","dynamicBoundingSphereEnabled","attachments","decals","lights","externalParameters","controllers","locators","mesh","impactOverlay","clipSphereCenter","clipSphereFactor2","clipSphereFactor","observers","worldPosition","rotationCurve","worldRotation","modelScale","locatorSets","activationStrength","albedoColor","createLinear","display","update","secondaryLightingSphereRadius","boundingSphereCenter","dirtLevel","customShaderData","lastDamageLocatorHit","boundingSphereRadius","modelWorldPosition","modelTranslationCurve","modelRotationCurve","shapeEllipsoidCenter","shapeEllipsoidRadius","translationCurve","worldTransform","inverseWorldTransform","lastWorldTransform","worldVelocity","audioGeometry","isVisible","Map","sph3","set","Tr2Lod","TR2_LOD_UNSPECIFIED","meshLod","Initialize","controller","IsLinked","Link","damageLocatorCount","HasName","length","SetDamageLocatorCount","GetMesh","SetMesh","AddController","push","AddObserver","observer","SetInheritProperties","colorSet","EveChildInheritProperties","SetProperties","#PropagateInheritProperties","properties","GetProperties","child","light","GetEffectChildByName","target","String","GetName","AddToEffectChildrenList","AddLight","ClearLights","RemoveFromEffectChildrenList","index","indexOf","splice","SetModelRotationCurve","curve","GetModelRotationCurve","SetModelTranslationCurve","GetModelTranslationCurve","UpdateWorldTransform","time","nextTime","Number","copy","GetValueDotAt","rotation","clone","modelRotation","multiply","fromQuat","scale","modelTranslation","transformMat4","invert","identity","UpdateWorldBounds","updater","IsInitialized","GetDynamicBounds","UpdateSyncronous","updateContext","observerTransform","GetObserverTransform","Update","EveLODHelper","ShouldUpdate","overlay","params","EveChildUpdateParams","spaceObjectParent","ownerMaxSpeed","maxSpeed","localToWorldTransform","GetLocalToWorldTransform","DisplayChildren","IsAlwaysOn","UpdateAsyncronous","threshold","frequency","Math","min","curveSet","controllerUpdateFrequency","UpdateVisibility","_parentTransform","TR2_LOD_LOW","frustum","GetFrustum","lowThreshold","mediumThreshold","visibilityThreshold","lodFactor","IsSphereVisible","EstimatePixelDiameter","attachment","GetBoundingSphere","TR2_LOD_HIGH","TR2_LOD_MEDIUM","GetObserver","SetVisibility","Infinity","UseWithScreenSize","GetRenderables","out","GetBoundingBox","IsLoading","geometryResource","GetGeometryResource","decal","GetBatches","batches","batchType","perObjectData","renderContext","committedBefore","GetBatchCount","areas","GetAreas","TriBatchType","TRIBATCHTYPE_TRANSPARENT","GetBatchesFromOverlayVector","#GetSortedTransparentBatches","geometry","viewPosition","GetViewPosition","meshIndex","sorted","area","GetDisplay","GetAreaBoundingBox","GetIndex","add","dx","dy","dz","distance","sort","a","b","entry","GetMaterialInterface","batch","CreateGeometryBatch","Commit","RebuildCachedData","ReleaseCachedData","all","CollectAreaBlocks","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","blocks","TriRenderBatchAreaBlock","Optimize","CollectAreaBlocksWithSharedMaterials","collector","#EnsureCachedAreaBlocks","GetShadowBatches","_shadowPixelSize","committed","material","shaderMaterial","block","areaBlockVector","Tr2RenderBatch","SetMaterial","IsValid","SetGeometrySource","startIndex","count","SetPerObjectData","impactEffect","GetArmorDamageShader","effects","overlayType","effect","#CommitBlockBatch","priority","SetPriority","#OverlayEffectsFor","GetEffects","opaqueEffects","decalEffects","transparentEffects","TRIBATCHTYPE_ADDITIVE","additiveEffects","TRIBATCHTYPE_DISTORTION","distortionEffects","HasTransparentBatches","HasTransparentArea","GetSortValue","x","y","z","hypot","GetPerObjectData","accumulator","data","Allocate","Tr2PerObjectData","object","GetShadowPerObjectData","GetWorldPosition","GetWorldRotation","FindSoundEmitter","emitter","SetMute","PlayAnimationEx","animName","loopCount","start","speed","clearWhenDone","CalculateSkinnedBoundingBoxFromTransform","transform","max","IsUsingCMF","localMin","localMax","GetLocalBoundingBox","corner","CalculateSkinnedBoundingSphere","center","GetBoundingSphereCenter","GetBoundingSphereRadius","ClearImpactDamage","Clear","ClearAnimations","CreateImpactFromPosition","position","direction","lifeTime","size","closestDamageLocator","CreateImpact","damageLocatorIndex","EndAnimation","FreezeHighDetailMesh","SetHighDetailDecalState","GetDamageLocatorCount","GetLocatorCount","locatorSetName","GetLocatorsForSet","GetCloseLocatorIndex","posInObjectSpace","locatorPosition","locatorDirection","closestLength","closestIndex","squaredDistance","GetGoodLocatorIndex","GetDamageLocatorDirection","inWorldSpaceOrOut","targetableCall","inWorldSpace","GetDamageLocatorPosition","GetClosestDamageLocatorIndex","GetGoodDamageLocatorIndex","objectPosition","minDistance","maxDistance","MIN_VALUE","bestDirectionFit","locator","subtract","desiredFit","random","bestFit","bestLocator","range","value","sqrt","abs","fit","GetRadius","GetMissPosition","hit","source","directionLength","scaleAndAdd","dot","offsetLength","GetImpactConfiguration","ImpactConfiguration","IMPACT_INVALID","HasImpactConfigurationShield","HasShieldEllipsoid","IMPACT_SHIELD","GetImpactPosition","posPrev","posNow","epsilon","t","UpdateImpact","impactIndex","GetDamageLocator","GetTransformedDamageLocator","IsImpostor","GetLocatorPositionFromSet","GetLocatorRotationFromSet","HandleControllerEvent","eventName","HandleEvent","PlayAnimation","ChainAnimation","ChainAnimationEx","#PlayAnimation","replace","delay","RebuildBoundingSphereInformation","geometryRes","IsGood","RecalculateBoundingSphere","sphere","GetMeshIndex","SetBoundingSphereInformation","radius","extract","GetControllerVariables","Object","fromEntries","GetLastUsedMeshLod","GetLodIndexForScreenSize","GetLocatorTransform","candidate","GetBoneWorldTransform","GetTransform","minBounds","maxBounds","GetWorldBoundingBox","box3","fromBounds","IsBoundingBoxReady","query","union","IsInFrustum","GetBoneCount","HasMeshBinding","GetSkeletonBoneIndices","GetMeshBindingBoneCount","SetImpactDamageState","shield","armor","hull","doCreateArmorImpacts","SetDamageState","SetControllerVariable","SetImpactAnimation","enable","duration","ToggleEffect","key","next","SetVariable","SetProceduralContainerVariable","StartControllers","Start","TransformLocators","result","record","Array","isArray","boneIndex","#TransformLocator","bone","boneRotation","getRotation","#ApplyModelTransform","translation","GetValueAt","transformQuat","#GetLocatorsForSet","GetLocators","#GetLocatorInObjectSpace","outPosition","outDirection","boneCount","GetMeshBoneCount","#GetClosestLocatorIndex","#GetShapeEllipsoid","outCenter","outRadii","bounds","lerp","#IsLocatorFacingPosition","moved","squaredLength","#TransformNormal","matrix","#GetDirectionFit","v0","v1","#IntersectEllipsoidRay","radii","origin","vx","vy","vz","sx","sy","sz","vv","vs","ss","discriminant","#IsPointInsideEllipsoid","point","#GetBoneMatrix","bones","GetMeshBoneMatrixList","#ApplyControllerVariables","variables","methodName","setter","call","#UpdateCurve","fallback","ArrayBuffer","isView","#GetContextValue","context","propertyNames","propertyName","undefined","#GetPixelSize","GetPixelSizeAccross","#GetEstimatedPixelSize","GetPixelSizeAccrossEst","#SetSphere","#TransformBox","freeze","ReflectionMode","constructor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EveSpaceObject2.js","sources":["../../../../src/eve/spaceObject/EveSpaceObject2.js"],"sourcesContent":["// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveSpaceObject2.h\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveSpaceObject2.cpp\r\n// Source: E:\\carbonengine\\trinity\\trinity\\Eve\\SpaceObject\\EveSpaceObject2_Blue.cpp\r\nimport { carbon, impl, io, schema, type } from \"@carbonenginejs/core-types/schema\";\r\nimport { EveEntity } from \"../../generated/eve/EveEntity.js\";\r\nimport { EveChildUpdateParams } from \"../EveChildUpdateParams.js\";\r\nimport { EveChildInheritProperties } from \"../child/EveChildInheritProperties.js\";\r\nimport { box3 } from \"@carbonenginejs/core-math/box3\";\r\nimport { mat4 } from \"@carbonenginejs/core-math/mat4\";\r\nimport { quat } from \"@carbonenginejs/core-math/quat\";\r\nimport { sph3 } from \"@carbonenginejs/core-math/sph3\";\r\nimport { vec3 } from \"@carbonenginejs/core-math/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/core-math/vec4\";\r\nimport { ReflectionMode } from \"../../generated/eve/enums.js\";\r\nimport { EveComponentType, ShouldReflect } from \"../EveComponentTypes.js\";\r\nimport { ImpactConfiguration } from \"../../generated/include/enums.js\";\r\nimport { EveLODHelper, Tr2Lod } from \"../EveLODHelper.js\";\r\nimport { TriBatchType } from \"@carbonenginejs/runtime-const/graphics\";\r\nimport { Tr2PerObjectData } from \"../../trinityCore/Tr2PerObjectData.js\";\r\nimport { Tr2RenderBatch, TriRenderBatchAreaBlock } from \"../../trinityCore/Tr2RenderBatch.js\";\r\n\r\n// Static scratch for the sorted-transparent area pass (allocation rules: hot\r\n// per-frame path, copy-into, never allocate per call).\r\nconst TRANSPARENT_AABB_MIN = vec3.create();\r\nconst TRANSPARENT_AABB_MAX = vec3.create();\r\nconst TRANSPARENT_CENTER = vec3.create();\r\n\r\n// Carbon EveMeshOverlayEffect::OverlayType (EveMeshOverlayEffect.h:35-41).\r\nconst OVERLAY_TYPE_OPAQUEONLY = 0;\r\nconst OVERLAY_TYPE_ALL = 1;\r\n\r\n@type.define({ className: \"EveSpaceObject2\", family: \"eve/spaceObject\" })\r\nexport class EveSpaceObject2 extends EveEntity\r\n{\r\n\r\n /** m_reflectionMode (EntityComponents::ReflectionMode - enum ReflectionMode) [READWRITE, PERSIST, NOTIFY, ENUM] */\r\n @io.notify\r\n @io.persist\r\n @type.int32\r\n @schema.enum(\"ReflectionMode\")\r\n reflectionMode = 3;\r\n\r\n /** m_effectChildren (PIEveSpaceObjectChildVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveSpaceObjectChild\")\r\n effectChildren = [];\r\n\r\n /** m_children (PIEveTransformVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveTransform\")\r\n children = [];\r\n\r\n /** m_name (std::string) [READWRITE, NOTIFY, PERSIST] */\r\n @io.notify\r\n @io.persist\r\n @type.string\r\n name = \"\";\r\n\r\n /** m_mute (bool) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.boolean\r\n mute = false;\r\n\r\n /** m_inheritProperties (EveChildInheritPropertiesPtr) [READWRITE] */\r\n @io.readwrite\r\n @type.objectRef(\"EveChildInheritProperties\")\r\n inheritProperties = null;\r\n\r\n /** m_customMasks (PEveCustomMaskVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveCustomMask\")\r\n customMasks = [];\r\n\r\n /** m_overlayEffects (PEveMeshOverlayEffectVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveMeshOverlayEffect\")\r\n overlayEffects = [];\r\n\r\n /** m_positionDelta (Tr2BindingVector3Ptr) [READ] */\r\n @io.read\r\n @type.objectRef(\"Tr2BindingVector3\")\r\n positionDelta = null;\r\n\r\n /** m_lodLevel (Tr2Lod - enum Tr2Lod) [READ] */\r\n @io.read\r\n @type.int32\r\n @schema.enum(\"Tr2Lod\")\r\n lodLevel = -1;\r\n\r\n /** m_curveSets (PTriCurveSetVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"TriCurveSet\")\r\n curveSets = [];\r\n\r\n /** m_isPickable (bool) [READWRITE] */\r\n @io.readwrite\r\n @type.boolean\r\n isPickable = true;\r\n\r\n /** m_estimatedPixelDiameter (float) [READ] */\r\n @io.read\r\n @type.float32\r\n estimatedPixelDiameter = 0;\r\n\r\n /** m_estimatedPixelDiameterWithChildren (float) [READ] */\r\n @io.read\r\n @type.float32\r\n estimatedPixelDiameterWithChildren = 0;\r\n\r\n /** m_generatedShapeEllipsoidCenter (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n generatedShapeEllipsoidCenter = vec3.create();\r\n\r\n /** m_generatedShapeEllipsoidRadius (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n generatedShapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\r\n\r\n /** m_animationUpdater (Tr2GrannyAnimationPtr) [READ] */\r\n @io.read\r\n @type.objectRef(\"Tr2GrannyAnimation\")\r\n animationUpdater = null;\r\n\r\n /** m_dna (std::string) [READ, PERSIST] */\r\n @io.persist\r\n @type.string\r\n dna = \"\";\r\n\r\n /** m_castShadow (bool) [READWRITE, NOTIFY, PERSIST] */\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n castShadow = false;\r\n\r\n /** m_isAnimated (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n isAnimated = false;\r\n\r\n /** m_dynamicBoundingSphereEnabled (bool) [READ, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n dynamicBoundingSphereEnabled = false;\r\n\r\n /** m_attachments (PIEveSpaceObjectAttachmentVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"IEveSpaceObjectAttachment\")\r\n attachments = [];\r\n\r\n /** m_decals (PEveSpaceObjectDecalVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveSpaceObjectDecal\")\r\n decals = [];\r\n\r\n /** m_lights (PTr2LightVector) [READ, PERSIST, NOTIFY] */\r\n @io.notify\r\n @io.persist\r\n @type.list(\"Tr2Light\")\r\n lights = [];\r\n\r\n /** m_externalParameters (PTr2ExternalParameterVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"Tr2ExternalParameter\")\r\n externalParameters = [];\r\n\r\n /** m_controllers (PITr2ControllerVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"ITr2Controller\")\r\n controllers = [];\r\n\r\n /** m_locators (PEveLocator2Vector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveLocator2\")\r\n locators = [];\r\n\r\n /** m_mesh (Tr2MeshBasePtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"Tr2MeshBase\")\r\n mesh = null;\r\n\r\n /** m_impactOverlay (EveImpactOverlayPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"EveImpactOverlay\")\r\n impactOverlay = null;\r\n\r\n /** m_clipSphereCenter (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n clipSphereCenter = vec3.create();\r\n\r\n /** m_clipSphereFactor2 (float) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.float32\r\n clipSphereFactor2 = 0;\r\n\r\n /** m_clipSphereFactor (float) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.float32\r\n clipSphereFactor = 0;\r\n\r\n /** m_observers (PTriObserverLocalVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"TriObserverLocal\")\r\n observers = [];\r\n\r\n /** m_worldPosition (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n worldPosition = vec3.create();\r\n\r\n /** m_ballRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriQuaternionFunction\")\r\n rotationCurve = null;\r\n\r\n /** m_worldRotation (Quaternion) [READ] */\r\n @io.read\r\n @type.quat\r\n worldRotation = quat.create();\r\n\r\n /** m_modelScale (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n modelScale = 1;\r\n\r\n /** m_locatorSets (PEveLocatorSetsVector) [READ, PERSIST] */\r\n @io.persist\r\n @type.list(\"EveLocatorSets\")\r\n locatorSets = [];\r\n\r\n /** m_activationStrength (float) [READWRITE] */\r\n @io.readwrite\r\n @type.float32\r\n activationStrength = 1;\r\n\r\n /** m_albedoColor (Color) [READWRITE] */\r\n @io.readwrite\r\n @type.color\r\n albedoColor = vec4.createLinear();\r\n\r\n /** m_display (bool) [READWRITE, PERSIST, NOTIFY] */\r\n @io.notify\r\n @io.persist\r\n @type.boolean\r\n display = true;\r\n\r\n /** m_update (bool) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.boolean\r\n update = true;\r\n\r\n /** m_secondaryLightingSphereRadius (float) [READ] */\r\n @io.read\r\n @type.float32\r\n secondaryLightingSphereRadius = 0;\r\n\r\n /** m_boundingSphereCenter (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n boundingSphereCenter = vec3.create();\r\n\r\n /** m_dirtLevel (float) [READWRITE, NOTIFY] */\r\n @io.notify\r\n @io.readwrite\r\n @type.float32\r\n dirtLevel = 0;\r\n\r\n /** m_psData.customData (Vector4) [READWRITE] - script/SOF-driven custom shader data. */\r\n @io.readwrite\r\n @type.vec4\r\n customShaderData = vec4.create();\r\n\r\n /** m_lastDamageLocatorHit (int) [READ] */\r\n @io.read\r\n @type.int32\r\n lastDamageLocatorHit = -1;\r\n\r\n /** m_boundingSphereRadius (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n boundingSphereRadius = -1;\r\n\r\n /** m_boundingSphereWorldCenter (Vector3) [READ] */\r\n @io.read\r\n @type.vec3\r\n modelWorldPosition = vec3.create();\r\n\r\n /** m_modelTranslation (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriVectorFunction\")\r\n modelTranslationCurve = null;\r\n\r\n /** m_modelRotation (ITriQuaternionFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriQuaternionFunction\")\r\n modelRotationCurve = null;\r\n\r\n /** m_shapeEllipsoidCenter (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n shapeEllipsoidCenter = vec3.create();\r\n\r\n /** m_shapeEllipsoidRadius (Vector3) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.vec3\r\n shapeEllipsoidRadius = vec3.fromValues(-1, -1, -1);\r\n\r\n /** m_ballPosition (ITriVectorFunctionPtr) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"ITriVectorFunction\")\r\n translationCurve = null;\r\n\r\n @io.read\r\n @type.mat4\r\n worldTransform = mat4.create();\r\n\r\n @io.read\r\n @type.mat4\r\n inverseWorldTransform = mat4.create();\r\n\r\n @io.read\r\n @type.mat4\r\n lastWorldTransform = mat4.create();\r\n\r\n @io.read\r\n @type.vec3\r\n worldVelocity = vec3.create();\r\n\r\n @io.readwrite\r\n @type.objectRef(\"ITr2AudGeometry\")\r\n audioGeometry = null;\r\n\r\n @type.boolean\r\n isVisible = false;\r\n\r\n #controllerVariables = new Map([\r\n [\"DirtLevel\", 0],\r\n [\"ActivationStrength\", 1],\r\n [\"ShieldDamage\", 1],\r\n [\"ArmorDamage\", 1],\r\n [\"HullDamage\", 1],\r\n [\"ClipSphereFactor\", 0],\r\n [\"ClipSphereFactor2\", 0]\r\n ]);\r\n\r\n #lastUpdateTransformTime = null;\r\n\r\n // Carbon m_lastCurveUpdateTime: stamped by the sync-side LOD gate; the async\r\n // side updates curve sets only when it matches the frame time.\r\n #lastCurveUpdateTime = 0;\r\n\r\n // Carbon m_dynamicBoundingSphere: disabled while w is -1; a future animation\r\n // updater port publishes skinned bounds here.\r\n #dynamicBoundingSphere = sph3.set(sph3.create(), 0, 0, 0, -1);\r\n\r\n // Carbon keeps the realized world sphere separate from the authored local\r\n // sphere. It is refreshed by UpdateWorldBounds after transform changes.\r\n #boundingSphereWorldRadius = -1;\r\n\r\n // Carbon visibility and mesh LOD state are runtime-only renderer results.\r\n #isInFrustum = false;\r\n\r\n #isMeshVisible = false;\r\n\r\n #lodLevelWithChildren = Tr2Lod.TR2_LOD_UNSPECIFIED;\r\n\r\n #meshScreenSize = 0;\r\n\r\n #overlayMeshAreaBlocks = [ [], [] ];\r\n\r\n #shadowMeshOpaqueAreas = [];\r\n\r\n #cachedAreaBlocksBuilt = false;\r\n\r\n // Carbon m_localAabbMin/Max: cached so GetLocalBoundingBox can answer before\r\n // LOD selection assigns a mesh (at worst it lags one frame).\r\n #localAabbMin = vec3.create();\r\n\r\n #localAabbMax = vec3.create();\r\n\r\n // Carbon m_allowLodSelection: cleared by FreezeHighDetailMesh.\r\n #allowLodSelection = true;\r\n\r\n // Carbon m_impostorMode: the impostor system that raises it is unported.\r\n #impostorMode = false;\r\n\r\n get meshLod()\r\n {\r\n return this.mesh;\r\n }\r\n\r\n set meshLod(mesh)\r\n {\r\n this.mesh = mesh ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n Initialize()\r\n {\r\n for (const controller of this.controllers)\r\n {\r\n if (!controller?.IsLinked?.())\r\n {\r\n controller?.Link?.(this);\r\n }\r\n }\r\n // Authored inherit properties propagate as part of the lifecycle so a\r\n // field-populated graph (values import, document hydration) matches the\r\n // SetInheritProperties authoring path.\r\n if (this.inheritProperties)\r\n {\r\n this.#PropagateInheritProperties();\r\n }\r\n // Carbon derives the impact overlay's damage locator count from the\r\n // \"damage\" locator set at build time; deriving it here keeps it out of\r\n // the authored values while reproducing the same live state.\r\n if (this.impactOverlay)\r\n {\r\n let damageLocatorCount = 0;\r\n for (const set of this.locatorSets)\r\n {\r\n if (set?.HasName?.(\"damage\")) damageLocatorCount += set.locators.length;\r\n }\r\n this.impactOverlay.SetDamageLocatorCount(damageLocatorCount);\r\n }\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetMesh()\r\n {\r\n return this.mesh;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n SetMesh(mesh)\r\n {\r\n this.mesh = mesh ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n AddController(controller)\r\n {\r\n this.controllers.push(controller);\r\n if (!controller?.IsLinked?.())\r\n {\r\n controller?.Link?.(this);\r\n }\r\n EveSpaceObject2.#ApplyControllerVariables(controller, this.#controllerVariables, \"SetVariable\");\r\n return controller;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n AddObserver(observer)\r\n {\r\n this.observers.push(observer);\r\n return observer;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetInheritProperties(colorSet)\r\n {\r\n if (!this.inheritProperties)\r\n {\r\n this.inheritProperties = new EveChildInheritProperties();\r\n }\r\n this.inheritProperties.SetProperties(colorSet);\r\n this.#PropagateInheritProperties();\r\n }\r\n\r\n #PropagateInheritProperties()\r\n {\r\n const properties = this.inheritProperties.GetProperties();\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetInheritProperties?.(properties);\r\n }\r\n for (const light of this.lights)\r\n {\r\n light?.SetInheritProperties?.(properties);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetEffectChildByName(name)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const child of this.effectChildren)\r\n {\r\n if ((child?.GetName?.() ?? child?.name ?? \"\") === target)\r\n {\r\n return child;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n AddToEffectChildrenList(child)\r\n {\r\n if (this.inheritProperties)\r\n {\r\n child?.SetInheritProperties?.(this.inheritProperties.GetProperties());\r\n }\r\n this.effectChildren.push(child);\r\n EveSpaceObject2.#ApplyControllerVariables(child, this.#controllerVariables, \"SetControllerVariable\");\r\n return child;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n AddLight(light)\r\n {\r\n if (this.inheritProperties)\r\n {\r\n light?.SetInheritProperties?.(this.inheritProperties.GetProperties());\r\n }\r\n this.lights.push(light);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n ClearLights()\r\n {\r\n this.lights.length = 0;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n RemoveFromEffectChildrenList(child)\r\n {\r\n const index = this.effectChildren.indexOf(child);\r\n if (index === -1)\r\n {\r\n return false;\r\n }\r\n this.effectChildren.splice(index, 1);\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetModelRotationCurve(curve)\r\n {\r\n this.modelRotationCurve = curve ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetModelRotationCurve()\r\n {\r\n return this.modelRotationCurve;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetModelTranslationCurve(curve)\r\n {\r\n this.modelTranslationCurve = curve ?? null;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetModelTranslationCurve()\r\n {\r\n return this.modelTranslationCurve;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n UpdateWorldTransform(time)\r\n {\r\n const nextTime = Number(time) || 0;\r\n if (this.#lastUpdateTransformTime === nextTime)\r\n {\r\n return false;\r\n }\r\n this.#lastUpdateTransformTime = nextTime;\r\n mat4.copy(this.lastWorldTransform, this.worldTransform);\r\n\r\n EveSpaceObject2.#UpdateCurve(this.translationCurve, nextTime, this.worldPosition, EveSpaceObject2.#zero);\r\n if (this.translationCurve?.GetValueDotAt)\r\n {\r\n this.translationCurve.GetValueDotAt(nextTime, this.worldVelocity);\r\n }\r\n else\r\n {\r\n vec3.set(this.worldVelocity, 0, 0, 0);\r\n }\r\n\r\n EveSpaceObject2.#UpdateCurve(this.rotationCurve, nextTime, this.worldRotation, EveSpaceObject2.#identityRotation);\r\n const rotation = quat.clone(this.worldRotation);\r\n if (this.modelRotationCurve)\r\n {\r\n const modelRotation = quat.create();\r\n EveSpaceObject2.#UpdateCurve(this.modelRotationCurve, nextTime, modelRotation, EveSpaceObject2.#identityRotation);\r\n // Carbon (row-vector): rotation = modelRotation * m_worldRotation - model first.\r\n quat.multiply(rotation, rotation, modelRotation);\r\n }\r\n\r\n mat4.fromQuat(this.worldTransform, rotation);\r\n if (this.modelScale !== 1)\r\n {\r\n mat4.scale(this.worldTransform, this.worldTransform, [this.modelScale, this.modelScale, this.modelScale]);\r\n }\r\n\r\n if (this.modelTranslationCurve)\r\n {\r\n const modelTranslation = vec3.create();\r\n EveSpaceObject2.#UpdateCurve(this.modelTranslationCurve, nextTime, modelTranslation, EveSpaceObject2.#zero);\r\n vec3.transformMat4(modelTranslation, modelTranslation, this.worldTransform);\r\n this.worldTransform[12] = this.worldPosition[0] + modelTranslation[0];\r\n this.worldTransform[13] = this.worldPosition[1] + modelTranslation[1];\r\n this.worldTransform[14] = this.worldPosition[2] + modelTranslation[2];\r\n }\r\n else\r\n {\r\n this.worldTransform[12] = this.worldPosition[0];\r\n this.worldTransform[13] = this.worldPosition[1];\r\n this.worldTransform[14] = this.worldPosition[2];\r\n }\r\n\r\n if (!mat4.invert(this.inverseWorldTransform, this.worldTransform))\r\n {\r\n mat4.identity(this.inverseWorldTransform);\r\n }\r\n this.UpdateWorldBounds();\r\n return true;\r\n }\r\n\r\n /**\r\n * Refreshes Carbon's realized world-space sphere from the dynamic skinned\r\n * sphere when available, otherwise from the authored local sphere.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The browser runtime refreshes the cache with world-transform updates instead of Carbon's renderer-side PrepareShaderData pass.\")\r\n UpdateWorldBounds()\r\n {\r\n const updater = this.animationUpdater;\r\n if (this.dynamicBoundingSphereEnabled && updater?.IsInitialized?.())\r\n {\r\n updater.GetDynamicBounds?.(this.#dynamicBoundingSphere, this.#localAabbMin, this.#localAabbMax);\r\n if (this.#dynamicBoundingSphere[3] > 0)\r\n {\r\n vec3.transformMat4(this.modelWorldPosition, this.#dynamicBoundingSphere, this.worldTransform);\r\n this.#boundingSphereWorldRadius = this.modelScale * this.#dynamicBoundingSphere[3];\r\n return true;\r\n }\r\n }\r\n if (this.boundingSphereRadius > 0)\r\n {\r\n vec3.transformMat4(this.modelWorldPosition, this.boundingSphereCenter, this.worldTransform);\r\n this.#boundingSphereWorldRadius = this.modelScale * this.boundingSphereRadius;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n UpdateSyncronous(updateContext = null)\r\n {\r\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\r\n this.UpdateWorldTransform(time);\r\n if (!this.update)\r\n {\r\n return false;\r\n }\r\n\r\n const observerTransform = this.GetObserverTransform();\r\n for (const observer of this.observers)\r\n {\r\n observer?.Update?.(observerTransform);\r\n }\r\n\r\n // LOD-gated curve/overlay stamp (Carbon EveSpaceObject2::UpdateSyncronous:\r\n // ShouldUpdate(m_lodLevelWithChildren, time - m_lastCurveUpdateTime) -\r\n // adapted to lodLevel, m_lodLevelWithChildren is unported). Overlay effects\r\n // receive the context time as BOTH clocks, as Carbon does; the async pass\r\n // updates curve sets only on frames stamped here.\r\n if (EveLODHelper.ShouldUpdate(this.lodLevel, time - this.#lastCurveUpdateTime))\r\n {\r\n this.#lastCurveUpdateTime = time;\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.Update?.(time, time);\r\n }\r\n }\r\n\r\n if (this.effectChildren.length)\r\n {\r\n const params = new EveChildUpdateParams();\r\n params.spaceObjectParent = this;\r\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\r\n params.activationStrength = this.activationStrength;\r\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\r\n for (const child of this.effectChildren)\r\n {\r\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\r\n child?.UpdateSyncronous?.(updateContext, params);\r\n }\r\n }\r\n\r\n this.impactOverlay?.UpdateSyncronous?.(updateContext, this);\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n UpdateAsyncronous(updateContext = null)\r\n {\r\n if (!this.update)\r\n {\r\n return 0;\r\n }\r\n\r\n const threshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetHighDetailThreshold\", \"highDetailThreshold\");\r\n const frequency = this.isVisible && threshold > 0\r\n ? Math.min(1, this.estimatedPixelDiameter / threshold)\r\n : 0;\r\n for (const controller of this.controllers)\r\n {\r\n controller?.Update?.(frequency);\r\n }\r\n\r\n // Object-level curve sets update only on frames the sync-side LOD gate\r\n // stamped, receiving the context time as BOTH realTime and simTime\r\n // (Carbon EveSpaceObject2::UpdateAsyncronous: if (m_lastCurveUpdateTime ==\r\n // time) (*it)->Update(time, time)).\r\n const time = EveSpaceObject2.#GetContextValue(updateContext, \"GetTime\", \"currentTime\", \"time\");\r\n if (this.#lastCurveUpdateTime === time)\r\n {\r\n for (const curveSet of this.curveSets)\r\n {\r\n curveSet?.Update?.(time, time);\r\n }\r\n }\r\n\r\n for (const child of this.children)\r\n {\r\n child?.Update?.(updateContext);\r\n }\r\n\r\n if (this.effectChildren.length)\r\n {\r\n const params = new EveChildUpdateParams();\r\n params.spaceObjectParent = this;\r\n params.ownerMaxSpeed = Number(this.maxSpeed) || 0;\r\n params.activationStrength = this.activationStrength;\r\n params.controllerUpdateFrequency = frequency;\r\n mat4.copy(params.localToWorldTransform, this.GetLocalToWorldTransform());\r\n for (const child of this.effectChildren)\r\n {\r\n params.isVisible = this.display && (this.DisplayChildren() || !!child?.IsAlwaysOn?.());\r\n child?.UpdateAsyncronous?.(updateContext, params);\r\n }\r\n }\r\n\r\n this.impactOverlay?.UpdateAsyncronous?.(updateContext, this);\r\n return frequency;\r\n }\r\n\r\n /**\r\n * Updates Carbon's visibility, pixel-size, and mesh-LOD state, then forwards\r\n * visibility to the explicitly owned visual branches.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Native impostor, raytracing, and audio-emitter realization remain engine-owned; graph visibility and LOD state are preserved.\")\r\n UpdateVisibility(updateContext = null, _parentTransform = EveSpaceObject2.#identityTransform)\r\n {\r\n this.isVisible = false;\r\n this.#isMeshVisible = false;\r\n this.#isInFrustum = false;\r\n if (!this.display)\r\n {\r\n return false;\r\n }\r\n\r\n this.UpdateWorldBounds();\r\n this.lodLevel = Tr2Lod.TR2_LOD_LOW;\r\n this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\r\n this.#impostorMode = false;\r\n\r\n const frustum = updateContext?.GetFrustum?.() ?? updateContext?.frustum;\r\n const lowThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetLowDetailThreshold\", \"lowDetailThreshold\");\r\n const mediumThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetMediumDetailThreshold\", \"mediumDetailThreshold\");\r\n const visibilityThreshold = EveSpaceObject2.#GetContextValue(updateContext, \"GetVisibilityThreshold\", \"visibilityThreshold\");\r\n const lodFactor = EveSpaceObject2.#GetContextValue(updateContext, \"GetLodFactor\", \"lodFactor\") || 1;\r\n\r\n if (this.boundingSphereRadius > 0 && this.#boundingSphereWorldRadius > 0)\r\n {\r\n EveSpaceObject2.#SetSphere(\r\n EveSpaceObject2.#worldSphere,\r\n this.modelWorldPosition,\r\n this.#boundingSphereWorldRadius\r\n );\r\n if (frustum?.IsSphereVisible?.(EveSpaceObject2.#worldSphere) !== false)\r\n {\r\n this.EstimatePixelDiameter(frustum);\r\n this.#isMeshVisible = true;\r\n }\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n if (attachment?.UpdateVisibility?.(updateContext, this.worldTransform, null, 0))\r\n {\r\n this.#isMeshVisible = true;\r\n this.isVisible = true;\r\n }\r\n }\r\n\r\n if (this.DisplayChildren())\r\n {\r\n for (const child of this.children)\r\n {\r\n child?.UpdateVisibility?.(updateContext, this.worldTransform);\r\n }\r\n }\r\n\r\n if (this.GetBoundingSphere(EveSpaceObject2.#worldSphere, 1))\r\n {\r\n this.#isInFrustum = frustum?.IsSphereVisible?.(EveSpaceObject2.#worldSphere) !== false;\r\n this.estimatedPixelDiameterWithChildren = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\r\n if (this.#isInFrustum && this.estimatedPixelDiameterWithChildren >= visibilityThreshold)\r\n {\r\n this.isVisible = true;\r\n }\r\n }\r\n\r\n if (this.isVisible)\r\n {\r\n if (this.estimatedPixelDiameter > mediumThreshold) this.lodLevel = Tr2Lod.TR2_LOD_HIGH;\r\n else if (this.estimatedPixelDiameter > lowThreshold) this.lodLevel = Tr2Lod.TR2_LOD_MEDIUM;\r\n\r\n if (this.estimatedPixelDiameterWithChildren > mediumThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_HIGH;\r\n else if (this.estimatedPixelDiameterWithChildren > lowThreshold) this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_MEDIUM;\r\n else this.#lodLevelWithChildren = Tr2Lod.TR2_LOD_LOW;\r\n }\r\n\r\n for (const observer of this.observers)\r\n {\r\n const target = observer?.GetObserver?.() ?? observer?.observer;\r\n target?.SetVisibility?.(this.isVisible);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.UpdateVisibility?.(updateContext, this.worldTransform, this.#lodLevelWithChildren);\r\n }\r\n\r\n if (this.mesh && this.#boundingSphereWorldRadius > 0)\r\n {\r\n EveSpaceObject2.#SetSphere(\r\n EveSpaceObject2.#worldSphere,\r\n this.modelWorldPosition,\r\n this.#boundingSphereWorldRadius\r\n );\r\n this.#meshScreenSize = EveSpaceObject2.#GetEstimatedPixelSize(frustum, EveSpaceObject2.#worldSphere) * lodFactor;\r\n if (!this.#allowLodSelection) this.#meshScreenSize = Infinity;\r\n this.mesh.UseWithScreenSize?.(this.#meshScreenSize, this.#boundingSphereWorldRadius);\r\n }\r\n return this.isVisible;\r\n }\r\n\r\n /** Collects the hull and explicitly owned Carbon child/decal renderables. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Impostor submission and decal mesh caches are engine-owned; Trinity returns the backend-neutral renderable graph.\")\r\n GetRenderables(out = [])\r\n {\r\n if (!this.display || !this.isVisible) return out;\r\n if (this.#allowLodSelection && this.#isMeshVisible)\r\n {\r\n this.mesh?.GetBoundingBox?.(this.#localAabbMin, this.#localAabbMax);\r\n }\r\n if (this.mesh && this.#isMeshVisible && this.mesh.IsLoading?.() !== true)\r\n {\r\n out.push(this);\r\n }\r\n if (this.DisplayChildren())\r\n {\r\n for (const child of this.children) child?.GetRenderables?.(out);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n if (this.DisplayChildren() || child?.IsAlwaysOn?.()) child?.GetRenderables?.(out);\r\n }\r\n if (this.mesh && this.#isMeshVisible)\r\n {\r\n const geometryResource = this.mesh.GetGeometryResource?.();\r\n if (geometryResource)\r\n {\r\n for (const decal of this.decals)\r\n {\r\n decal?.GetRenderables?.(out, null, geometryResource, this.#meshScreenSize);\r\n }\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n /** Carbon ITr2Renderable contract (EveSpaceObject2.cpp:1097-1140): activated\r\n * attachments recurse, the impact overlay contributes, the hull mesh delegates\r\n * per batch type, and TRANSPARENT routes through the distance-sorted area\r\n * path. GetBatchesFromOverlayVector (precomputed overlay area blocks) is\r\n * deferred with the overlay realization work. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Overlay area-block batches are deferred; the view position arrives via the appended render-context argument instead of Carbon's renderer global.\")\r\n GetBatches(batches, batchType, perObjectData, reason, renderContext = null)\r\n {\r\n if (!this.mesh) return false;\r\n if (this.mesh.display === false) return false;\r\n\r\n // Returns whether any batch was committed (JS addition; Carbon returns\r\n // void). The O(1) accumulator count makes the delta check free.\r\n const committedBefore = batches.GetBatchCount?.() ?? 0;\r\n\r\n if (this.activationStrength !== 0)\r\n {\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.GetBatches?.(batches, batchType, perObjectData, reason);\r\n }\r\n }\r\n\r\n this.impactOverlay?.GetBatches?.(batches, batchType, perObjectData, this.#meshScreenSize);\r\n\r\n const areas = this.mesh.GetAreas?.(batchType);\r\n if (areas)\r\n {\r\n if (batchType !== TriBatchType.TRIBATCHTYPE_TRANSPARENT)\r\n {\r\n this.mesh.GetBatches(batches, areas, perObjectData);\r\n }\r\n else\r\n {\r\n this.#GetSortedTransparentBatches(areas, batches, perObjectData, renderContext);\r\n }\r\n }\r\n\r\n // add overlay effect batches (Carbon calls this for every batch type)\r\n this.GetBatchesFromOverlayVector(batches, perObjectData, batchType, this.mesh);\r\n\r\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\r\n }\r\n\r\n // Carbon GetSortedBatchesFromMeshAreaVector (EveSpaceObject2.cpp:57-121):\r\n // object-space area bounding-box centers -> world space -> squared distance to\r\n // the view position, sorted back-to-front (descending), committed in that\r\n // order into the order-preserving TRANSPARENT accumulator. Bounding boxes come\r\n // from the geometry resource when it exposes them; a failed lookup keeps\r\n // Carbon's origin-center fallback.\r\n #GetSortedTransparentBatches(areas, batches, perObjectData, renderContext)\r\n {\r\n const geometry = this.mesh.GetGeometryResource?.() ?? null;\r\n const viewPosition = renderContext?.GetViewPosition?.();\r\n const meshIndex = this.mesh.meshIndex ?? 0;\r\n\r\n const sorted = [];\r\n for (const area of areas)\r\n {\r\n if (!area || area.GetDisplay?.() === false) continue;\r\n\r\n vec3.set(TRANSPARENT_CENTER, 0, 0, 0);\r\n if (geometry?.GetAreaBoundingBox?.(meshIndex, area.GetIndex(), TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX))\r\n {\r\n vec3.add(TRANSPARENT_CENTER, TRANSPARENT_AABB_MIN, TRANSPARENT_AABB_MAX);\r\n vec3.scale(TRANSPARENT_CENTER, TRANSPARENT_CENTER, 0.5);\r\n }\r\n vec3.transformMat4(TRANSPARENT_CENTER, TRANSPARENT_CENTER, this.worldTransform);\r\n\r\n const dx = (viewPosition?.[0] ?? 0) - TRANSPARENT_CENTER[0];\r\n const dy = (viewPosition?.[1] ?? 0) - TRANSPARENT_CENTER[1];\r\n const dz = (viewPosition?.[2] ?? 0) - TRANSPARENT_CENTER[2];\r\n sorted.push({ area, distance: dx * dx + dy * dy + dz * dz });\r\n }\r\n\r\n sorted.sort((a, b) => b.distance - a.distance);\r\n\r\n for (const entry of sorted)\r\n {\r\n const area = entry.area;\r\n if (!area.GetMaterialInterface?.()) continue;\r\n const batch = this.mesh.CreateGeometryBatch(geometry, area, perObjectData);\r\n if (batch) batches.Commit(batch);\r\n }\r\n }\r\n\r\n /** Rebuilds the cached overlay/shadow area-block lists from the current mesh\r\n * (Carbon RebuildCachedData, EveSpaceObject2.cpp:2077-2097, triggered there by\r\n * the geometry-resource load callback). TYPE_ALL = shadow-casting OPAQUE +\r\n * TRANSPARENT + DECAL areas; TYPE_OPAQUEONLY = shadow-casting OPAQUE; the\r\n * shadow list groups OPAQUE areas by shared material. All coalesced. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon rebuilds from the geometry-resource notify callback; the GPU-free port rebuilds lazily on first batch use from the mesh areas alone.\")\r\n RebuildCachedData()\r\n {\r\n this.ReleaseCachedData();\r\n if (!this.mesh) return;\r\n\r\n const all = this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL];\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_TRANSPARENT);\r\n this.mesh.CollectAreaBlocks(all, TriBatchType.TRIBATCHTYPE_DECAL);\r\n this.mesh.CollectAreaBlocks(\r\n this.#overlayMeshAreaBlocks[OVERLAY_TYPE_OPAQUEONLY], TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n for (const blocks of this.#overlayMeshAreaBlocks)\r\n {\r\n TriRenderBatchAreaBlock.Optimize(blocks);\r\n }\r\n\r\n this.mesh.CollectAreaBlocksWithSharedMaterials(\r\n this.#shadowMeshOpaqueAreas, TriBatchType.TRIBATCHTYPE_OPAQUE);\r\n for (const collector of this.#shadowMeshOpaqueAreas)\r\n {\r\n collector.Optimize();\r\n }\r\n this.#cachedAreaBlocksBuilt = true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n ReleaseCachedData()\r\n {\r\n for (const blocks of this.#overlayMeshAreaBlocks)\r\n {\r\n blocks.length = 0;\r\n }\r\n this.#shadowMeshOpaqueAreas.length = 0;\r\n this.#cachedAreaBlocksBuilt = false;\r\n }\r\n\r\n #EnsureCachedAreaBlocks()\r\n {\r\n if (!this.#cachedAreaBlocksBuilt && this.mesh) this.RebuildCachedData();\r\n }\r\n\r\n /** Carbon GetShadowBatches (EveSpaceObject2.cpp:1143-1184): one batch per\r\n * cached shared-material OPAQUE area block, using the area's own material.\r\n * Carbon bakes realized-LOD draw args; the GPU-free port defers them to the\r\n * engine via the geometry source descriptor, so shadowPixelSize travels unused\r\n * until engine LOD selection consumes it. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Realized-LOD draw args are engine-resolved from the geometry source descriptor; primitive-count gating happens at realization.\")\r\n GetShadowBatches(batches, perObjectData, _shadowPixelSize)\r\n {\r\n if (!this.mesh || this.mesh.display === false) return false;\r\n this.#EnsureCachedAreaBlocks();\r\n\r\n const geometry = this.mesh.GetGeometryResource?.() ?? null;\r\n const meshIndex = this.mesh.meshIndex ?? 0;\r\n\r\n let committed = false;\r\n for (const collector of this.#shadowMeshOpaqueAreas)\r\n {\r\n const material = collector.shaderMaterial;\r\n if (!material) continue;\r\n for (const block of collector.areaBlockVector)\r\n {\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(material);\r\n if (!batch.IsValid()) continue;\r\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n committed = batches.Commit(batch) || committed;\r\n }\r\n }\r\n return committed;\r\n }\r\n\r\n /** Carbon GetBatchesFromOverlayVector (EveSpaceObject2.cpp:1199-1285): the\r\n * impact overlay's armor-damage shader draws over the TYPE_ALL blocks at\r\n * maximum priority; each displayed overlay effect draws its per-batch-type\r\n * effects over its overlay-type blocks (OPAQUE -> TYPE_OPAQUEONLY, everything\r\n * else -> TYPE_ALL). */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Generated EveMeshOverlayEffect has no method surface yet, so the per-batch-type effect selection reads its fields here until the class is promoted; realized-LOD draw args defer to the engine.\")\r\n GetBatchesFromOverlayVector(batches, perObjectData, batchType, mesh)\r\n {\r\n const impactEffect = this.impactOverlay?.GetArmorDamageShader?.(batchType) ?? null;\r\n if (!impactEffect && !this.overlayEffects.length) return false;\r\n if (!mesh) return false;\r\n this.#EnsureCachedAreaBlocks();\r\n\r\n const committedBefore = batches.GetBatchCount?.() ?? 0;\r\n\r\n const geometry = mesh.GetGeometryResource?.() ?? null;\r\n const meshIndex = mesh.meshIndex ?? 0;\r\n\r\n if (impactEffect)\r\n {\r\n for (const block of this.#overlayMeshAreaBlocks[OVERLAY_TYPE_ALL])\r\n {\r\n this.#CommitBlockBatch(batches, impactEffect, geometry, meshIndex, block, perObjectData, 0xFFFFFFFF);\r\n }\r\n }\r\n\r\n for (const overlay of this.overlayEffects)\r\n {\r\n const effects = this.#OverlayEffectsFor(overlay, batchType);\r\n if (!effects) continue;\r\n\r\n const overlayType = batchType === TriBatchType.TRIBATCHTYPE_OPAQUE\r\n ? OVERLAY_TYPE_OPAQUEONLY\r\n : OVERLAY_TYPE_ALL;\r\n const blocks = this.#overlayMeshAreaBlocks[overlayType];\r\n for (const effect of effects)\r\n {\r\n for (const block of blocks)\r\n {\r\n this.#CommitBlockBatch(batches, effect, geometry, meshIndex, block, perObjectData, 0);\r\n }\r\n }\r\n }\r\n\r\n return (batches.GetBatchCount?.() ?? 0) > committedBefore;\r\n }\r\n\r\n #CommitBlockBatch(batches, material, geometry, meshIndex, block, perObjectData, priority)\r\n {\r\n const batch = new Tr2RenderBatch();\r\n batch.SetMaterial(material);\r\n if (!batch.IsValid()) return;\r\n if (priority !== 0) batch.SetPriority(priority);\r\n batch.SetGeometrySource(geometry, meshIndex, block.startIndex, block.count, false);\r\n batch.SetPerObjectData(perObjectData ?? null);\r\n batches.Commit(batch);\r\n }\r\n\r\n // EveMeshOverlayEffect::GetEffects (display-gated, per batch type). Prefers a\r\n // promoted method surface; falls back to the generated class's fields.\r\n #OverlayEffectsFor(overlay, batchType)\r\n {\r\n if (!overlay) return null;\r\n if (typeof overlay.GetEffects === \"function\") return overlay.GetEffects(batchType) ?? null;\r\n if (overlay.display === false) return null;\r\n\r\n switch (batchType)\r\n {\r\n case TriBatchType.TRIBATCHTYPE_OPAQUE: return overlay.opaqueEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_DECAL: return overlay.decalEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_TRANSPARENT: return overlay.transparentEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_ADDITIVE: return overlay.additiveEffects ?? null;\r\n case TriBatchType.TRIBATCHTYPE_DISTORTION: return overlay.distortionEffects ?? null;\r\n default: return null;\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"The overlay HasTransparentArea predicate reads the generated class's transparentEffects field until the class is promoted.\")\r\n HasTransparentBatches()\r\n {\r\n if (!this.mesh) return false;\r\n if ((this.mesh.GetAreas?.(TriBatchType.TRIBATCHTYPE_TRANSPARENT)?.length ?? 0) > 0) return true;\r\n\r\n for (const overlay of this.overlayEffects)\r\n {\r\n if (overlay?.HasTransparentArea?.() ?? ((overlay?.transparentEffects?.length ?? 0) > 0)) return true;\r\n }\r\n return false;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon reads the Tr2Renderer view-position global; the relocated camera state arrives via the threaded render context.\")\r\n GetSortValue(renderContext = null)\r\n {\r\n const viewPosition = renderContext?.GetViewPosition?.();\r\n const x = (viewPosition?.[0] ?? 0) - this.worldTransform[12];\r\n const y = (viewPosition?.[1] ?? 0) - this.worldTransform[13];\r\n const z = (viewPosition?.[2] ?? 0) - this.worldTransform[14];\r\n return Math.hypot(x, y, z);\r\n }\r\n\r\n /** Carbon allocates Tr2PerObjectDataWithPersistentBuffers<EveSpaceObject2>,\r\n * which calls back into the object at upload time; the GPU-free record carries\r\n * the same live object reference for the engine serializer (the space-object\r\n * Main profile) to pull current values at realization. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Persistent VS/PS device buffers are engine-owned; the record carries the object reference the engine serializer consumes.\")\r\n GetPerObjectData(accumulator = null)\r\n {\r\n const data = typeof accumulator?.Allocate === \"function\"\r\n ? accumulator.Allocate(Tr2PerObjectData)\r\n : new Tr2PerObjectData();\r\n data.object = this;\r\n return data;\r\n }\r\n\r\n /** Carbon forwards the shadow pass to the same per-object record. */\r\n @carbon.method\r\n @impl.implemented\r\n GetShadowPerObjectData(accumulator = null)\r\n {\r\n return this.GetPerObjectData(accumulator);\r\n }\r\n\r\n /** Carbon EveSpaceObject2::GetLights (cpp:3536-3560): submits m_lights to\r\n * the light manager. Awaits the LightOwner consumption pass\r\n * (Tr2LightManager submission is unported); registration presence is the\r\n * \"LightOwner\" duck contract. */\r\n @carbon.method\r\n @impl.notImplemented\r\n GetLights(..._args)\r\n {\r\n throw new Error(\"EveSpaceObject2.GetLights is not implemented in CarbonEngineJS.\");\r\n }\r\n\r\n /** Carbon EveSpaceObject2::IsCastingShadow (cpp:1940-1990) culls against the\r\n * camera/shadow frustums; awaits the TriFrustum port (visibility pass).\r\n * Presence satisfies the \"ShadowCaster\" duck contract. */\r\n @carbon.method\r\n @impl.notImplemented\r\n IsCastingShadow(..._args)\r\n {\r\n throw new Error(\"EveSpaceObject2.IsCastingShadow is not implemented in CarbonEngineJS.\");\r\n }\r\n\r\n /** Carbon EveSpaceObject2::RegisterComponents (cpp:3568-3609): registers its\r\n * own components and its children with the scene registration container \"so\r\n * we don't have to traverse the tree every frame\". RegisterAudioGeometry\r\n * (cpp:3572-3575) is audio-engine-owned and unported. 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 if (this.lights.length)\r\n {\r\n registry.RegisterComponent(EveComponentType.LightOwner, this);\r\n }\r\n\r\n if (ShouldReflect(this.reflectionMode))\r\n {\r\n registry.RegisterComponent(EveComponentType.ReflectionRenderable, this);\r\n }\r\n\r\n if (this.castShadow)\r\n {\r\n registry.RegisterComponent(EveComponentType.ShadowCaster, this);\r\n }\r\n\r\n for (const child of this.effectChildren)\r\n {\r\n child?.Register?.(registry);\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.Register?.(registry);\r\n }\r\n }\r\n }\r\n\r\n /** Carbon EveSpaceObject2::UnRegisterComponents (cpp:3615-3638): forwards\r\n * the un-registration to the children only - EveEntity::UnRegister already\r\n * called UnRegisterAllComponents(this) first (EveEntity.cpp:90) - and does\r\n * not re-check display. UnregisterAudioGeometry (cpp:3617) is\r\n * audio-engine-owned and unported. */\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 for (const child of this.effectChildren)\r\n {\r\n child?.UnRegister?.(registry);\r\n }\r\n\r\n for (const attachment of this.attachments)\r\n {\r\n attachment?.UnRegister?.(registry);\r\n }\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n DisplayChildren()\r\n {\r\n return true;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetObserverTransform()\r\n {\r\n return this.worldTransform;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetLocalToWorldTransform()\r\n {\r\n return this.worldTransform;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetWorldPosition()\r\n {\r\n return this.worldPosition;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetWorldRotation()\r\n {\r\n return this.worldRotation;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n FindSoundEmitter(name)\r\n {\r\n const target = String(name ?? \"\");\r\n for (const observer of this.observers)\r\n {\r\n if (observer?.name === target)\r\n {\r\n return typeof observer.GetObserver === \"function\"\r\n ? observer.GetObserver()\r\n : observer.observer ?? null;\r\n }\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n const emitter = child?.FindSoundEmitter?.(target);\r\n if (emitter)\r\n {\r\n return emitter;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n SetMute(mute)\r\n {\r\n this.mute = !!mute;\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetMute?.(this.mute);\r\n }\r\n for (const observer of this.observers)\r\n {\r\n observer?.SetMute?.(this.mute);\r\n }\r\n }\r\n\r\n /**\r\n * Plays an animation with explicit loop, start, and speed settings\r\n * (Carbon PlayAnimationEx, MAP_METHOD_AND_WRAP_OPTIONAL_ARGS).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n PlayAnimationEx(animName, loopCount, start, speed, clearWhenDone = true)\r\n {\r\n this.#PlayAnimation(animName, true, loopCount, start, speed, clearWhenDone);\r\n }\r\n\r\n /**\r\n * Calculates the skinned bounding box under a transform (CMF path: the\r\n * local box corners transformed with perspective divide). The granny path\r\n * is unported. Returns an inverted-empty { min, max } box when dynamic\r\n * bounds are disabled, as Carbon's BoundingBoxInitialize does.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CalculateSkinnedBoundingBoxFromTransform(transform)\r\n {\r\n const min = vec3.fromValues(Infinity, Infinity, Infinity);\r\n const max = vec3.fromValues(-Infinity, -Infinity, -Infinity);\r\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource?.()?.IsUsingCMF?.())\r\n {\r\n const { min: localMin, max: localMax } = this.GetLocalBoundingBox();\r\n const corner = vec3.create();\r\n for (let index = 0; index < 8; index++)\r\n {\r\n vec3.set(\r\n corner,\r\n index & 1 ? localMax[0] : localMin[0],\r\n index & 2 ? localMax[1] : localMin[1],\r\n index & 4 ? localMax[2] : localMin[2]\r\n );\r\n vec3.transformMat4(corner, corner, transform);\r\n vec3.min(min, min, corner);\r\n vec3.max(max, max, corner);\r\n }\r\n }\r\n return { min, max };\r\n }\r\n\r\n /**\r\n * Calculates the skinned bounding sphere (CMF path: the current bounding\r\n * sphere; granny path unported). Returns (0,0,0,-1) when dynamic bounds\r\n * are disabled.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CalculateSkinnedBoundingSphere(out = vec4.create())\r\n {\r\n if (this.dynamicBoundingSphereEnabled && this.mesh?.GetGeometryResource?.()?.IsUsingCMF?.())\r\n {\r\n const center = this.GetBoundingSphereCenter();\r\n return vec4.set(out, center[0], center[1], center[2], this.GetBoundingSphereRadius());\r\n }\r\n return vec4.set(out, 0, 0, 0, -1);\r\n }\r\n\r\n /**\r\n * Clears all impact and damage effects on the impact overlay.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearImpactDamage()\r\n {\r\n this.impactOverlay?.Clear?.();\r\n }\r\n\r\n /**\r\n * Clears all animations on the animation updater.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ClearAnimations()\r\n {\r\n this.animationUpdater?.ClearAnimations?.();\r\n }\r\n\r\n /**\r\n * Creates an impact facing a position on the closest facing damage locator.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n CreateImpactFromPosition(position, direction, lifeTime, size)\r\n {\r\n const closestDamageLocator = this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\r\n return this.CreateImpact(closestDamageLocator, direction, lifeTime, size);\r\n }\r\n\r\n /**\r\n * Creates an impact effect on a damage locator through the impact overlay.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n CreateImpact(damageLocatorIndex, direction, lifeTime, size)\r\n {\r\n if (this.impactOverlay)\r\n {\r\n return this.impactOverlay.CreateImpact?.(damageLocatorIndex, direction, lifeTime, size, 1, this.lodLevel, this) ?? -1;\r\n }\r\n return -1;\r\n }\r\n\r\n /**\r\n * Ends the current animation on the animation updater.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n EndAnimation()\r\n {\r\n this.animationUpdater?.EndAnimation?.();\r\n }\r\n\r\n /**\r\n * Freezes LOD selection at the current mesh and marks decal geometry\r\n * frozen.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n FreezeHighDetailMesh()\r\n {\r\n this.#allowLodSelection = false;\r\n for (const decal of this.decals)\r\n {\r\n decal?.SetHighDetailDecalState?.(true);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the number of damage locators on this object.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageLocatorCount()\r\n {\r\n return this.GetLocatorCount(EveSpaceObject2.#damageLocatorSetName);\r\n }\r\n\r\n /**\r\n * Gets the number of locators in a named locator set.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorCount(locatorSetName)\r\n {\r\n return this.#GetLocatorsForSet(locatorSetName)?.length ?? 0;\r\n }\r\n\r\n /**\r\n * Gets the first locator list whose set has the requested Carbon name.\r\n * The returned list remains owned by the locator set.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorsForSet(locatorSetName)\r\n {\r\n return this.#GetLocatorsForSet(locatorSetName);\r\n }\r\n\r\n /**\r\n * Gets the closest locator in a set to a world position, ignoring locator\r\n * facing. Returns -1 when the set is missing or empty.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetCloseLocatorIndex(position, locatorSetName)\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (!locators)\r\n {\r\n return -1;\r\n }\r\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\r\n const locatorPosition = vec3.create();\r\n const locatorDirection = vec3.create();\r\n let closestLength = Infinity;\r\n let closestIndex = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n this.#GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index]);\r\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\r\n if (distance < closestLength)\r\n {\r\n closestIndex = index;\r\n closestLength = distance;\r\n }\r\n }\r\n return closestIndex;\r\n }\r\n\r\n /**\r\n * Carbon's script surface maps GetGoodLocatorIndex to GetCloseLocatorIndex\r\n * (EveSpaceObject2_Blue.cpp); the internal randomized fit heuristic is not\r\n * script-exposed.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetGoodLocatorIndex(position, locatorSetName)\r\n {\r\n return this.GetCloseLocatorIndex(position, locatorSetName);\r\n }\r\n\r\n /**\r\n * Gets the local direction of an indexed damage locator, (0,0,0) for\r\n * indices out of range (Carbon script GetDamageLocatorDirection maps to\r\n * GetDamageLocatorDirectionLocal).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetDamageLocatorDirection(index, inWorldSpaceOrOut = vec3.create(), out = vec3.create())\r\n {\r\n const targetableCall = typeof inWorldSpaceOrOut === \"boolean\";\r\n const inWorldSpace = targetableCall && inWorldSpaceOrOut;\r\n if (!targetableCall) out = inWorldSpaceOrOut;\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n vec3.set(out, 0, targetableCall ? 1 : 0, 0);\r\n return targetableCall ? false : out;\r\n }\r\n const position = vec3.create();\r\n this.#GetLocatorInObjectSpace(position, out, locators[index]);\r\n if (inWorldSpace) EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\r\n return targetableCall ? true : out;\r\n }\r\n\r\n /** Internal ITriTargetable locator query, using the org-standard out-last convention. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS keeps output parameters last and returns a validity flag for targetable callers.\")\r\n GetDamageLocatorPosition(index, inWorldSpace, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n if (inWorldSpace) vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\r\n else vec3.set(out, 0, 0, 0);\r\n return false;\r\n }\r\n this.#GetLocatorInObjectSpace(out, EveSpaceObject2.#locatorDirection, locators[index]);\r\n if (inWorldSpace) vec3.transformMat4(out, out, this.worldTransform);\r\n return true;\r\n }\r\n\r\n /** Gets the closest facing damage locator for ITriTargetable consumers. */\r\n @carbon.method\r\n @impl.implemented\r\n GetClosestDamageLocatorIndex(position)\r\n {\r\n return this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName);\r\n }\r\n\r\n /** Ports Carbon's randomized distance/direction fit for impact variation. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"TriRand is represented by Math.random; all locator scoring remains source-faithful.\")\r\n GetGoodDamageLocatorIndex(position)\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators) return 0;\r\n\r\n const objectPosition = vec3.transformMat4(EveSpaceObject2.#objectPosition, position, this.inverseWorldTransform);\r\n let minDistance = Infinity;\r\n let maxDistance = Number.MIN_VALUE;\r\n let bestDirectionFit = 0;\r\n\r\n for (const locator of locators)\r\n {\r\n this.#GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locator);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\r\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\r\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\r\n minDistance = Math.min(minDistance, distance);\r\n maxDistance = Math.max(maxDistance, distance);\r\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\r\n bestDirectionFit = Math.max(bestDirectionFit, EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset));\r\n }\r\n\r\n const desiredFit = Math.random() * (0.25 - (1 - bestDirectionFit)) + 0.75;\r\n let bestFit = 1;\r\n let bestLocator = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n this.#GetLocatorInObjectSpace(EveSpaceObject2.#locatorPosition, EveSpaceObject2.#locatorDirection, locators[index]);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(EveSpaceObject2.#locatorDirection, objectPosition)) continue;\r\n vec3.subtract(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorPosition, objectPosition);\r\n const distance = vec3.length(EveSpaceObject2.#locatorOffset);\r\n const range = maxDistance - minDistance;\r\n let scale = range > 0 ? 1 - (distance - minDistance) / range : 1;\r\n let value = 2 * scale - 1;\r\n value = value < 0 ? 1 - Math.sqrt(Math.abs(value)) : Math.sqrt(Math.abs(value)) + 1;\r\n value *= 0.5;\r\n if (distance) vec3.scale(EveSpaceObject2.#locatorOffset, EveSpaceObject2.#locatorOffset, 1 / distance);\r\n value *= EveSpaceObject2.#GetDirectionFit(EveSpaceObject2.#locatorDirection, EveSpaceObject2.#locatorOffset);\r\n const fit = Math.abs(value - desiredFit);\r\n if (fit < bestFit)\r\n {\r\n bestFit = fit;\r\n bestLocator = index;\r\n }\r\n }\r\n return bestLocator < 0 ? this.#GetClosestLocatorIndex(position, EveSpaceObject2.#damageLocatorSetName) : bestLocator;\r\n }\r\n\r\n /** Gets the model-scaled target radius. */\r\n @carbon.method\r\n @impl.implemented\r\n GetRadius()\r\n {\r\n return this.GetBoundingSphereRadius();\r\n }\r\n\r\n /** Computes a miss point just outside the model silhouette. */\r\n @carbon.method\r\n @impl.implemented\r\n GetMissPosition(hit, source, out = vec3.create())\r\n {\r\n if (this.boundingSphereRadius > 0)\r\n {\r\n vec3.copy(out, this.modelWorldPosition);\r\n if (hit && source)\r\n {\r\n vec3.subtract(EveSpaceObject2.#missOffset, hit, out);\r\n vec3.subtract(EveSpaceObject2.#missDirection, hit, source);\r\n const directionLength = vec3.length(EveSpaceObject2.#missDirection);\r\n if (directionLength) vec3.scale(EveSpaceObject2.#missDirection, EveSpaceObject2.#missDirection, 1 / directionLength);\r\n vec3.scaleAndAdd(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, EveSpaceObject2.#missDirection, -vec3.dot(EveSpaceObject2.#missDirection, EveSpaceObject2.#missOffset));\r\n const offsetLength = vec3.length(EveSpaceObject2.#missOffset);\r\n if (offsetLength) vec3.scale(EveSpaceObject2.#missOffset, EveSpaceObject2.#missOffset, 1 / offsetLength);\r\n vec3.scaleAndAdd(out, out, EveSpaceObject2.#missOffset, this.GetBoundingSphereRadius() * 1.125);\r\n }\r\n }\r\n else\r\n {\r\n this.GetDamageLocatorPosition(-1, true, out);\r\n }\r\n return out;\r\n }\r\n\r\n /** Gets the current target impact material. */\r\n @carbon.method\r\n @impl.implemented\r\n GetImpactConfiguration()\r\n {\r\n return this.impactOverlay?.GetImpactConfiguration?.() ?? ImpactConfiguration.IMPACT_INVALID;\r\n }\r\n\r\n /** Reports whether impacts currently use the authored shield ellipsoid. */\r\n @carbon.method\r\n @impl.implemented\r\n HasImpactConfigurationShield()\r\n {\r\n return !!this.impactOverlay?.HasShieldEllipsoid?.()\r\n && this.GetImpactConfiguration() === ImpactConfiguration.IMPACT_SHIELD;\r\n }\r\n\r\n /** Resolves a shield-ray or damage-locator collision point. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"CarbonEngineJS uses an out-last signature; the ellipsoid intersection is otherwise source-faithful CPU math.\")\r\n GetImpactPosition(locator, posPrev, posNow, epsilon, out = vec3.create())\r\n {\r\n if (!this.HasImpactConfigurationShield())\r\n {\r\n this.GetDamageLocatorPosition(locator, true, out);\r\n return vec3.squaredDistance(posNow, out) < Number(epsilon);\r\n }\r\n\r\n vec3.transformMat4(EveSpaceObject2.#rayOrigin, posPrev, this.inverseWorldTransform);\r\n vec3.transformMat4(EveSpaceObject2.#rayEnd, posNow, this.inverseWorldTransform);\r\n vec3.subtract(EveSpaceObject2.#rayDirection, EveSpaceObject2.#rayEnd, EveSpaceObject2.#rayOrigin);\r\n this.#GetShapeEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii);\r\n const t = EveSpaceObject2.#IntersectEllipsoidRay(out, EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayOrigin, EveSpaceObject2.#rayDirection);\r\n if (t !== null && t >= -1 && t <= 1)\r\n {\r\n vec3.transformMat4(out, out, this.worldTransform);\r\n return true;\r\n }\r\n if (EveSpaceObject2.#IsPointInsideEllipsoid(EveSpaceObject2.#ellipsoidCenter, EveSpaceObject2.#ellipsoidRadii, EveSpaceObject2.#rayEnd))\r\n {\r\n vec3.copy(out, posNow);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Updates an existing impact overlay entry. */\r\n @carbon.method\r\n @impl.implemented\r\n UpdateImpact(out, direction, impactIndex)\r\n {\r\n return this.impactOverlay?.UpdateImpact?.(out, direction, impactIndex) ?? false;\r\n }\r\n\r\n /**\r\n * Gets the local position of an indexed damage locator, (0,0,0) for\r\n * indices out of range.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetDamageLocator(index, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\r\n return out;\r\n }\r\n\r\n /**\r\n * Gets the world-space position of an indexed damage locator, (0,0,0) for\r\n * indices out of range (returned untransformed, as Carbon does).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetTransformedDamageLocator(index, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(EveSpaceObject2.#damageLocatorSetName);\r\n if (!locators || !(index >= 0 && index < locators.length))\r\n {\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\r\n return vec3.transformMat4(out, out, this.worldTransform);\r\n }\r\n\r\n /**\r\n * Checks whether this object is in impostor mode. The impostor system that\r\n * raises the flag is unported, so this reports the default until then.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n IsImpostor()\r\n {\r\n return this.#impostorMode;\r\n }\r\n\r\n /**\r\n * Gets a locator position from a named set. Out-of-range or missing-set\r\n * queries return the world translation in world space and (0,0,0) in\r\n * object space, as Carbon does.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorPositionFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (index < 0 || !locators || index >= locators.length)\r\n {\r\n if (inWorldSpace)\r\n {\r\n return vec3.set(out, this.worldTransform[12], this.worldTransform[13], this.worldTransform[14]);\r\n }\r\n return vec3.set(out, 0, 0, 0);\r\n }\r\n const direction = vec3.create();\r\n this.#GetLocatorInObjectSpace(out, direction, locators[index]);\r\n if (inWorldSpace)\r\n {\r\n vec3.transformMat4(out, out, this.worldTransform);\r\n }\r\n return out;\r\n }\r\n\r\n /**\r\n * Gets a locator direction from a named set. Out-of-range or missing-set\r\n * queries return (0,1,0), as Carbon does.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetLocatorRotationFromSet(index, inWorldSpace, locatorSetName, out = vec3.create())\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (index < 0 || !locators || index >= locators.length)\r\n {\r\n return vec3.set(out, 0, 1, 0);\r\n }\r\n const position = vec3.create();\r\n this.#GetLocatorInObjectSpace(position, out, locators[index]);\r\n if (inWorldSpace)\r\n {\r\n EveSpaceObject2.#TransformNormal(out, out, this.worldTransform);\r\n }\r\n return out;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n HandleControllerEvent(name)\r\n {\r\n const eventName = String(name ?? \"\");\r\n for (const controller of this.controllers)\r\n {\r\n controller?.HandleEvent?.(eventName);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.HandleControllerEvent?.(eventName);\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.HandleControllerEvent?.(eventName);\r\n }\r\n }\r\n\r\n /**\r\n * Plays an animation once, replacing the current one\r\n * (Carbon script PlayAnimation maps to PlayAnimationOnce).\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n PlayAnimation(animName)\r\n {\r\n this.#PlayAnimation(animName, true, 1, 0, 1, true);\r\n }\r\n\r\n /**\r\n * Chains an animation once after the current one (Carbon ChainAnimation).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ChainAnimation(animName)\r\n {\r\n this.#PlayAnimation(animName, false, 1, 0, 1, true);\r\n }\r\n\r\n /**\r\n * Chains an animation with explicit loop, start, and speed settings\r\n * (Carbon ChainAnimationEx).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n ChainAnimationEx(animName, loopCount, start, speed)\r\n {\r\n this.#PlayAnimation(animName, false, loopCount, start, speed, true);\r\n }\r\n\r\n // Carbon EveSpaceObject2::PlayAnimation: every playback wrapper funnels\r\n // into the animation updater, which owns playback state; a missing updater\r\n // is a Carbon-faithful no-op.\r\n #PlayAnimation(animName, replace, loopCount, delay, speed, clearWhenDone)\r\n {\r\n this.animationUpdater?.PlayAnimation?.(String(animName ?? \"\"), replace, loopCount, delay, speed, clearWhenDone);\r\n }\r\n\r\n /**\r\n * Recalculates the authored bounding sphere from the mesh geometry\r\n * resource. Fails when no mesh or ready geometry resource is attached.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n RebuildBoundingSphereInformation()\r\n {\r\n const mesh = this.mesh;\r\n if (!mesh)\r\n {\r\n return false;\r\n }\r\n const geometryRes = mesh.GetGeometryResource?.();\r\n if (!geometryRes || !geometryRes.IsGood?.())\r\n {\r\n return false;\r\n }\r\n geometryRes.RecalculateBoundingSphere?.();\r\n const sphere = vec4.create();\r\n geometryRes.GetBoundingSphere?.(mesh.GetMeshIndex?.() ?? 0, sphere);\r\n vec3.set(this.boundingSphereCenter, sphere[0], sphere[1], sphere[2]);\r\n this.boundingSphereRadius = sphere[3];\r\n return true;\r\n }\r\n\r\n /** Sets Carbon's authored local bounding sphere from a sph3-compatible value. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Carbon's CcpMath::Sphere is represented by core-math sph3; object-shaped center/radius input is accepted at adapter boundaries.\")\r\n SetBoundingSphereInformation(sphere)\r\n {\r\n if (sphere?.center)\r\n {\r\n vec3.copy(this.boundingSphereCenter, sphere.center);\r\n this.boundingSphereRadius = Number(sphere.radius);\r\n }\r\n else\r\n {\r\n this.boundingSphereRadius = sph3.extract(sphere, this.boundingSphereCenter);\r\n }\r\n this.UpdateWorldBounds();\r\n return this;\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n GetControllerVariables()\r\n {\r\n return Object.fromEntries(this.#controllerVariables);\r\n }\r\n\r\n /** Gets Carbon's most recently selected geometry LOD. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"Geometry resources without multi-LOD support expose their sole browser LOD as index zero.\")\r\n GetLastUsedMeshLod()\r\n {\r\n const geometryResource = this.mesh?.GetGeometryResource?.();\r\n if (!geometryResource) return -1;\r\n if (!this.#allowLodSelection) return 0;\r\n return geometryResource.GetLodIndexForScreenSize?.(this.mesh?.GetMeshIndex?.() ?? 0, this.#meshScreenSize) ?? 0;\r\n }\r\n\r\n /**\r\n * Gets a named locator's transform (Carbon script GetLocatorTransform maps\r\n * to GetEveLocatorTransform): the identity for unknown names, the animated\r\n * bone world transform when the animation updater resolves the name, else\r\n * the authored locator transform.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetLocatorTransform(name, out = mat4.create())\r\n {\r\n const target = String(name ?? \"\");\r\n let locator = null;\r\n for (const candidate of this.locators)\r\n {\r\n if (candidate?.GetName?.() === target)\r\n {\r\n locator = candidate;\r\n break;\r\n }\r\n }\r\n if (!locator)\r\n {\r\n return mat4.identity(out);\r\n }\r\n if (this.animationUpdater?.GetBoneWorldTransform?.(target, out))\r\n {\r\n return out;\r\n }\r\n return mat4.copy(out, locator.GetTransform());\r\n }\r\n\r\n /**\r\n * Gets the local axis-aligned bounding box: dynamic skinned bounds when\r\n * enabled, else the mesh box, else the cached box (at worst it lags one\r\n * frame). With out arguments it fills them and returns true; without, it\r\n * returns { min, max }.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetLocalBoundingBox(minBounds, maxBounds)\r\n {\r\n const min = vec3.create();\r\n const max = vec3.create();\r\n const updater = this.animationUpdater;\r\n if (this.dynamicBoundingSphereEnabled && updater?.IsInitialized?.())\r\n {\r\n const sphere = vec4.create();\r\n updater.GetDynamicBounds?.(sphere, min, max);\r\n vec3.copy(this.#localAabbMin, min);\r\n vec3.copy(this.#localAabbMax, max);\r\n }\r\n else if (this.mesh?.GetBoundingBox?.(min, max))\r\n {\r\n vec3.copy(this.#localAabbMin, min);\r\n vec3.copy(this.#localAabbMax, max);\r\n }\r\n else\r\n {\r\n vec3.copy(min, this.#localAabbMin);\r\n vec3.copy(max, this.#localAabbMax);\r\n }\r\n if (minBounds && maxBounds)\r\n {\r\n vec3.copy(minBounds, min);\r\n vec3.copy(maxBounds, max);\r\n return true;\r\n }\r\n return { min, max };\r\n }\r\n\r\n /** Gets Carbon's cached local box transformed into a world-axis-aligned box. */\r\n @carbon.method\r\n @impl.adapted\r\n GetWorldBoundingBox(minBounds, maxBounds)\r\n {\r\n box3.fromBounds(EveSpaceObject2.#localBox, this.#localAabbMin, this.#localAabbMax);\r\n EveSpaceObject2.#TransformBox(EveSpaceObject2.#worldBox, EveSpaceObject2.#localBox, this.worldTransform);\r\n const min = minBounds ?? vec3.create();\r\n const max = maxBounds ?? vec3.create();\r\n vec3.set(min, EveSpaceObject2.#worldBox[0], EveSpaceObject2.#worldBox[1], EveSpaceObject2.#worldBox[2]);\r\n vec3.set(max, EveSpaceObject2.#worldBox[3], EveSpaceObject2.#worldBox[4], EveSpaceObject2.#worldBox[5]);\r\n return minBounds && maxBounds ? true : { min, max };\r\n }\r\n\r\n /** Reports whether the attached mesh has a ready geometry resource. */\r\n @carbon.method\r\n @impl.implemented\r\n IsBoundingBoxReady()\r\n {\r\n const geometryResource = this.mesh?.GetGeometryResource?.();\r\n return !!geometryResource?.IsGood?.();\r\n }\r\n\r\n /**\r\n * Gets Carbon's realized world sphere, optionally accumulated with transform\r\n * and effect children when query is EVE_BOUNDS_WITH_CHILDREN.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetBoundingSphere(out = sph3.create(), query = 0)\r\n {\r\n if (!this.UpdateWorldBounds()) return false;\r\n EveSpaceObject2.#SetSphere(out, this.modelWorldPosition, this.#boundingSphereWorldRadius);\r\n if (!query || !this.DisplayChildren()) return true;\r\n for (const child of this.children)\r\n {\r\n if (child?.GetBoundingSphere?.(EveSpaceObject2.#childSphere, query))\r\n {\r\n sph3.union(out, out, EveSpaceObject2.#childSphere);\r\n }\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n if (child?.GetBoundingSphere?.(EveSpaceObject2.#childSphere, query))\r\n {\r\n sph3.union(out, out, EveSpaceObject2.#childSphere);\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n /** Updates Carbon's geometry-derived on-screen pixel diameter. */\r\n @carbon.method\r\n @impl.adapted\r\n @impl.reason(\"TriFrustum is supplied structurally by the active engine; both exact and estimated browser frustum methods are supported.\")\r\n EstimatePixelDiameter(frustum)\r\n {\r\n if (this.mesh?.GetBoundingBox?.(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax))\r\n {\r\n vec3.copy(this.#localAabbMin, EveSpaceObject2.#boundsMin);\r\n vec3.copy(this.#localAabbMax, EveSpaceObject2.#boundsMax);\r\n }\r\n sph3.fromBounds(EveSpaceObject2.#localSphere, this.#localAabbMin, this.#localAabbMax);\r\n sph3.transformMat4(EveSpaceObject2.#worldSphere, EveSpaceObject2.#localSphere, this.worldTransform);\r\n this.estimatedPixelDiameter = EveSpaceObject2.#GetPixelSize(frustum, EveSpaceObject2.#worldSphere);\r\n return this.estimatedPixelDiameter;\r\n }\r\n\r\n /** Reports the result of the latest Carbon visibility update. */\r\n @carbon.method\r\n @impl.implemented\r\n IsInFrustum()\r\n {\r\n return this.#isInFrustum;\r\n }\r\n\r\n /**\r\n * Gets the bounding sphere center, preferring the dynamic skinned sphere\r\n * when one is published.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphereCenter(out = vec3.create())\r\n {\r\n if (this.#dynamicBoundingSphere[3] !== -1)\r\n {\r\n return vec3.set(out, this.#dynamicBoundingSphere[0], this.#dynamicBoundingSphere[1], this.#dynamicBoundingSphere[2]);\r\n }\r\n return vec3.copy(out, this.boundingSphereCenter);\r\n }\r\n\r\n /**\r\n * Gets the model-scaled bounding sphere radius, preferring the dynamic\r\n * skinned sphere when one is published.\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n GetBoundingSphereRadius()\r\n {\r\n if (this.#dynamicBoundingSphere[3] !== -1)\r\n {\r\n return this.modelScale * this.#dynamicBoundingSphere[3];\r\n }\r\n return this.modelScale * this.boundingSphereRadius;\r\n }\r\n\r\n /**\r\n * Gets the number of mesh-bound bones. Carbon dereferences the animation\r\n * updater unchecked; CarbonEngineJS reports 0 when none is attached.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n GetBoneCount()\r\n {\r\n const updater = this.animationUpdater;\r\n if (!updater)\r\n {\r\n return 0;\r\n }\r\n if (updater.IsUsingCMF?.())\r\n {\r\n if (!updater.HasMeshBinding?.())\r\n {\r\n return 0;\r\n }\r\n return updater.GetSkeletonBoneIndices?.().length ?? 0;\r\n }\r\n return updater.GetMeshBindingBoneCount?.() ?? 0;\r\n }\r\n\r\n @carbon.method\r\n @impl.adapted\r\n SetImpactDamageState(shield, armor, hull, doCreateArmorImpacts = true)\r\n {\r\n this.impactOverlay?.SetDamageState?.(shield, armor, hull, doCreateArmorImpacts);\r\n this.SetControllerVariable(\"ShieldDamage\", shield);\r\n this.SetControllerVariable(\"ArmorDamage\", armor);\r\n this.SetControllerVariable(\"HullDamage\", hull);\r\n }\r\n\r\n /**\r\n * Toggles a named impact-overlay animation (boosters, hardeners, ...).\r\n */\r\n @carbon.method\r\n @impl.implemented\r\n SetImpactAnimation(name, enable, duration)\r\n {\r\n this.impactOverlay?.ToggleEffect?.(name, enable, duration);\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetControllerVariable(name, value)\r\n {\r\n const key = String(name ?? \"\");\r\n const next = Number(value);\r\n this.#controllerVariables.set(key, next);\r\n for (const controller of this.controllers)\r\n {\r\n controller?.SetVariable?.(key, next);\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetControllerVariable?.(key, next);\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.SetControllerVariable?.(key, next);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n SetProceduralContainerVariable(name, value)\r\n {\r\n for (const child of this.effectChildren)\r\n {\r\n child?.SetProceduralContainerVariable?.(name, value);\r\n }\r\n }\r\n\r\n @carbon.method\r\n @impl.implemented\r\n StartControllers()\r\n {\r\n for (const controller of this.controllers)\r\n {\r\n controller?.Start?.();\r\n }\r\n for (const child of this.effectChildren)\r\n {\r\n child?.StartControllers?.();\r\n }\r\n for (const overlay of this.overlayEffects)\r\n {\r\n overlay?.StartControllers?.();\r\n }\r\n }\r\n\r\n /**\r\n * Applies bone and model transforms to locators and returns\r\n * [position, rotation, boneIndex] tuples, as the Carbon script surface\r\n * does (TransformLocators maps to PyTransformLocators). Accepts either\r\n * locator records ({ position, direction, boneIndex }, Carbon's\r\n * LocatorStructureList shape) or the same [position, rotation, boneIndex]\r\n * tuple shape it returns.\r\n */\r\n @carbon.method\r\n @impl.adapted\r\n TransformLocators(locators = [])\r\n {\r\n const result = [];\r\n for (const locator of locators ?? [])\r\n {\r\n const record = Array.isArray(locator)\r\n ? { position: locator[0], rotation: locator[1], boneIndex: locator[2] }\r\n : { position: locator?.position, rotation: locator?.direction ?? locator?.rotation, boneIndex: locator?.boneIndex };\r\n const position = vec3.clone(record.position ?? EveSpaceObject2.#zero);\r\n const rotation = quat.clone(record.rotation ?? EveSpaceObject2.#identityRotation);\r\n const boneIndex = Number(record.boneIndex ?? 0);\r\n this.#TransformLocator(position, rotation, boneIndex);\r\n if (this.modelTranslationCurve || this.modelRotationCurve)\r\n {\r\n this.#ApplyModelTransform(position, rotation);\r\n }\r\n result.push([position, rotation, boneIndex]);\r\n }\r\n return result;\r\n }\r\n\r\n // Carbon Blue TransformLocator: bone-attached records pick up the mesh\r\n // bone matrix; without bone data the authored values pass through.\r\n #TransformLocator(position, rotation, boneIndex)\r\n {\r\n const updater = this.animationUpdater;\r\n if (boneIndex <= 0 || !updater?.IsInitialized?.())\r\n {\r\n return;\r\n }\r\n const bone = EveSpaceObject2.#GetBoneMatrix(updater, boneIndex);\r\n if (!bone)\r\n {\r\n return;\r\n }\r\n vec3.transformMat4(position, position, bone);\r\n const boneRotation = mat4.getRotation(quat.create(), bone);\r\n quat.multiply(rotation, boneRotation, rotation);\r\n }\r\n\r\n // Carbon Blue ApplyModelTransform samples both curves at the Be::Time()\r\n // origin (pure GetValueAt, no playback advance): translation adds, model\r\n // rotation rotates the position and pre-multiplies.\r\n #ApplyModelTransform(position, rotation)\r\n {\r\n if (this.modelTranslationCurve)\r\n {\r\n const translation = vec3.create();\r\n this.modelTranslationCurve.GetValueAt?.(0, translation);\r\n vec3.add(position, position, translation);\r\n }\r\n if (this.modelRotationCurve)\r\n {\r\n const modelRotation = quat.create();\r\n this.modelRotationCurve.GetValueAt?.(0, modelRotation);\r\n vec3.transformQuat(position, position, modelRotation);\r\n quat.multiply(rotation, modelRotation, rotation);\r\n }\r\n }\r\n\r\n // Carbon GetLocatorsForSet: first set matching the name wins.\r\n #GetLocatorsForSet(locatorSetName)\r\n {\r\n const target = String(locatorSetName ?? \"\");\r\n for (const set of this.locatorSets)\r\n {\r\n if (set?.HasName?.(target))\r\n {\r\n return set.GetLocators();\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n // Carbon GetLocatorInObjectSpace: the direction is +Y rotated by the\r\n // authored quaternion; bone-attached locators additionally apply the mesh\r\n // bone matrix. Carbon leaves the outputs untouched (caller-uninitialized)\r\n // when bone data is missing; CarbonEngineJS keeps the unskinned values.\r\n #GetLocatorInObjectSpace(outPosition, outDirection, locator)\r\n {\r\n vec3.transformQuat(outDirection, EveSpaceObject2.#unitY, locator.direction);\r\n vec3.copy(outPosition, locator.position);\r\n const updater = this.animationUpdater;\r\n if (locator.boneIndex > 0 && updater?.IsInitialized?.())\r\n {\r\n const boneCount = Number(updater.GetMeshBoneCount?.() ?? 0);\r\n if (locator.boneIndex < boneCount)\r\n {\r\n const bone = EveSpaceObject2.#GetBoneMatrix(updater, locator.boneIndex);\r\n if (bone)\r\n {\r\n vec3.transformMat4(outPosition, locator.position, bone);\r\n EveSpaceObject2.#TransformNormal(outDirection, outDirection, bone);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Carbon GetClosestLocatorIndex: facing-gated closest search; 0 when the\r\n // set is missing, -1 when no locator faces the position.\r\n #GetClosestLocatorIndex(position, locatorSetName)\r\n {\r\n const locators = this.#GetLocatorsForSet(locatorSetName);\r\n if (!locators)\r\n {\r\n return 0;\r\n }\r\n const posInObjectSpace = vec3.transformMat4(vec3.create(), position, this.inverseWorldTransform);\r\n const locatorPosition = vec3.create();\r\n const locatorDirection = vec3.create();\r\n let closestLength = Infinity;\r\n let closestIndex = -1;\r\n for (let index = 0; index < locators.length; index++)\r\n {\r\n this.#GetLocatorInObjectSpace(locatorPosition, locatorDirection, locators[index]);\r\n if (!EveSpaceObject2.#IsLocatorFacingPosition(locatorDirection, posInObjectSpace))\r\n {\r\n continue;\r\n }\r\n const distance = vec3.squaredDistance(locatorPosition, posInObjectSpace);\r\n if (distance < closestLength)\r\n {\r\n closestIndex = index;\r\n closestLength = distance;\r\n }\r\n }\r\n return closestIndex;\r\n }\r\n\r\n static #IsLocatorFacingPosition(locatorDirection, posInObjectSpace)\r\n {\r\n const moved = vec3.subtract(vec3.create(), posInObjectSpace, locatorDirection);\r\n return vec3.squaredLength(moved) < vec3.squaredLength(posInObjectSpace);\r\n }\r\n\r\n static #TransformNormal(out, direction, matrix)\r\n {\r\n const x = direction[0];\r\n const y = direction[1];\r\n const z = direction[2];\r\n out[0] = matrix[0] * x + matrix[4] * y + matrix[8] * z;\r\n out[1] = matrix[1] * x + matrix[5] * y + matrix[9] * z;\r\n out[2] = matrix[2] * x + matrix[6] * y + matrix[10] * z;\r\n return out;\r\n }\r\n\r\n #GetShapeEllipsoid(outCenter, outRadii)\r\n {\r\n if (this.shapeEllipsoidRadius[0] > 0)\r\n {\r\n vec3.copy(outCenter, this.shapeEllipsoidCenter);\r\n vec3.copy(outRadii, this.shapeEllipsoidRadius);\r\n }\r\n else\r\n {\r\n const bounds = this.GetLocalBoundingBox(EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax);\r\n if (bounds === false)\r\n {\r\n vec3.set(EveSpaceObject2.#boundsMin, -1, -1, -1);\r\n vec3.set(EveSpaceObject2.#boundsMax, 1, 1, 1);\r\n }\r\n vec3.subtract(outRadii, EveSpaceObject2.#boundsMax, EveSpaceObject2.#boundsMin);\r\n vec3.scale(outRadii, outRadii, Math.sqrt(3) * 0.5);\r\n vec3.lerp(outCenter, EveSpaceObject2.#boundsMin, EveSpaceObject2.#boundsMax, 0.5);\r\n }\r\n vec3.copy(this.generatedShapeEllipsoidCenter, outCenter);\r\n vec3.copy(this.generatedShapeEllipsoidRadius, outRadii);\r\n }\r\n\r\n static #GetDirectionFit(v0, v1)\r\n {\r\n const direction = -vec3.dot(v0, v1);\r\n return direction < 0\r\n ? (1 - Math.sqrt(Math.abs(direction))) * 0.5\r\n : (Math.sqrt(Math.abs(direction)) + 1) * 0.5;\r\n }\r\n\r\n static #IntersectEllipsoidRay(out, center, radii, origin, direction)\r\n {\r\n const vx = direction[0] / radii[0];\r\n const vy = direction[1] / radii[1];\r\n const vz = direction[2] / radii[2];\r\n const sx = (origin[0] - center[0]) / radii[0];\r\n const sy = (origin[1] - center[1]) / radii[1];\r\n const sz = (origin[2] - center[2]) / radii[2];\r\n const vv = vx * vx + vy * vy + vz * vz;\r\n if (!(vv > 0)) return null;\r\n const vs = vx * sx + vy * sy + vz * sz;\r\n const ss = sx * sx + sy * sy + sz * sz;\r\n let discriminant = (vs / vv) ** 2 - ss / vv + 1 / vv;\r\n if (discriminant < 0) return null;\r\n discriminant = Math.sqrt(discriminant);\r\n let t = -discriminant - vs / vv;\r\n if (t < 0) t = discriminant - vs / vv;\r\n vec3.scaleAndAdd(out, origin, direction, t);\r\n return t;\r\n }\r\n\r\n static #IsPointInsideEllipsoid(center, radii, point)\r\n {\r\n const x = (point[0] - center[0]) / radii[0];\r\n const y = (point[1] - center[1]) / radii[1];\r\n const z = (point[2] - center[2]) / radii[2];\r\n return x * x + y * y + z * z <= 1;\r\n }\r\n\r\n // Mesh bone matrices come from the animation updater; only mat4-shaped\r\n // entries are usable.\r\n static #GetBoneMatrix(updater, boneIndex)\r\n {\r\n const bones = updater.GetMeshBoneMatrixList?.();\r\n const bone = bones?.[boneIndex];\r\n return bone && bone.length >= 16 ? bone : null;\r\n }\r\n\r\n static #ApplyControllerVariables(target, variables, methodName)\r\n {\r\n const setter = target?.[methodName];\r\n if (typeof setter !== \"function\")\r\n {\r\n return;\r\n }\r\n for (const [name, value] of variables)\r\n {\r\n setter.call(target, name, value);\r\n }\r\n }\r\n\r\n static #UpdateCurve(curve, time, out, fallback)\r\n {\r\n if (!curve)\r\n {\r\n for (let index = 0; index < out.length; index++)\r\n {\r\n out[index] = fallback[index];\r\n }\r\n return out;\r\n }\r\n\r\n let result;\r\n if (typeof curve.Update === \"function\")\r\n {\r\n result = curve.Update(time, out);\r\n }\r\n else if (typeof curve.GetValueAt === \"function\")\r\n {\r\n result = curve.GetValueAt(time, out);\r\n }\r\n if ((Array.isArray(result) || ArrayBuffer.isView(result)) && result !== out)\r\n {\r\n for (let index = 0; index < out.length; index++)\r\n {\r\n out[index] = result[index];\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n static #GetContextValue(context, methodName, ...propertyNames)\r\n {\r\n const method = context?.[methodName];\r\n if (typeof method === \"function\")\r\n {\r\n return Number(method.call(context)) || 0;\r\n }\r\n for (const propertyName of propertyNames)\r\n {\r\n if (context?.[propertyName] !== undefined && context?.[propertyName] !== null)\r\n {\r\n return Number(context[propertyName]) || 0;\r\n }\r\n }\r\n return 0;\r\n }\r\n\r\n static #GetPixelSize(frustum, sphere)\r\n {\r\n const method = frustum?.GetPixelSizeAccross;\r\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\r\n }\r\n\r\n static #GetEstimatedPixelSize(frustum, sphere)\r\n {\r\n const method = frustum?.GetPixelSizeAccrossEst ?? frustum?.GetPixelSizeAccross;\r\n return Number(typeof method === \"function\" ? method.call(frustum, sphere) : 0) || 0;\r\n }\r\n\r\n static #SetSphere(out, center, radius)\r\n {\r\n return sph3.set(out, center[0], center[1], center[2], radius);\r\n }\r\n\r\n // Avoid box3.transformMat4's legacy all-components-sum empty sentinel: a\r\n // valid symmetric box such as [-1,-1,-1,1,1,1] has that same sum.\r\n static #TransformBox(out, bounds, transform)\r\n {\r\n out[0] = out[1] = out[2] = Infinity;\r\n out[3] = out[4] = out[5] = -Infinity;\r\n for (let index = 0; index < 8; index++)\r\n {\r\n vec3.set(\r\n EveSpaceObject2.#boxCorner,\r\n index & 1 ? bounds[3] : bounds[0],\r\n index & 2 ? bounds[4] : bounds[1],\r\n index & 4 ? bounds[5] : bounds[2]\r\n );\r\n vec3.transformMat4(EveSpaceObject2.#boxCorner, EveSpaceObject2.#boxCorner, transform);\r\n out[0] = Math.min(out[0], EveSpaceObject2.#boxCorner[0]);\r\n out[1] = Math.min(out[1], EveSpaceObject2.#boxCorner[1]);\r\n out[2] = Math.min(out[2], EveSpaceObject2.#boxCorner[2]);\r\n out[3] = Math.max(out[3], EveSpaceObject2.#boxCorner[0]);\r\n out[4] = Math.max(out[4], EveSpaceObject2.#boxCorner[1]);\r\n out[5] = Math.max(out[5], EveSpaceObject2.#boxCorner[2]);\r\n }\r\n return out;\r\n }\r\n\r\n static #zero = Object.freeze([0, 0, 0]);\r\n\r\n static #unitY = Object.freeze([0, 1, 0]);\r\n\r\n static #locatorDirection = vec3.create();\r\n static #locatorPosition = vec3.create();\r\n static #locatorOffset = vec3.create();\r\n static #objectPosition = vec3.create();\r\n static #missOffset = vec3.create();\r\n static #missDirection = vec3.create();\r\n static #rayOrigin = vec3.create();\r\n static #rayEnd = vec3.create();\r\n static #rayDirection = vec3.create();\r\n static #ellipsoidCenter = vec3.create();\r\n static #ellipsoidRadii = vec3.create();\r\n static #boundsMin = vec3.create();\r\n static #boundsMax = vec3.create();\r\n static #childSphere = sph3.create();\r\n static #localSphere = sph3.create();\r\n static #worldSphere = sph3.create();\r\n static #localBox = box3.create();\r\n static #worldBox = box3.create();\r\n static #boxCorner = vec3.create();\r\n\r\n static #identityRotation = Object.freeze([0, 0, 0, 1]);\r\n\r\n static #identityTransform = mat4.create();\r\n\r\n static #damageLocatorSetName = \"damage\";\r\n\r\n static ReflectionMode = ReflectionMode;\r\n\r\n static Tr2Lod = Tr2Lod;\r\n\r\n static ImpactConfiguration = ImpactConfiguration;\r\n\r\n}\r\n"],"names":["TRANSPARENT_AABB_MIN","vec3","create","TRANSPARENT_AABB_MAX","TRANSPARENT_CENTER","OVERLAY_TYPE_OPAQUEONLY","OVERLAY_TYPE_ALL","_EveSpaceObject","_identity","EveSpaceObject2","EveEntity","e","_init_reflectionMode","_init_extra_reflectionMode","_init_effectChildren","_init_extra_effectChildren","_init_children","_init_extra_children","_init_name","_init_extra_name","_init_mute","_init_extra_mute","_init_inheritProperties","_init_extra_inheritProperties","_init_customMasks","_init_extra_customMasks","_init_overlayEffects","_init_extra_overlayEffects","_init_positionDelta","_init_extra_positionDelta","_init_lodLevel","_init_extra_lodLevel","_init_curveSets","_init_extra_curveSets","_init_isPickable","_init_extra_isPickable","_init_estimatedPixelDiameter","_init_extra_estimatedPixelDiameter","_init_estimatedPixelDiameterWithChildren","_init_extra_estimatedPixelDiameterWithChildren","_init_generatedShapeEllipsoidCenter","_init_extra_generatedShapeEllipsoidCenter","_init_generatedShapeEllipsoidRadius","_init_extra_generatedShapeEllipsoidRadius","_init_animationUpdater","_init_extra_animationUpdater","_init_dna","_init_extra_dna","_init_castShadow","_init_extra_castShadow","_init_isAnimated","_init_extra_isAnimated","_init_dynamicBoundingSphereEnabled","_init_extra_dynamicBoundingSphereEnabled","_init_attachments","_init_extra_attachments","_init_decals","_init_extra_decals","_init_lights","_init_extra_lights","_init_externalParameters","_init_extra_externalParameters","_init_controllers","_init_extra_controllers","_init_locators","_init_extra_locators","_init_mesh","_init_extra_mesh","_init_impactOverlay","_init_extra_impactOverlay","_init_clipSphereCenter","_init_extra_clipSphereCenter","_init_clipSphereFactor","_init_extra_clipSphereFactor","_init_clipSphereFactor2","_init_extra_clipSphereFactor2","_init_observers","_init_extra_observers","_init_worldPosition","_init_extra_worldPosition","_init_rotationCurve","_init_extra_rotationCurve","_init_worldRotation","_init_extra_worldRotation","_init_modelScale","_init_extra_modelScale","_init_locatorSets","_init_extra_locatorSets","_init_activationStrength","_init_extra_activationStrength","_init_albedoColor","_init_extra_albedoColor","_init_display","_init_extra_display","_init_update","_init_extra_update","_init_secondaryLightingSphereRadius","_init_extra_secondaryLightingSphereRadius","_init_boundingSphereCenter","_init_extra_boundingSphereCenter","_init_dirtLevel","_init_extra_dirtLevel","_init_customShaderData","_init_extra_customShaderData","_init_lastDamageLocatorHit","_init_extra_lastDamageLocatorHit","_init_boundingSphereRadius","_init_extra_boundingSphereRadius","_init_modelWorldPosition","_init_extra_modelWorldPosition","_init_modelTranslationCurve","_init_extra_modelTranslationCurve","_init_modelRotationCurve","_init_extra_modelRotationCurve","_init_shapeEllipsoidCenter","_init_extra_shapeEllipsoidCenter","_init_shapeEllipsoidRadius","_init_extra_shapeEllipsoidRadius","_init_translationCurve","_init_extra_translationCurve","_init_worldTransform","_init_extra_worldTransform","_init_inverseWorldTransform","_init_extra_inverseWorldTransform","_init_lastWorldTransform","_init_extra_lastWorldTransform","_init_worldVelocity","_init_extra_worldVelocity","_init_audioGeometry","_init_extra_audioGeometry","_init_isVisible","_init_extra_isVisible","_initProto","c","_initClass","_applyDecs","type","define","className","family","io","notify","persist","int32","schema","enum","list","string","readwrite","boolean","objectRef","read","float32","quat","color","vec4","mat4","carbon","method","impl","adapted","implemented","reason","notImplemented","reflectionMode","effectChildren","children","name","mute","inheritProperties","customMasks","overlayEffects","positionDelta","lodLevel","curveSets","isPickable","estimatedPixelDiameter","estimatedPixelDiameterWithChildren","generatedShapeEllipsoidCenter","generatedShapeEllipsoidRadius","fromValues","animationUpdater","dna","castShadow","isAnimated","dynamicBoundingSphereEnabled","attachments","decals","lights","externalParameters","controllers","locators","mesh","impactOverlay","clipSphereCenter","clipSphereFactor2","clipSphereFactor","observers","worldPosition","rotationCurve","worldRotation","modelScale","locatorSets","activationStrength","albedoColor","createLinear","display","update","secondaryLightingSphereRadius","boundingSphereCenter","dirtLevel","customShaderData","lastDamageLocatorHit","boundingSphereRadius","modelWorldPosition","modelTranslationCurve","modelRotationCurve","shapeEllipsoidCenter","shapeEllipsoidRadius","translationCurve","worldTransform","inverseWorldTransform","lastWorldTransform","worldVelocity","audioGeometry","isVisible","Map","sph3","set","Tr2Lod","TR2_LOD_UNSPECIFIED","meshLod","Initialize","controller","IsLinked","Link","damageLocatorCount","HasName","length","SetDamageLocatorCount","GetMesh","SetMesh","AddController","push","AddObserver","observer","SetInheritProperties","colorSet","EveChildInheritProperties","SetProperties","#PropagateInheritProperties","properties","GetProperties","child","light","GetEffectChildByName","target","String","GetName","AddToEffectChildrenList","AddLight","ClearLights","RemoveFromEffectChildrenList","index","indexOf","splice","SetModelRotationCurve","curve","GetModelRotationCurve","SetModelTranslationCurve","GetModelTranslationCurve","UpdateWorldTransform","time","nextTime","Number","copy","GetValueDotAt","rotation","clone","modelRotation","multiply","fromQuat","scale","modelTranslation","transformMat4","invert","identity","UpdateWorldBounds","updater","IsInitialized","GetDynamicBounds","UpdateSyncronous","updateContext","observerTransform","GetObserverTransform","Update","EveLODHelper","ShouldUpdate","overlay","params","EveChildUpdateParams","spaceObjectParent","ownerMaxSpeed","maxSpeed","localToWorldTransform","GetLocalToWorldTransform","DisplayChildren","IsAlwaysOn","UpdateAsyncronous","threshold","frequency","Math","min","curveSet","controllerUpdateFrequency","UpdateVisibility","_parentTransform","TR2_LOD_LOW","frustum","GetFrustum","lowThreshold","mediumThreshold","visibilityThreshold","lodFactor","IsSphereVisible","EstimatePixelDiameter","attachment","GetBoundingSphere","TR2_LOD_HIGH","TR2_LOD_MEDIUM","GetObserver","SetVisibility","Infinity","UseWithScreenSize","GetRenderables","out","GetBoundingBox","IsLoading","geometryResource","GetGeometryResource","decal","GetBatches","batches","batchType","perObjectData","renderContext","committedBefore","GetBatchCount","areas","GetAreas","TriBatchType","TRIBATCHTYPE_TRANSPARENT","GetBatchesFromOverlayVector","#GetSortedTransparentBatches","geometry","viewPosition","GetViewPosition","meshIndex","sorted","area","GetDisplay","GetAreaBoundingBox","GetIndex","add","dx","dy","dz","distance","sort","a","b","entry","GetMaterialInterface","batch","CreateGeometryBatch","Commit","RebuildCachedData","ReleaseCachedData","all","CollectAreaBlocks","TRIBATCHTYPE_OPAQUE","TRIBATCHTYPE_DECAL","blocks","TriRenderBatchAreaBlock","Optimize","CollectAreaBlocksWithSharedMaterials","collector","#EnsureCachedAreaBlocks","GetShadowBatches","_shadowPixelSize","committed","material","shaderMaterial","block","areaBlockVector","Tr2RenderBatch","SetMaterial","IsValid","SetGeometrySource","startIndex","count","SetPerObjectData","impactEffect","GetArmorDamageShader","effects","overlayType","effect","#CommitBlockBatch","priority","SetPriority","#OverlayEffectsFor","GetEffects","opaqueEffects","decalEffects","transparentEffects","TRIBATCHTYPE_ADDITIVE","additiveEffects","TRIBATCHTYPE_DISTORTION","distortionEffects","HasTransparentBatches","HasTransparentArea","GetSortValue","x","y","z","hypot","GetPerObjectData","accumulator","data","Allocate","Tr2PerObjectData","object","GetShadowPerObjectData","GetLights","_args","Error","IsCastingShadow","RegisterComponents","registry","GetComponentRegistry","RegisterComponent","EveComponentType","LightOwner","ShouldReflect","ReflectionRenderable","ShadowCaster","Register","UnRegisterComponents","UnRegister","GetWorldPosition","GetWorldRotation","FindSoundEmitter","emitter","SetMute","PlayAnimationEx","animName","loopCount","start","speed","clearWhenDone","CalculateSkinnedBoundingBoxFromTransform","transform","max","IsUsingCMF","localMin","localMax","GetLocalBoundingBox","corner","CalculateSkinnedBoundingSphere","center","GetBoundingSphereCenter","GetBoundingSphereRadius","ClearImpactDamage","Clear","ClearAnimations","CreateImpactFromPosition","position","direction","lifeTime","size","closestDamageLocator","CreateImpact","damageLocatorIndex","EndAnimation","FreezeHighDetailMesh","SetHighDetailDecalState","GetDamageLocatorCount","GetLocatorCount","locatorSetName","GetLocatorsForSet","GetCloseLocatorIndex","posInObjectSpace","locatorPosition","locatorDirection","closestLength","closestIndex","squaredDistance","GetGoodLocatorIndex","GetDamageLocatorDirection","inWorldSpaceOrOut","targetableCall","inWorldSpace","GetDamageLocatorPosition","GetClosestDamageLocatorIndex","GetGoodDamageLocatorIndex","objectPosition","minDistance","maxDistance","MIN_VALUE","bestDirectionFit","locator","subtract","desiredFit","random","bestFit","bestLocator","range","value","sqrt","abs","fit","GetRadius","GetMissPosition","hit","source","directionLength","scaleAndAdd","dot","offsetLength","GetImpactConfiguration","ImpactConfiguration","IMPACT_INVALID","HasImpactConfigurationShield","HasShieldEllipsoid","IMPACT_SHIELD","GetImpactPosition","posPrev","posNow","epsilon","t","UpdateImpact","impactIndex","GetDamageLocator","GetTransformedDamageLocator","IsImpostor","GetLocatorPositionFromSet","GetLocatorRotationFromSet","HandleControllerEvent","eventName","HandleEvent","PlayAnimation","ChainAnimation","ChainAnimationEx","#PlayAnimation","replace","delay","RebuildBoundingSphereInformation","geometryRes","IsGood","RecalculateBoundingSphere","sphere","GetMeshIndex","SetBoundingSphereInformation","radius","extract","GetControllerVariables","Object","fromEntries","GetLastUsedMeshLod","GetLodIndexForScreenSize","GetLocatorTransform","candidate","GetBoneWorldTransform","GetTransform","minBounds","maxBounds","GetWorldBoundingBox","box3","fromBounds","IsBoundingBoxReady","query","union","IsInFrustum","GetBoneCount","HasMeshBinding","GetSkeletonBoneIndices","GetMeshBindingBoneCount","SetImpactDamageState","shield","armor","hull","doCreateArmorImpacts","SetDamageState","SetControllerVariable","SetImpactAnimation","enable","duration","ToggleEffect","key","next","SetVariable","SetProceduralContainerVariable","StartControllers","Start","TransformLocators","result","record","Array","isArray","boneIndex","#TransformLocator","bone","boneRotation","getRotation","#ApplyModelTransform","translation","GetValueAt","transformQuat","#GetLocatorsForSet","GetLocators","#GetLocatorInObjectSpace","outPosition","outDirection","boneCount","GetMeshBoneCount","#GetClosestLocatorIndex","#GetShapeEllipsoid","outCenter","outRadii","bounds","lerp","#IsLocatorFacingPosition","moved","squaredLength","#TransformNormal","matrix","#GetDirectionFit","v0","v1","#IntersectEllipsoidRay","radii","origin","vx","vy","vz","sx","sy","sz","vv","vs","ss","discriminant","#IsPointInsideEllipsoid","point","#GetBoneMatrix","bones","GetMeshBoneMatrixList","#ApplyControllerVariables","variables","methodName","setter","call","#UpdateCurve","fallback","ArrayBuffer","isView","#GetContextValue","context","propertyNames","propertyName","undefined","#GetPixelSize","GetPixelSizeAccross","#GetEstimatedPixelSize","GetPixelSizeAccrossEst","#SetSphere","#TransformBox","freeze","ReflectionMode","constructor"],"mappings":"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"}
|