Componentes
O Azure Remote Rendering usa o padrão Sistema de componente de entidade. Embora as entidades representem a posição e a composição hierárquica dos objetos, os componentes são responsáveis por implementar o comportamento.
Os tipos de componentes usados com mais frequência são mesh components, que adicionam malhas ao pipeline de renderização. Da mesma forma, componentes de luz são usados para adicionar iluminação e componentes de plano de corte são usados para cortar malhas abertas.
Todos esses componentes usam a transformação (posição, rotação, escala) da entidade à qual eles estão anexados como ponto de referência.
Trabalho com componentes
É fácil adicionar, remover e manipular componentes programaticamente:
// 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;
Um componente é anexado a uma entidade no momento da criação. Ele não pode ser movido depois para outra entidade. Os componentes são excluídos explicitamente com Component.Destroy()
ou automaticamente quando a entidade do proprietário é destruída.
Apenas uma instância de cada tipo de componente pode ser adicionada por vez a uma entidade.
Específico ao Unity
A integração do Unity tem funções de extensão adicionais para interação com componentes. Veja Componentes e objetos de jogos do Unity.
Documentação da API
- ComponentBase de C#
- RenderingConnection.CreateComponent() de C#
- Entity.FindComponentOfType() de C#
- ComponentBase de C++
- RenderingConnection::CreateComponent() de C++
- Entity::FindComponentOfType() de C++