구성 요소
Azure Remote Rendering은 엔터티 구성 요소 시스템 패턴을 사용합니다. 엔터티가 개체의 위치 및 계층적 컴퍼지션을 나타낸다면 구성 요소는 동작 구현을 담당합니다.
가장 자주 사용되는 구성 요소 유형은 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 설명서
- C# ComponentBase
- C# 렌더링커넥트ion. CreateComponent()
- C# Entity.FindComponentOfType()
- C++ ComponentBase
- C++ 렌더링커넥트ion::CreateComponent()
- C++ 엔터티::FindComponentOfType()