Pensando em um jogo comum, não importa o tipo de jogo, é muito provável que precisemos de algum tipo de câmera. Por exemplo:
- Câmera de depuração: controlada pelo teclado e mouse, com isso somos capazes de nos mover em qualquer lugar da nossa cena.
- Câmera com script: com isso, podemos instruir a câmera a se mover, seguindo um caminho determinado.
- Câmera do jogador.
- ...
Cada um desses tipos de câmera possui sua própria função de atualização. O sistema mais fácil (e ruim) é ter uma classe de gerenciador de câmeras com uma função de atualização genérica e funções especializadas de atualização para cada tipo de câmera. Dentro da função de atualização genérica, temos uma instrução switch que, com base no tipo de câmera, chama a função de atualização adequada.
Em vez disso, pensei em outra abordagem: padrão de estratégia. Movemos o comportamento de cada câmera (método de atualização) em uma classe apropriada que implementa uma interface comum. No gerenciador de câmeras, temos um membro para essa interface e podemos definir dinamicamente qualquer comportamento que desejar.
O que você acha disso? Que outros sistemas você me sugere? Obrigado.
Informações adicionais: existe a possibilidade real de eu precisar de mais de uma câmera ativa, por exemplo, para reflexões. Em suma, devo levar em conta também isso.