SceneCoreEntity – это компонуемая функция подпространства, которая связывает библиотеки Jetpack SceneCore и Compose for XR, чтобы вы могли использовать объекты, созданные с помощью SceneCore, в макетах Compose. Это позволяет создавать объекты более низкого уровня и пользовательские компоненты, позволяя Compose определять размер, позиционировать, переназначать родительские элементы, добавлять дочерние элементы и применять модификаторы к этим объектам.
Используйте объект SceneCore, чтобы разместить объекты в макете
В следующем примере показано, как использовать объект SceneCore для размещения объектов в макете:
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. } }
Важные сведения о коде
- Блок фабрики. В нем инициализируется объект
SurfaceEntityиз SceneCore. - Блок обновления. Используйте блок обновления, чтобы изменить свойства объекта в ответ на изменения в состоянии Compose.
- Адаптация размера.
sizeAdapterпередает размеры объекта обратно в систему макета Compose.
Дополнительная информация
- Чтобы узнать, как загружать 3D-контент в
SceneCoreEntity, прочитайте статью Как добавить 3D-модели в приложение.