Компоненты

Удаленная отрисовка Azure использует шаблон проектирования Entity-Component-System (Система компонентов cущностей). Сущности представляют собой данные о расположении и иерархической композиции объектов, а компоненты отвечают за реализацию поведения.

Наиболее часто используемые типы компонентов — это mesh components, которые добавляют сетки в конвейер отрисовки. Аналогичным образом компоненты освещения используются для добавления освещения, а компоненты сечения — для сечения открытых сеток.

Все эти компоненты используют преобразование (изменение расположения, поворота, масштабирование) сущности, к которой они присоединены, в качестве опорной точки.

Работа с компонентами

Вы можете легко программно добавлять и удалять компоненты и оперировать ими.

// create a point light component
RenderingSession session = GetCurrentlyConnectedSession();
PointLightComponent lightComponent = session.Connection.CreateComponent(ObjectType.PointLightComponent, ownerEntity) as PointLightComponent;

lightComponent.Color = new Color4Ub(255, 150, 20, 255);
lightComponent.Intensity = 11;

// ...

// destroy the component
lightComponent.Destroy();
lightComponent = null;
// create a point light component
ApiHandle<RenderingSession> session = GetCurrentlyConnectedSession();

ApiHandle<PointLightComponent> lightComponent = session->Connection()->CreateComponent(ObjectType::PointLightComponent, ownerEntity)->as<PointLightComponent>();

// ...

// destroy the component
lightComponent->Destroy();
lightComponent = nullptr;

Компонент прикрепляется к сущности во время создания. После этого его нельзя передать другой сущности. Компоненты явным образом удаляются с помощью функции Component.Destroy() или это происходит автоматически при уничтожении сущности-владельца компонента.

За раз к сущности можно добавить только один экземпляр каждого типа компонента.

Особенности при работе с Unity

Интеграция Unity предоставляет дополнительные функции расширения для взаимодействия с компонентами. Дополнительную информацию см. в статье Игровые объекты и компоненты Unity.

Документация по API

Следующие шаги