API reference
API reference
Select your platform
No SDKs available
No versions available

SceneObjectSystem Class

Extends SystemBase
Modifiers: final
System to manage SceneObjects. This acts as a registry for other systems to get the SceneObject associated with an entity.
Example using SceneObjectSystem to get a SceneObject and adding an input listener:
systemManager.findSystem<SceneObjectSystem>().getSceneObject(myEntity)?.thenAccept { so -> so.addInputListener(myInputListener) }

For entities with registered component types (like Mesh or Panel), calling SceneObjectSystem.getSceneObject will return a pending future even before the creation system has processed the entity. This allows callers to attach callbacks without needing to use system dependencies.
To register additional component types for lazy future creation, use SceneObjectSystem.registerComponentType.

Signature

class SceneObjectSystem : SystemBase

Constructors

SceneObjectSystem ()
Signature
constructor()

Properties

executeCount : Long
[Get]
The number of times the system has been executed.
Signature
var executeCount: Long
systemManager : SystemManager
[Get][Set]
The system manager that this system is associated with.
Signature
lateinit var systemManager: SystemManager

Functions

addSceneObject ( entity , sceneObjectFuture )
Adds a <code>SceneObject</code> future to the registry to allow other systems to get the <code>SceneObject</code> associated with the entity. The future is expected to be completed by the caller once the <code>SceneObject</code> is done loading.
Signature
fun addSceneObject(entity: Entity, sceneObjectFuture: CompletableFuture<SceneObject>)
Parameters
entity: Entity
  The entity that represents the <code>SceneObject</code>.
sceneObjectFuture: CompletableFuture
  The future that will be completed (by the caller) when the <code>SceneObject</code> is created.
associateSystemManager ( systemManager )
Associates this system with a system manager, used in the Spatial SDK.
Signature
fun associateSystemManager(systemManager: SystemManager)
Parameters
systemManager: SystemManager
  The system manager to associate with.
delete ( entity )
System should do any housekeeping based on SceneObjectSystem.delete being removed from the scene
Signature
open override fun delete(entity: Entity)
Parameters
entity: Entity
destroy ()
System should clean up any and all resources for shutdown
Signature
open fun destroy()
equals ( other )
Checks if this system is equal to another object.
Signature
open operator override fun equals(other: Any?): Boolean
Parameters
other: Any?
  The object to compare with.
Returns
Boolean
  True if this system is equal to the other object, false otherwise.
execute ()
System should perform all the operations based on relevant entities.
Signature
open override fun execute()
getDependencies ()
Returns the dependencies of this system.
Signature
open fun getDependencies(): SystemDependencies?
Returns
  The dependencies of this system, or null if there are no dependencies.
getScene ()
Returns the scene that this system is associated with.
Signature
fun getScene(): Scene
Returns
  The scene that this system is associated with.
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
entity: Entity
  the entity to get
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.
Signature
open override fun hashCode(): Int
Returns
Int
  The hash code of this system.
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
entity: Entity
  the associated entity for the <code>SceneObject</code>
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
entity: Entity
  the entity to get or replace the future for
Returns
CompletableFuture
  A pending future for the SceneObject
Did you find this page helpful?