Entity SceneCore

Perangkat XR yang kompatibel
Panduan ini membantu Anda membangun pengalaman untuk jenis perangkat XR ini.
Headset XR
Kacamata XR Berkabel

SceneCoreEntity adalah composable subruang yang menjembatani library Jetpack SceneCore dan Compose untuk XR sehingga Anda dapat menggunakan entity yang dibuat dengan SceneCore di tata letak Compose. Hal ini memungkinkan Anda membangun entity tingkat rendah dan komponen kustom sekaligus memungkinkan Compose mengukur, memosisikan, mengubah induk, menambahkan turunan, dan menerapkan pengubah ke entity tersebut.

Menggunakan entity SceneCore untuk menempatkan entity di tata letak Anda

Contoh berikut menunjukkan cara menggunakan entity SceneCore untuk menempatkan entity dalam tata letak Anda:

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

Poin penting tentang kode

  • Blok factory: Blok factory adalah tempat Anda melakukan inisialisasi entity SurfaceEntity yang mendasarinya dari SceneCore.
  • Blok update: Gunakan blok update untuk mengubah properti entity sebagai respons terhadap perubahan status Compose Anda.
  • Adaptasi Ukuran: sizeAdapter mengomunikasikan dimensi entity kembali ke sistem tata letak Compose.

Informasi tambahan