Entità SceneCore

Dispositivi XR applicabili
Queste indicazioni ti aiutano a creare esperienze per questi tipi di dispositivi XR.
Visori XR
Occhiali XR con cavo

Un SceneCoreEntity è un componibile di sottospazio che collega le librerie Jetpack SceneCore e Compose per XR in modo da poter utilizzare le entità create con SceneCore nei layout di Compose. In questo modo puoi creare entità di livello inferiore e componenti personalizzati, consentendo al contempo a Compose di ridimensionare, posizionare, riassegnare l'elemento principale, aggiungere elementi secondari e applicare modificatori a queste entità.

Utilizza un'entità SceneCore per posizionare le entità nel layout

L'esempio seguente mostra come utilizzare un'entità SceneCore per posizionare le entità nel layout:

val virtualPixelDensity = session.scene.virtualPixelDensity

Subspace {
    SceneCoreEntity(
        modifier = SubspaceModifier.offset(x = 50.dp),
        factory = {
            SurfaceEntity.create(
                session = session,
                pose = Pose.Identity,
                stereoMode = SurfaceEntity.StereoMode.MONO
            )
        },
        update = { entity ->
            // Compose state changes may be applied to the SceneCore entity here.
            entity.stereoMode = SurfaceEntity.StereoMode.SIDE_BY_SIDE
        },
        sizeAdapter =
            object : SceneCoreEntitySizeAdapter<SurfaceEntity> {
                override fun onLayoutSizeChanged(
                    entity: SurfaceEntity,
                    size: IntVolumeSize
                ) {
                    val extents = FloatSize2d(
                        size.width.toFloat(),
                        size.height.toFloat()
                    )
                    entity.shape = SurfaceEntity.Shape.Quad(extents)
                }
            },
    ) {
        // Content here will be children of the SceneCoreEntity
        // in the scene graph.
    }
}

Punti chiave sul codice

  • Blocco di fabbrica: nel blocco di fabbrica inizializzi l'entità SurfaceEntity sottostante da SceneCore.
  • Blocco di aggiornamento: utilizza il blocco di aggiornamento per modificare le proprietà dell'entità in risposta alle modifiche dello stato di Compose.
  • Adattamento delle dimensioni: l'sizeAdapter comunica le dimensioni dell'entità al sistema di layout di Compose.

Informazioni aggiuntive