Tempo de vida do objeto e do recurso
O Azure Remote Rendering distingue dois tipos: objetos e recursos.
Tempo de vida do objeto
Os objetos são considerados coisas que o usuário pode criar, modificar e destruir a seu critério. Os objetos podem ser duplicados livremente, e cada instância pode ser modificada ao longo do tempo. Consequentemente, as entidades e os componentes são objetos.
O tempo de vida dos objetos está totalmente sob controle do usuário. No entanto, ele não está relacionado ao tempo de vida da representação do lado do cliente. Classes como Entity
e Component
têm uma função Destroy
que deve ser chamada para desalocar o objeto no host de renderização remoto. Além disso, Entity.Destroy()
destruirá a entidade, seus filhos e todos os componentes nessa hierarquia.
Tempo de vida do recurso
Os recursos são as coisas cujo tempo de vida é totalmente gerenciado pelo host de remote rendering. Os recursos são uma referência contada internamente. Eles são desalocados quando ninguém os referenciam mais.
A maioria dos recursos só pode ser criada indiretamente, normalmente carregando-os de um arquivo. Quando o mesmo arquivo é carregado várias vezes, o Azure Remote Rendering retornará a mesma referência e não carregará os dados novamente.
Muitos recursos são imutáveis, por exemplo, malhas e texturas. No entanto, alguns recursos são mutáveis, por exemplo, materiais. Como os recursos geralmente são compartilhados, a modificação de um recurso pode afetar vários objetos. Por exemplo, alterar a cor de um material alterará a cor de todos os objetos que usam malhas, que, por sua vez, fazem referência a esse material.
Recursos internos
O Azure Remote Rendering contém alguns recursos integrados, que podem ser carregados anexando o respectivo identificador com builtin://
o durante a chamada para RenderingSession.Connection.LoadXYZAsync()
. Os recursos integrados disponíveis estão listados na documentação de cada respectivo recurso. Por exemplo, o capítulo do céu lista as texturas integradas do céu.
Tempo de vida geral
O tempo de vida de todos os objetos e recursos está vinculado à conexão. Ao desconectar, tudo é descartado. Ao se reconectar à mesma sessão, o grafo de cena ficará vazio e todos os recursos serão limpos.
Na prática, carregar o mesmo recurso em uma sessão, após uma desconexão, costuma ser mais rápido do que a primeira vez. Isto ocorre pois a maioria dos recursos deve ser baixada do Armazenamento do Azure pela primeira vez, o que não é necessário na segunda vez, economizando uma quantidade considerável de tempo.