Entités SceneCore

Appareils XR concernés
Ces conseils vous aideront à créer des expériences pour ces types d'appareils XR.
Casques XR
Lunettes XR filaires

Un SceneCoreEntity est un composable de sous-espace qui relie les bibliothèques Jetpack SceneCore et Compose pour XR afin que vous puissiez utiliser des entités créées avec SceneCore dans les mises en page Compose. Cela vous permet de créer des entités de niveau inférieur et des composants personnalisés, tout en permettant à Compose de dimensionner, positionner, reparenter, ajouter des enfants et appliquer des modificateurs à ces entités.

Utiliser une entité SceneCore pour placer des entités dans votre mise en page

L'exemple suivant montre comment utiliser une entité SceneCore pour placer des entités dans votre mise en page :

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.
    }
}

Points clés concernant le code

  • Bloc d'usine : le bloc d'usine vous permet d'initialiser l'entité SurfaceEntity sous-jacente à partir de SceneCore.
  • Bloc de mise à jour : utilisez le bloc de mise à jour pour modifier les propriétés de l'entité en réponse aux modifications de l'état de Compose.
  • Adaptation de la taille : sizeAdapter communique les dimensions de l'entité au système de mise en page Compose.

Informations supplémentaires