class IsdkSystem(val api: IsdkSystemNativeApi = IsdkSystemNativeApi()) : SystemBase
IsdkSystem
(
api
)
|
active
: Boolean
[Get][Set] |
Whether this system is currently processing input. When false, execute() returns early and no pointer events are dispatched to panels. The cursor system (if present) will also be disabled.
Can be used to temporarily disable panel input, for example when overlay controls are hidden during immersive playback.
Signature
var active: Boolean |
api
: IsdkSystemNativeApi
[Get] |
The native API that is invoked to execute the core interaction logic.
Signature
val api: IsdkSystemNativeApi |
debugToolsEnabled
: Boolean
[Get][Set] |
Toggles visibility of debug geometry rendering by ISDK, which shows internal state of interactions. Debug visuals have significant performance cost, so this should only be enabled when debugging.
Signature
var debugToolsEnabled: Boolean |
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 |
gazeEnabled
: Boolean
[Get][Set] |
Signature
var gazeEnabled: Boolean |
hmdGazeFallbackEnabled
: Boolean
[Get][Set] |
Signature
var hmdGazeFallbackEnabled: Boolean |
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 |
transformersEnabled
: Boolean
[Get][Set] |
Enables or disables transformers functionality in ISDK. When enabled, grabbed objects will move according to the behavior defined on the IsdkGrabbable/IsdkGrabConstraint components. When disabled, pointer events will still be emitted; but no transform will take place.
Signature
var transformersEnabled: Boolean |
addTargetedRegionListener
(
listener
)
|
Registers a listener to receive gaze-targeted region events.
Signature
fun addTargetedRegionListener(listener: TargetedRegionListener) Parameters |
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 |
clearInteractableObservers
(
entity
)
|
Removes all observers for a specific entity, effectively stopping all pointer event notifications for that entity.
Signature
fun clearInteractableObservers(entity: Entity) Parameters |
clearUIRegions
(
panelEntityId
)
|
Clears all UI regions for a specific interactable.
Signature
fun clearUIRegions(panelEntityId: Long) Parameters panelEntityId: Long
The C++ instance ID of the interactable (panel)
|
delete
(
entity
)
|
Called when an IsdkSystem.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 override fun destroy() |
enableDebugTools
(
enable
)
DeprecatedThis method is deprecated and will be removed in a future release. Use debugToolsEnabled field instead. |
Signature
fun enableDebugTools(enable: Boolean) Parameters enable: Boolean |
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 override fun getDependencies(): SystemDependencies? Returns SystemDependencies?
The dependency configuration, or null if this system has no ordering constraints.
|
getEventDecoratorId
(
decoratorName
)
|
Signature
fun getEventDecoratorId(decoratorName: String): Long Parameters decoratorName: StringReturns Long |
getEventDecoratorValueLong
(
pointerEvent
, decoratorId
)
|
Signature
fun getEventDecoratorValueLong(pointerEvent: PointerEvent, decoratorId: Long): Long? Parameters pointerEvent: PointerEventdecoratorId: LongReturns Long? |
getHandForPointerEvent
(
pointerEvent
)
|
Signature
fun getHandForPointerEvent(pointerEvent: PointerEvent): Hand? Parameters pointerEvent: PointerEventReturns Hand? |
getInteractionEventSourceBehavior
(
pointerEvent
)
|
Signature
fun getInteractionEventSourceBehavior(pointerEvent: PointerEvent): InteractionEventSourceBehavior? Parameters pointerEvent: PointerEvent |
getScene
()
| |
getScenePointerDistance
()
|
Gets the current maximum distance for scene pointer interactions in meters.
Signature
fun getScenePointerDistance(): Float Returns Float
The current maximum distance in meters
|
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.
|
notifyObservers
(
event
)
|
Signature
fun notifyObservers(event: PointerEvent) Parameters event: PointerEvent |
registerExternalControllerInputHandler
(
handler
)
|
Register an ExternalControllerInputHandler instance, which is used to integrate ISDK with other systems that may be using the controllers. Can be used to disable ISDK input handling if the controllers are in use by another system.
Signature
fun registerExternalControllerInputHandler(handler: ExternalControllerInputHandler) Parameters handler: ExternalControllerInputHandler |
registerInteractableObserver
(
entity
, observer
)
|
Registers an observer to receive pointer events for a specific interactable entity. The observer will be called whenever a pointer event occurs on the specified entity.
Signature
fun registerInteractableObserver(entity: Entity, observer: (PointerEvent) -> Unit): IsdkSystem.InteractableObserverHandle Parameters observer: Function1
The callback function to invoke when pointer events occur on the entity
Returns IsdkSystem.InteractableObserverHandle
A handle that can be used to unregister this specific observer
|
registerObserver
(
observer
)
|
Signature
fun registerObserver(observer: (PointerEvent) -> Unit) Parameters observer: Function1 |
removeTargetedRegionListener
(
listener
)
|
Unregisters a previously registered targeted region listener.
Signature
fun removeTargetedRegionListener(listener: TargetedRegionListener) Parameters |
setPanelCollisionPriority
(
entity
, priority
)
|
Sets the collision priority for a panel identified by entity.
Higher priority values will win collision resolution when panels overlap at the same depth. This should be called after setting the layer zIndex to synchronize the ISDK collision system with the rendering layer order.
Signature
fun setPanelCollisionPriority(entity: Entity, priority: Float) Parameters priority: Float
The collision priority (typically the layer's zIndex value)
|
setScenePointerDistance
(
distance
)
|
Sets the maximum distance for scene pointer interactions in meters. This controls how far from scene objects ray-based interactions can detect collisions.
Signature
fun setScenePointerDistance(distance: Float) Parameters distance: Float
The maximum distance in meters (must be positive)
|
unregisterExternalControllerInputHandler
(
handler
)
|
Unregister a previously registered ExternalControllerInputHandler instance
Signature
fun unregisterExternalControllerInputHandler(handler: ExternalControllerInputHandler) Parameters handler: ExternalControllerInputHandler |
unregisterInteractableObserver
(
handle
)
|
Unregisters a specific observer using its handle.
Signature
fun unregisterInteractableObserver(handle: IsdkSystem.InteractableObserverHandle) Parameters handle: IsdkSystem.InteractableObserverHandle
The handle returned from registerInteractableObserver
|
unregisterObserver
(
observer
)
|
Signature
fun unregisterObserver(observer: (PointerEvent) -> Unit) Parameters observer: Function1 |
updateUIRegionsPacked
(
panelEntityId
, regionCount
, packedFloats
, regionIds
, flags
)
|
Updates UI regions using packed primitive arrays for optimal JNI performance. This method reduces JNI overhead by passing data as primitive arrays instead of object arrays.
Signature
fun updateUIRegionsPacked(panelEntityId: Long, regionCount: Int, packedFloats: FloatArray, regionIds: LongArray, flags: IntArray) Parameters panelEntityId: Long
The entity ID of the panel
regionCount: Int
Number of regions in the arrays
packedFloats: FloatArray
Packed floats: 9 per region posX, posY, posZ, rotX, rotY, rotZ, rotW, width, height
regionIds: LongArray
Region IDs (1-indexed to avoid conflict with kSelfId = 0)
flags: IntArray
Bit-packed flags: bit 0 = clickable, bit 1 = focusable, bit 2 = scrollable
|
data class InteractableObserverHandle(val id: Long, val entityId: Long)
InteractableObserverHandle
(
id
, entityId
)
|
Signature
constructor(id: Long, entityId: Long) Parameters id: LongentityId: LongReturns IsdkSystem.InteractableObserverHandle |
entityId
: Long
[Get] |
Signature
val entityId: Long |
id
: Long
[Get] |
Signature
val id: Long |