Configures this subspace element to be interactive and movable, delegating the pose transformation to the system.
/** A sample demonstrating a simple movable component. */
@SubspaceComposable
@Composable
public fun BasicTransformingMovableSample() {
SpatialPanel(modifier = SubspaceModifier.transformingMovable()) {
Text("The user can move me around!")
}
}
/**
* A sample demonstrating movement of sibling composables using the onMove callback from the
* transformingMovable modifier
*/
@SubspaceComposable
@Composable
public fun TransformingMovableSiblingSample() {
val density = LocalDensity.current
var xOffset by remember { mutableStateOf(0.dp) }
var yOffset by remember { mutableStateOf(0.dp) }
var zOffset by remember { mutableStateOf(0.dp) }
val customMovement: (SpatialMoveEvent) -> Unit = { moveEvent ->
with(density) {
xOffset = moveEvent.pose.translation.x.toDp()
yOffset = moveEvent.pose.translation.y.toDp()
zOffset = moveEvent.pose.translation.z.toDp()
}
}
Subspace {
SpatialPanel(modifier = SubspaceModifier.transformingMovable(onMove = customMovement)) {
Text("The user can move me around")
}
SpatialPanel(modifier = SubspaceModifier.offset(x = xOffset, y = yOffset, z = zOffset)) {
Text("Sibling Panel")
}
}
}