Skip to content

Refactor IEveSpaceObjectChild interface into a base class - #29

Merged
ccp-intern merged 13 commits into
mainfrom
space-object-child-base-class
Aug 5, 2026
Merged

Refactor IEveSpaceObjectChild interface into a base class#29
ccp-intern merged 13 commits into
mainfrom
space-object-child-base-class

Conversation

@filipppavlov

Copy link
Copy Markdown

The base class is long overdue to manage the common state between all child object classes.

The new base class supports "owner", "parent," and "part tag" shared attributes.
The owner is the space object owner. It can be queried from C++ or Python at any time. This will simplify picking code in the client.
The parent is the parent space object child of the given child. Similarly, it can be queried from C++ and Python. This one is useful for the editor to speed up the search of the transform parent of an object.
The part tag is currently unused; it is going to be needed for the modular space objects to identify which logical part of the object the child belongs to.
Special care must be taken to maintain owner and parent pointers in child objects, to make sure they are always up to date (internally, these are stored as raw pointers because we can use strong pointers as they would create circular references, and we should avoid weak pointers because of performance issues with BlueWeakRef). Any child object that owns other children needs to maintain the owner/parent state for its children.

The new base class has support "owner", "parent" and "part tag" shared attributes.
Copilot AI review requested due to automatic review settings July 17, 2026 15:42
@filipppavlov
filipppavlov marked this pull request as draft July 17, 2026 15:42

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors the space-object child API from the legacy IEveSpaceObjectChild interface into a new EveSpaceObjectChild base class, and updates many child implementations and owners to use the new type while exposing new shared attributes (owner/parent/partTag) to Blue/Python.

Changes:

  • Replaces IEveSpaceObjectChild usage in many call sites with EveSpaceObjectChild (including pointer/vector typedefs and factory/controller paths).
  • Propagates and maintains owner/parent/partTag state in several child-owner types (e.g., containers, plugs, refs, sockets, procedural containers).
  • Updates Blue exposure to include EveSpaceObjectChild and adds GetOwner/GetParent/partTag exposure in many child classes.

Reviewed changes

Copilot reviewed 95 out of 95 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
trinity/trinity.cpp Switches world-transform support/type docs to EveSpaceObjectChild.
trinity/Eve/UI/EveEllipseSet.h Migrates to EveSpaceObjectChild base; removes redundant child API members.
trinity/Eve/UI/EveEllipseSet.cpp Removes legacy name/LOD no-op implementations.
trinity/Eve/UI/EveEllipseSet_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag to Blue.
trinity/Eve/Turret/EveTurretSet.h Updates ambient effect child types to EveSpaceObjectChild.
trinity/Eve/Turret/EveTurretSet.cpp Updates ambient effect APIs/fields to new child type.
trinity/Eve/Turret/EveTurretFiringFX.h Replaces interface vector declarations with class-based ones.
trinity/Eve/SpaceObjectFactory/EveSOF.cpp Updates SOF child binding/copy paths to EveSpaceObjectChild.
trinity/Eve/SpaceObject/Utils/fxAttributes/EveCameraFxAttributes.h Updates include to new child base.
trinity/Eve/SpaceObject/EveSpaceObject2.h Updates effect-children API and storage to EveSpaceObjectChild.
trinity/Eve/SpaceObject/EveSpaceObject2.cpp Maintains owner pointers for effect children on init/list events/destruction.
trinity/Eve/SpaceObject/Children/SmartLightSets/EveChildSmartLightSet.h Migrates to EveSpaceObjectChild; removes redundant name/bounds stubs.
trinity/Eve/SpaceObject/Children/SmartLightSets/EveChildSmartLightSet.cpp Removes legacy name accessors.
trinity/Eve/SpaceObject/Children/SmartLightSets/EveChildSmartLightSet_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/SmartLightSets/attributeModifiers/EveSmartLightBaseAttributeModifier.h Updates include to new child base.
trinity/Eve/SpaceObject/Children/ProceduralContainer/EveChildProceduralContainer.h Migrates member types + adds owner/partTag propagation overrides.
trinity/Eve/SpaceObject/Children/ProceduralContainer/EveChildProceduralContainer.cpp Registers/unregisters selected child; propagates owner/partTag to selected child.
trinity/Eve/SpaceObject/Children/ProceduralContainer/EveChildProceduralContainer_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/IEveSpaceObjectChild.h Deprecates interface to an empty compatibility shell; updates parent type.
trinity/Eve/SpaceObject/Children/IEveEffectChildrenOwner.h Updates effect-children owner API to EveSpaceObjectChild.
trinity/Eve/SpaceObject/Children/EveChildSpherePin.h Updates interface comment references.
trinity/Eve/SpaceObject/Children/EveChildSocket.h Migrates to base class; updates effect-children owner signatures; adds owner/partTag propagation.
trinity/Eve/SpaceObject/Children/EveChildSocket.cpp Registers/unregisters plug child; updates effect-child APIs; propagates owner/partTag to plug.
trinity/Eve/SpaceObject/Children/EveChildSocket_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildRef.h Migrates to base class; updates effect-children owner signatures; adds owner/partTag propagation.
trinity/Eve/SpaceObject/Children/EveChildRef.cpp Registers/unregisters referenced child; loads child as EveSpaceObjectChild; propagates owner/partTag.
trinity/Eve/SpaceObject/Children/EveChildRef_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildQuad.h Migrates to base class; removes redundant legacy methods/members.
trinity/Eve/SpaceObject/Children/EveChildQuad.cpp Removes legacy name/renderables stubs.
trinity/Eve/SpaceObject/Children/EveChildQuad_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildPostProcessVolume.h Migrates to base class; removes redundant legacy methods/members.
trinity/Eve/SpaceObject/Children/EveChildPostProcessVolume.cpp Removes legacy name/visibility/update stubs.
trinity/Eve/SpaceObject/Children/EveChildPostProcessVolume_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildPlug.h Migrates object list type; updates effect-children owner signatures; adds owner/partTag propagation.
trinity/Eve/SpaceObject/Children/EveChildPlug.cpp Registers/unregisters children list; updates bounds/shader iteration types; propagates owner/partTag.
trinity/Eve/SpaceObject/Children/EveChildPlug_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildParticleSystem.h Migrates to base class; removes redundant legacy name member/accessors.
trinity/Eve/SpaceObject/Children/EveChildParticleSystem.cpp Removes legacy name accessors.
trinity/Eve/SpaceObject/Children/EveChildParticleSystem_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildParticleSphere.h Migrates to base class; removes redundant legacy name member/accessors.
trinity/Eve/SpaceObject/Children/EveChildParticleSphere.cpp Removes legacy name accessors.
trinity/Eve/SpaceObject/Children/EveChildParticleSphere_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildMesh.h Migrates to base class; removes redundant legacy name member/accessors.
trinity/Eve/SpaceObject/Children/EveChildMesh.cpp Removes legacy name accessors.
trinity/Eve/SpaceObject/Children/EveChildMesh_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag (and adds interface define).
trinity/Eve/SpaceObject/Children/EveChildLink.h Updates interface comment references.
trinity/Eve/SpaceObject/Children/EveChildLineSet.h Migrates to base class; removes redundant legacy name accessors.
trinity/Eve/SpaceObject/Children/EveChildLineSet.cpp Removes legacy name accessors.
trinity/Eve/SpaceObject/Children/EveChildLineSet_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildLightingOverride.h Migrates to base class; removes redundant legacy methods/members.
trinity/Eve/SpaceObject/Children/EveChildLightingOverride.cpp Removes legacy name/update stubs.
trinity/Eve/SpaceObject/Children/EveChildLightingOverride_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildInstanceMeshRenderer.h Updates include to new child base.
trinity/Eve/SpaceObject/Children/EveChildInstanceMeshRenderer_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildInstancedMeshes.h Migrates to base class; removes redundant legacy methods/members.
trinity/Eve/SpaceObject/Children/EveChildInstancedMeshes.cpp Removes legacy name/LOD stubs.
trinity/Eve/SpaceObject/Children/EveChildInstancedMeshes_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildInstanceContainer.h Migrates to base class; updates source/instance types; adds owner/partTag propagation.
trinity/Eve/SpaceObject/Children/EveChildInstanceContainer.cpp Registers/unregisters children; updates instancing paths to set owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildInstanceContainer_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildFogVolume.h Migrates to base class; removes redundant legacy methods/members.
trinity/Eve/SpaceObject/Children/EveChildFogVolume.cpp Removes legacy name/update/visibility stubs.
trinity/Eve/SpaceObject/Children/EveChildFogVolume_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildExplosion.h Migrates child pointer/vector types to EveSpaceObjectChild.
trinity/Eve/SpaceObject/Children/EveChildExplosion.cpp Updates instance-copy variables to EveSpaceObjectChildPtr.
trinity/Eve/SpaceObject/Children/EveChildExplosion_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildEffectPropagator.h Removes unused shared-child member.
trinity/Eve/SpaceObject/Children/EveChildEffectPropagator.cpp Registers/unregisters effect child via helper calls.
trinity/Eve/SpaceObject/Children/EveChildEffectPropagator_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildContainer.h Migrates to base class; updates child list types; adds owner/partTag propagation overrides.
trinity/Eve/SpaceObject/Children/EveChildContainer.cpp Registers/unregisters children list and handles list-modified updates; propagates owner/partTag.
trinity/Eve/SpaceObject/Children/EveChildContainer_Blue.cpp Updates enum registration to new origin enum type; exposes base + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildCloud2.h Migrates to base class; removes redundant legacy methods/members.
trinity/Eve/SpaceObject/Children/EveChildCloud2.cpp Removes legacy name/visibility/renderables stubs.
trinity/Eve/SpaceObject/Children/EveChildCloud2_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildCloud.h Migrates to base class; removes redundant legacy methods/members.
trinity/Eve/SpaceObject/Children/EveChildCloud.cpp Removes legacy name accessors.
trinity/Eve/SpaceObject/Children/EveChildCloud_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildBulletStorm.h Migrates to base class; removes redundant legacy methods/members.
trinity/Eve/SpaceObject/Children/EveChildBulletStorm.cpp Removes legacy name/setup/update stubs.
trinity/Eve/SpaceObject/Children/EveChildBulletStorm_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildBehaviorSystem.h Migrates to base class; removes redundant legacy methods/members.
trinity/Eve/SpaceObject/Children/EveChildBehaviorSystem.cpp Removes legacy name/bounds/LOD stubs.
trinity/Eve/SpaceObject/Children/EveChildBehaviorSystem_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/SpaceObject/Children/EveChildAudio.h Migrates to base class; removes redundant legacy methods/members.
trinity/Eve/SpaceObject/Children/EveChildAudio.cpp Moves name storage to base (BlueSharedString) and updates emitter naming.
trinity/Eve/SpaceObject/Children/EveChildAudio_Blue.cpp Exposes EveSpaceObjectChild + owner/parent/partTag.
trinity/Eve/Renderable/Stretch/EveStretch3.h Migrates stretch endpoints/types to EveSpaceObjectChild.
trinity/Eve/Renderable/Stretch/EveStretch3.cpp Updates helper lambdas and setters/getters to EveSpaceObjectChild.
trinity/Eve/EveEffectRoot2.h Migrates effect-children owner API and storage types to EveSpaceObjectChild.
trinity/Eve/EveEffectRoot2.cpp Maintains owner pointers for effect children on init/list events/destruction.
trinity/Controllers/Actions/Tr2ActionPlayCurveSet.cpp Drops now-unused legacy child include.
trinity/Controllers/Actions/Tr2ActionChildEffect.h Migrates stored child pointer type to EveSpaceObjectChildPtr.
trinity/Controllers/Actions/Tr2ActionChildEffect.cpp Loads child effects as EveSpaceObjectChild.
trinity/CMakeLists.txt Adds new base-class source files to the build.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread trinity/trinity.cpp
Comment thread trinity/CMakeLists.txt
Comment thread trinity/trinity.cpp

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 98 out of 98 changed files in this pull request and generated 4 comments.

Comment thread trinity/Eve/UI/EveEllipseSet_Blue.cpp Outdated
Comment thread trinity/Eve/SpaceObject/Children/EveSpaceObjectChild.cpp
Comment thread trinity/Eve/SpaceObject/Children/EveSpaceObjectChild.cpp
Comment thread trinity/Eve/SpaceObject/Children/EveChildInstanceContainer.cpp Outdated
Use `UnregisterChild` helper method

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@ccpgames-carbon

ccpgames-carbon commented Jul 20, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

Comment thread trinity/Eve/SpaceObject/Children/EveChildCloud_Blue.cpp
Comment thread trinity/Eve/SpaceObject/Children/EveChildPlug.cpp
Comment thread trinity/Eve/SpaceObject/Children/EveSpaceObjectChild.h
Comment thread trinity/Eve/SpaceObject/Children/EveSpaceObjectChild.cpp
Comment thread trinity/Eve/SpaceObject/Children/EveSpaceObjectChild.cpp
filipppavlov and others added 7 commits July 22, 2026 09:30
The new base class has support "owner", "parent" and "part tag" shared attributes.
Use `UnregisterChild` helper method

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@Ikreb1
Ikreb1 marked this pull request as ready for review August 5, 2026 11:39
JohnGreenFC
JohnGreenFC previously approved these changes Aug 5, 2026
@filipppavlov
filipppavlov dismissed JohnGreenFC’s stale review August 5, 2026 12:24

The merge-base changed after approval.

@Ikreb1
Ikreb1 self-requested a review August 5, 2026 13:54
Ikreb1
Ikreb1 previously approved these changes Aug 5, 2026
@filipppavlov
filipppavlov dismissed Ikreb1’s stale review August 5, 2026 13:55

The merge-base changed after approval.

Ikreb1
Ikreb1 previously approved these changes Aug 5, 2026
JohnGreenFC
JohnGreenFC previously approved these changes Aug 5, 2026
@filipppavlov
filipppavlov dismissed stale reviews from JohnGreenFC and Ikreb1 August 5, 2026 14:00

The merge-base changed after approval.

ccp-intern
ccp-intern previously approved these changes Aug 5, 2026
@filipppavlov
filipppavlov dismissed ccp-intern’s stale review August 5, 2026 14:05

The merge-base changed after approval.

@ccp-intern
ccp-intern merged commit 3f130e4 into main Aug 5, 2026
1 of 14 checks passed
@Ikreb1
Ikreb1 deleted the space-object-child-base-class branch August 5, 2026 14:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants