Componentes
Azure Remote Rendering usa el patrón del sistema de componentes de entidades. Mientras que las entidades representan la posición y la composición jerárquica de los objetos, los componentes son responsables de implementar el comportamiento.
Los tipos de componentes que se usan con más frecuencia son los mesh components, que agregan mallas a la canalización de representación. Del mismo modo, los componentes de iluminación se usan para agregar iluminación, y los planos de corte se emplean para cortar mallas abiertas.
Todos estos componentes usan la transformación (posición, rotación y escala) de la entidad a la que están asociados, como su punto de referencia.
Trabajo con componentes
Puede agregar, quitar y manipular fácilmente los componentes mediante programación:
// 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;
Un componente se asocia a una entidad en el momento de su creación. Después, no se puede pasar a otra entidad. Los componentes se eliminan explícitamente con Component.Destroy()
o de forma automática cuando se destruye la entidad propietaria del componente.
Solo se puede agregar una instancia de cada tipo de componente a una entidad a la vez.
Específicos de Unity
La integración de Unity tiene funciones de extensión adicionales para interactuar con los componentes. Consulte Componentes y objetos de juegos de Unity.
Documentación de la API
- ComponentBase de C#
- RenderingConnection.CreateComponent() de C#
- Entity.FindComponentOfType() de C#
- ComponentBase C++
- RenderingConnection::CreateComponent() de C++
- Entity::FindComponentOfType() de C++