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

SceneObject Class

Modifiers: open
The SceneObject class combines a SceneMesh with position and rotation to fully represent a 3D Object in the scene. Entitys with meshes have SceneObjects created and managed by the Transform, Mesh, and Panel components.
In addition to position, the SceneObject is also responsible for handling:
  1. 3D object visibility. (Also managed via the Visible component and VisibleSystem System).
  2. InputListener for handling input events on 3D objects.
  3. Managing GLTF animations.
  4. Updating positions of nodes in a GLTF scenegraph.
SceneObjects associated with an Entity can be accessed via:
systemManager.findSystem<SceneObjectSystem>().getSceneObject(myEntity)?.thenAccept { sceneObject -> sceneObject.addInputListener(myInputListener) }

Signature

open class SceneObject

Constructors

SceneObject ( scene , mesh , name , entity )
Constructor for a SceneObject.
Signature
constructor(scene: Scene, mesh: SceneMesh, name: String, entity: Entity? = null)
Parameters
scene: Scene  The scene to add this object to.
mesh: SceneMesh  The mesh to associate with this object.
name: String  The name of this object.
entity: Entity?  The entity to attach this object to.
SceneObject ( scene , entity )
Constructor for a SceneObject.
Signature
constructor(scene: Scene, entity: Entity? = null)
Parameters
scene: Scene  The scene to add this object to.
entity: Entity?  The entity to attach this object to.

Properties

entity : Entity?
[Get]
Signature
val entity: Entity?
handle : Long
[Get]
Signature
var handle: Long
materials : Array?
[Get]
Array of SceneMaterials created from this SceneObject's mesh property. Changes to the materials in this array will be unique to this SceneObject, but these materials will inhererit any changes made in the SceneMesh they come from.
Signature
var materials: Array<SceneMaterial>?
mesh : SceneMesh?
[Get][Set]
Reference to the SceneMesh used by this SceneObject. This property is a reference to the underlying mesh resource. Changes to the SceneMesh or its SceneMaterials will be reflected across all SceneObjects that reference it.
Signature
var mesh: SceneMesh?

Methods

addInputListener ( listener )
Add an input listener to this SceneObject.
Signature
fun addInputListener(listener: InputListener): Long
Parameters
listener: InputListener  The input listener to add.
Returns
Long  The id of the input listener.
destroy ()
Destory this SceneObject.
Signature
fun destroy()
destroyInternal ()
Destroy this SceneObject's native components.
Signature
open fun destroyInternal()
onClick ( hitInfo , sourceOfInput )
Handler for clicks on this SceneObject.
Signature
open fun onClick(hitInfo: HitInfo, sourceOfInput: Entity)
Parameters
hitInfo: HitInfo  The HitInfo object containing information about the hit.
sourceOfInput: Entity  The entity that generated the pointer event.
onClickDown ( hitInfo , sourceOfInput )
Handler for click downs on this SceneObject. Use onClick() to ensure user releases the click on the SceneObject.
Signature
fun onClickDown(hitInfo: HitInfo, sourceOfInput: Entity)
Parameters
hitInfo: HitInfo  The information related to the hit against the SceneObject.
sourceOfInput: Entity  The entity that was hit.
onHoverStart ( sourceOfInput )
Handler for the start of hovers on this SceneObject.
Signature
open fun onHoverStart(sourceOfInput: Entity)
Parameters
sourceOfInput: Entity  The entity that generated the pointer event.
onHoverStop ( sourceOfInput )
Handler for the termination of hovers on this SceneObject.
Signature
open fun onHoverStop(sourceOfInput: Entity)
Parameters
sourceOfInput: Entity  The entity that generated the pointer event.
onInput ( hitInfo , sourceOfInput , changed , buttonState , downTime )
Handler to handle generic input.
Signature
open fun onInput(hitInfo: HitInfo, sourceOfInput: Entity, changed: Int, buttonState: Int, downTime: Long): Boolean
Parameters
hitInfo: HitInfo  The HitInfo object containing information about the hit.
sourceOfInput: Entity  The entity that generated the pointer event.
changed: Int  A bit mask of changed button state.
buttonState: Int  A bit mask of button state.
downTime: Long  The timestamp when the input interaction began (initial button change)
Returns
Boolean  Whether the input was handled.
onPointerEvent ( hitInfo , type , sourceOfInput , scrollInfo , semanticType )
Handler to handle pointer events on this SceneObject.
Signature
open fun onPointerEvent(hitInfo: HitInfo, type: Int, sourceOfInput: Entity, scrollInfo: Vector2, semanticType: Int = SemanticType.Unknown.id)
Parameters
hitInfo: HitInfo  The HitInfo object containing information about the hit.
type: Int  The type of pointer event.
sourceOfInput: Entity  The entity that generated the pointer event.
scrollInfo: Vector2  Scroll speeds in the x and y directions.
semanticType: Int  The semantic type (e.g. select, grab, etc).
removeInputListener ( id )
Remove an input listener by id.
Signature
fun removeInputListener(id: Long)
Parameters
id: Long  The id of the input listnener to remove.
setIsVisible ( isVisible )
Set whether this SceneObject is visible.
Signature
fun setIsVisible(isVisible: Boolean)
Parameters
isVisible: Boolean  Whether or not this SceneObjet is visible.
setLocalNodePose ( node , pose )
Sets the local transform of the node (relative to it's parent) to the input pose
Signature
fun setLocalNodePose(node: Int, pose: Pose)
Parameters
node: Int  : The node id.
pose: Pose  : The pose.
setPosition ( x , y , z )
Set the 3D position of this SceneObject.
Signature
fun setPosition(x: Float, y: Float, z: Float)
Parameters
x: Float  The x coordinate of the position.
y: Float  The y coordinate of the position.
z: Float  The z coordinate of the position.
setPosition ( position )
Set the 3D position of this SceneObject.
Signature
fun setPosition(position: Vector3)
Parameters
position: Vector3  The position as a Vector3 object.
setRotation ( pitch , yaw , roll )
Set the rotation of this SceneObject.
Signature
fun setRotation(pitch: Float, yaw: Float, roll: Float)
Parameters
pitch: Float  The pitch of the rotation in degrees.
yaw: Float  The yaw of the rotation in degrees.
roll: Float  The roll of the rotation in degrees.
setRotationQuat ( x , y , z , w )
Set the rotation of this SceneObject.
Signature
fun setRotationQuat(x: Float, y: Float, z: Float, w: Float)
Parameters
x: Float  The x component of the quaternion
y: Float  The y component of the quaternion
z: Float  The z component of the quaternion
w: Float  The w component of the quaternion
setRotationQuat ( quat )
Set the rotation of this SceneObject.
Signature
fun setRotationQuat(quat: Quaternion)
Parameters
quat: Quaternion  The quaternion representing the rotation.
setScale ( scale )
Set the scale of the model. The default value is 1.0f.
Signature
open fun setScale(scale: Vector3)
Parameters
scale: Vector3  The scale represented by a Vector3 object.
setSceneMesh ( mesh , name )
Set the SceneMesh for this SceneObject.
Signature
open fun setSceneMesh(mesh: SceneMesh, name: String)
Parameters
mesh: SceneMesh  The scene mesh to set on this SceneObject.
name: String  The name to set on the entity.
shouldFrustumCull ( cull )
Whether this SceneObject can be frustum culled (default is true)
Signature
fun shouldFrustumCull(cull: Boolean)
Parameters
cull: Boolean  Whether or not this SceneObject can be frustum called.
stopInput ( sourceOfInput , downTime )
This function calls the stopInput function on all InputListener for this SceneObject. This is called automatically by Scene when handling inputs.
Signature
open fun stopInput(sourceOfInput: Entity, downTime: Long)
Parameters
sourceOfInput: Entity  The controller Entity that triggered the input
downTime: Long  The timestamp when the input interaction began (initial button change)
updateAnimationTrackToTime ( track , timeInSeconds )
Update the local transforms of the model to match the given animation track at the specified time (matching keyframe time in the glTF).
Track can be found from SceneMesh.getAnimationTracks
Signature
fun updateAnimationTrackToTime(track: Int, timeInSeconds: Float)
Parameters
track: Int  The track id.
timeInSeconds: Float  The time in seconds.
updateNodeLocalPoseToObjectPose ( node , pose )
Sets the local transform of a node (relative to it's parent) such that the resulting object transform (relative to the model) is placed at the input pose
WARNING: This may be an expensive operation as it recalculates object positions
Signature
fun updateNodeLocalPoseToObjectPose(node: Int, pose: Pose)
Parameters
node: Int  : The node id.
pose: Pose  : The pose.
updateSceneMesh ( meshModifier )
Modify and update this SceneObject's mesh.
Signature
fun updateSceneMesh(meshModifier: SceneMesh.() -> Unit)
Parameters
meshModifier: Function1  The mesh modifier to apply to this SceneObject's mesh.