ResizableComponent


class ResizableComponent : Component


This Component can be attached to a single instance of an Entity. When attached, this Component will enable the user to resize the Entity by selecting and dragging along the boundaries of a user-resize affordance. While resizing an overlay will appear indicating the proposed updated size.

This component cannot be attached to an AnchorEntity or to the ActivitySpace. Calling Entity.addComponent to an Entity with these types will return false.

Note: This Component is currently unsupported on GltfModelEntity.

Summary

Public companion functions

ResizableComponent
create(
    session: Session,
    minimumSize: FloatSize3d,
    maximumSize: FloatSize3d,
    executor: Executor,
    resizeEventListener: Consumer<ResizeEvent>
)

Public factory function for creating a ResizableComponent.

Public functions

Unit
addResizeEventListener(
    executor: Executor,
    resizeEventListener: Consumer<ResizeEvent>
)

Adds the listener to the set of listeners that are invoked through the resize operation, such as start, ongoing and end.

open Boolean
onAttach(entity: Entity)

Called by an Entity when it attempts to add this Component to itself.

open Unit
onDetach(entity: Entity)

Called by an Entity when it attempts to detach this Component from itself.

Unit

Removes a listener from the set listening to resize events.

Public properties

FloatSize3d

The current size of the affordance for the Entity, in meters.

Float

The aspect ratio of the entity during resizing.

FloatSize3d

An upper bound for the User's resize actions, in meters.

FloatSize3d

A lower bound for the User's resize actions, in meters.

Boolean

Whether a resize overlay should be shown even if the entity is not being resized.

Boolean

Whether the content of the Entity, and all child Entities, should be automatically hidden while it is being resized.

Boolean

Whether the size of the resize overlay should be automatically updated to match the proposed size as resize events are received.

Public companion functions

create

Added in 1.0.0-alpha05
fun create(
    session: Session,
    minimumSize: FloatSize3d = kMinimumSize,
    maximumSize: FloatSize3d = kMaximumSize,
    executor: Executor = HandlerExecutor.mainThreadExecutor,
    resizeEventListener: Consumer<ResizeEvent>
): ResizableComponent

Public factory function for creating a ResizableComponent.

This Component can be attached to a single instance of an Entity. When attached, this Component will enable the user to resize the Entity by dragging along the boundaries of a user-resize affordance.

This component cannot be attached to an AnchorEntity or to the ActivitySpace. Calling Entity.addComponent to an Entity with these types will return false.

Parameters
session: Session

The Session to create the ResizableComponent in.

minimumSize: FloatSize3d = kMinimumSize

A lower bound for the User's resize actions, in meters. This value is used to set constraints on how small the user can resize the bounding box of the entity down to. The size of the content inside that bounding box is fully controlled by the application. The default value is 0 meters.

maximumSize: FloatSize3d = kMaximumSize

An upper bound for the User's resize actions, in meters. This value is used to set constraints on how large the user can resize the bounding box of the entity up to. The size of the content inside that bounding box is fully controlled by the application. The default value is 10 meters.

executor: Executor = HandlerExecutor.mainThreadExecutor

The Executor to run the listener on. By default listener is invoked on the main thread.

resizeEventListener: Consumer<ResizeEvent>

A resize event listener for the event. The application should set the size of a PanelEntity using PanelEntity.size.

Public functions

addResizeEventListener

Added in 1.0.0-alpha05
fun addResizeEventListener(
    executor: Executor = HandlerExecutor.mainThreadExecutor,
    resizeEventListener: Consumer<ResizeEvent>
): Unit

Adds the listener to the set of listeners that are invoked through the resize operation, such as start, ongoing and end.

The listener is invoked on the provided Executor if provided.

Parameters
executor: Executor = HandlerExecutor.mainThreadExecutor

The Executor to run the listener on. By default listener is invoked on the main thread.

resizeEventListener: Consumer<ResizeEvent>

The listener to be invoked when a resize event occurs.

onAttach

Added in 1.0.0-alpha05
open fun onAttach(entity: Entity): Boolean

Called by an Entity when it attempts to add this Component to itself.

This method is restricted because it is only called from Entity.addComponent.

Parameters
entity: Entity

Entity to which this Component was attached.

Returns
Boolean

True if the Component was attached to the given Entity. False if the Entity did not support having this Component attached.

onDetach

Added in 1.0.0-alpha05
open fun onDetach(entity: Entity): Unit

Called by an Entity when it attempts to detach this Component from itself.

This method is restricted because it is only called from Entity.removeComponent.

Parameters
entity: Entity

Entity from which this Component was detached.

removeResizeEventListener

Added in 1.0.0-alpha05
fun removeResizeEventListener(resizeEventListener: Consumer<ResizeEvent>): Unit

Removes a listener from the set listening to resize events.

Parameters
resizeEventListener: Consumer<ResizeEvent>

The listener to be removed.

Public properties

affordanceSize

Added in 1.0.0-alpha05
var affordanceSizeFloatSize3d

The current size of the affordance for the Entity, in meters. This property is automatically updated after resize events to match the resize affordance to the newly suggested size of the content. The apps can still override it. The default value is set to 1 meter. If attached to a PanelEntity, this is updated to the size of the Entity when attached.

fixedAspectRatio

Added in 1.0.0-alpha05
var fixedAspectRatioFloat

The aspect ratio of the entity during resizing. The aspect ratio is determined by taking the entity's width over its height. A value of 0.0f (or negative) means there are no preferences.

This method does not immediately resize the entity. The new aspect ratio will be provided in the Consumer the next time the user resizes the Entity through the reform UI.

maximumEntitySize

Added in 1.0.0-alpha05
var maximumEntitySizeFloatSize3d

An upper bound for the User's resize actions, in meters. This value constrains large the user can resize the bounding box of the Entity. The size of the content inside that bounding box is fully controlled by the application.

minimumEntitySize

Added in 1.0.0-alpha05
var minimumEntitySizeFloatSize3d

A lower bound for the User's resize actions, in meters. This value constrains how small the user can resize the bounding box of the Entity. The size of the content inside that bounding box is fully controlled by the application.

shouldAlwaysShowOverlay

Added in 1.0.0-alpha05
var shouldAlwaysShowOverlayBoolean

Whether a resize overlay should be shown even if the entity is not being resized.

This is useful for resizing multiple panels at once.

shouldAutoHideContent

Added in 1.0.0-alpha05
var shouldAutoHideContentBoolean

Whether the content of the Entity, and all child Entities, should be automatically hidden while it is being resized.

shouldAutoUpdateOverlay

Added in 1.0.0-alpha05
var shouldAutoUpdateOverlayBoolean

Whether the size of the resize overlay should be automatically updated to match the proposed size as resize events are received.