systemManager.findSystem<SceneObjectSystem>().getSceneObject(myEntity)?.thenAccept { so -> so.addInputListener(myInputListener) }
class SceneObjectSystem : SystemBase
SceneObjectSystem
()
|
Signature
constructor() Returns SceneObjectSystem |
executeCount
: Long
[Get] |
The number of times this system's SystemBase.execute method has been called by the system manager. Incremented automatically before each execution cycle. Useful for performance monitoring.
Signature
var executeCount: Long |
systemManager
: SystemManager
[Get][Set] |
The SystemManager that this system is registered with. Provides access to other systems and the scene. Initialized during system registration.
Signature
lateinit var systemManager: SystemManager |
addSceneObject
(
entity
, sceneObjectFuture
)
|
Adds a SceneObject future to the registry to allow other systems to get the SceneObject associated with the entity. The future is expected to be completed by the caller once the SceneObject is done loading.
Signature
fun addSceneObject(entity: Entity, sceneObjectFuture: CompletableFuture<SceneObject>) Parameters sceneObjectFuture: CompletableFuture
The future that will be completed (by the caller) when the SceneObject is created.
|
associateSystemManager
(
systemManager
)
|
Associates this system with a SystemManager. Called during registration. Throws RuntimeException if the system is already associated — each system instance can only belong to one manager.
Signature
fun associateSystemManager(systemManager: SystemManager) Parameters |
delete
(
entity
)
|
Called when an SceneObjectSystem.delete is removed from the scene. Override to clean up any per-entity state this system maintains, such as cached components, tracking maps, or native resource handles.
Signature
open override fun delete(entity: Entity) Parameters entity: Entity |
destroy
()
|
Called during system shutdown to release all resources held by this system. Override to dispose of native handles, close streams, and clear any global state accumulated during the session.
Signature
open fun destroy() |
equals
(
other
)
|
Checks if this system is equal to another object. Two systems are considered equal if they are the same instance or share the same Kotlin class, regardless of configuration state.
Signature
open operator override fun equals(other: Any?): Boolean Parameters other: Any?
The object to compare with.
Returns Boolean
True if the other object is the same system instance or the same system class.
|
execute
()
|
Called each frame by the SystemManager to perform this system's per-tick logic. Override to query entities with relevant components and apply updates.
Signature
open override fun execute() |
getDependencies
()
|
Returns the execution ordering dependencies for this system. Override to declare which other systems must run before or after this one using SystemDependencies.
Signature
open fun getDependencies(): SystemDependencies? Returns SystemDependencies?
The dependency configuration, or null if this system has no ordering constraints.
|
getScene
()
| |
getSceneObject
(
entity
)
|
Returns a future for the SceneObject associated with the entity.
If the entity has a registered component type (such as Mesh or Panel) but no future exists yet, one will be created lazily. The future will be completed when the creation system processes the entity.
A null return indicates the entity does not have any registered component types.
Signature
fun getSceneObject(entity: Entity): CompletableFuture<SceneObject>? Parameters Returns CompletableFuture?
A future for the SceneObject, or null if the entity doesn't have a registered component type
|
hashCode
()
|
Returns the hash code of this system, based on its Kotlin class identity. Consistent with the SystemBase.equals implementation — systems of the same class produce the same hash code.
Signature
open override fun hashCode(): Int Returns Int
The hash code derived from this system's Kotlin class.
|
registerComponentType
(
componentId
)
|
Registers a component type that qualifies for lazy future creation.
When SceneObjectSystem.getSceneObject is called on an entity with this component type, a future will be created lazily if one doesn't already exist. This allows callers to attach callbacks immediately after setting a component, without waiting for the creation system to run.
Signature
fun registerComponentType(componentId: Int) Parameters componentId: Int
The component ID to register (e.g., Mesh.id, Panel.id)
|
removeSceneObject
(
entity
)
|
Remove a SceneObject from the registry.
Signature
fun removeSceneObject(entity: Entity) Parameters |
replaceOrReuseSceneObjectFuture
(
entity
)
|
Returns an existing pending future, or creates and registers a new one (replacing any completed future). This consolidates the common pattern used by creation systems when handling both lazy futures and mutation cases.
A new future is needed on mutation because CompletableFuture can only be completed once — subsequent calls to CompletableFuture.complete are silently ignored.
Signature
fun replaceOrReuseSceneObjectFuture(entity: Entity): CompletableFuture<SceneObject> Parameters Returns CompletableFuture
A pending future for the SceneObject
|