Projeto IDJ - Towers Of Madness
TowerDefenseLovecraftnianoZombicida
|
Classe que modela a câmera. Mais...
#include <Camera.h>
Métodos Públicos Estáticos | |
static void | Follow (GameObject *newFocus) |
Coloca a câmera para seguir o GameObject enviado. Mais... | |
static void | Unfollow (void) |
Caso a câmera esteja seguindo um objeto, a câmera pare de seguir esse objeto. Mais... | |
static void | Update (float dt) |
Atualiza o estado da câmera. Mais... | |
static void | ForceLinearZoom (float newZoom) |
Força um valor para o zoom. Mais... | |
static void | ForceLogZoom (float newZoom) |
Força um valor para o zoom. Mais... | |
static void | SetZoomable (bool zoomable) |
Trava ou destrava o zoom. Mais... | |
static void | Zoom (float deltaZoom) |
Altera o zoom corrente. Mais... | |
static void | SetZoomLimits (float minZoom=CAMERA_DEFAULT_MIN_LOG_ZOOM, float maxZoom=CAMERA_DEFAULT_MAX_LOG_ZOOM) |
Estabelece os limites superior e inferior do zoom. Mais... | |
static float | GetLinearZoom (void) |
Informa o valor do zoom corrente. Mais... | |
static float | GetLogZoom (void) |
Informa o valor do zoom corrente na escala logarítmica. Mais... | |
static void | SetSpeedLimits (float minSpeed=CAMERA_DEFAULT_MIN_SPEED, float maxSpeed=CAMERA_DEFAULT_MAX_SPEED) |
Estabelece os limites superior e inferior da velocidade da câmera. Mais... | |
static float | GetMinSpeed (void) |
Retorna a velocidade mínima da câmera. Mais... | |
static float | GetMaxSpeed (void) |
Retorna a velocidade máxima da câmera. Mais... | |
static void | SetZoomSpeed (float newZoomSpeed) |
Altera a sensibilidade do zoom. Mais... | |
static Vec2 | WorldToScreen (Vec2 world) |
Converte um ponto do espaço de coordenadas do mundo para o espaço de coordenadas da tela. Mais... | |
static Rect | WorldToScreen (Rect world) |
Converte um retângulo do espaço de coordenadas do mundo para o espaço de coordenadas da tela. Mais... | |
static Vec2 | ScreenToWorld (Vec2 screen) |
Converte um ponto do espaço de coordenadas da tela para o espaço de coordenadas do mundo. Mais... | |
static Rect | ScreenToWorld (Rect screen) |
Converte um retângulo do espaço de coordenadas da tela para o espaço de coordenadas do mundo. Mais... | |
Atributos Estáticos Públicos | |
static Vec2 | pos = Vec2(0,0) |
Ponto de início do que deve ser exibido na tela. Mais... | |
Métodos Privados | |
Camera () | |
Construtor privado que não deve ser implementado. Mais... | |
Atributos Privados Estáticos | |
static GameObject * | focus = nullptr |
static float | currentLogZoom = 0.0 |
static float | minLogZoom = CAMERA_DEFAULT_MIN_LOG_ZOOM |
static float | maxLogZoom = CAMERA_DEFAULT_MAX_LOG_ZOOM |
static bool | zoomFixed = !CAMERA_DEFAULT_ZOOMABLE |
static float | logZoomSpeed = CAMERA_DEFAULT_LOG_ZOOM_SPEED |
static float | minSpeed = CAMERA_DEFAULT_MIN_SPEED |
static float | maxSpeed = CAMERA_DEFAULT_MAX_SPEED |
static float | currentSpeed = CAMERA_DEFAULT_MIN_SPEED |
Classe que modela a câmera.
A Câmera contém informações sobre qual posição da tela deve ser renderizada, qual objeto deve ficar centralizado(caso necessário). Também é responsável por lidar o Zoom, rastreando informações como:
O zoom é armazenado internamente de forma logarítmica para permitir um comportamento linear nas suas velocidades de zoom e movimentação da câmera, que dependem diretamente do nível atual de zoom. A base do zoom é representado em CAMERA_LOG_ZOOM_BASE e indica que, um zoom de 2, representa multiplicar as sprites por CAMERA_LOG_ZOOM_BASE^(2). Já um zoom de -2 representa CAMERA_LOG_ZOOM_BASE^(-2).
|
private |
Construtor privado que não deve ser implementado.
Essa classe deve ser estática e se alguém tentar de alguma forma instanciar dará erro na compilação/ligação.
|
static |
Coloca a câmera para seguir o GameObject enviado.
newFocus | objetos o qual a câmera deve acompanhar. |
Basicamente atribui newFocus ao focus.
|
static |
Força um valor para o zoom.
newZoom | novo valor para o Zoom |
O valor informado se torna o zoom corrente. O novo valor do zoom pode extrapolar os limites existentes. Esse valor, mesmo que fora dos limites, será convertido para a escala logarítmica e atribuído ao currentLogZoom.
|
static |
Força um valor para o zoom.
newZoom | novo valor para o Zoom |
O valor informado se torna o zoom corrente. O novo valor do zoom pode extrapolar os limites existentes. Esse valor, mesmo que fora dos limites, será atribuído ao currentLogZoom.
|
static |
Informa o valor do zoom corrente.
Se o valor for 1.0 significa que nenhum zoom está sendo aplicado. Se for maior que 1.0 significa que as imagens devem ser ampliadas. Se for menor que 1.0 significa que as imagens devem ser reduzidas.
|
static |
Informa o valor do zoom corrente na escala logarítmica.
Se o valor for 0.0 significa que nenhum zoom está sendo aplicado. Se for maior que 0.0 significa que as imagens devem ser ampliadas. Se for menor que 0.0 significa que as imagens devem ser reduzidas.
|
static |
Retorna a velocidade máxima da câmera.
O valor máximo é a velocidade que a câmera vai se mover quando estiver com o mínimo de zoom possível, ou seja, o mais afastado possível.
|
static |
Retorna a velocidade mínima da câmera.
O valor mínimo é a velocidade que a câmera vai se mover quando estiver com o máximo de zoom possível, ou seja, o mais próximo possível.
Converte um ponto do espaço de coordenadas da tela para o espaço de coordenadas do mundo.
screen | o ponto na tela a ser convertido |
Essa função realiza o cálculo para se retornar onde, no espaço de coordenadas do mundo, um ponto na tela estaria localizado. O zoom é considerado nesse cálculo.
Converte um retângulo do espaço de coordenadas da tela para o espaço de coordenadas do mundo.
screen | o retângulo na tela a ser convertido |
Essa função realiza o cálculo para se retornar onde, no espaço de coordenadas do mundo, um retângulo na tela estaria localizado. O zoom é considerado nesse cálculo.
|
static |
Estabelece os limites superior e inferior da velocidade da câmera.
minSpeed | Novo limite inferior. |
maxSpeed | Novo limite superior. |
Se o valor de minSpeed ou maxSpeed não forem fornecidos, o valor default será atribuído no lugar.
|
static |
Trava ou destrava o zoom.
newZoom | novo valor para o Zoom |
Caso o argumento da função seja true, as futuras chamadas à Zoom não terão mais efeito. Caso seja false as futuras chamadas à Zoom terão efeito. Esse efeito é obtido atribuindo à variável zoomFixed o oposto desse valor.
|
static |
Estabelece os limites superior e inferior do zoom.
minZoom | Novo limite inferior. |
maxZoom | Novo limite superior. |
Se o valor de minZoom ou maxZoom não forem fornecidos, o valor default será atribuído no lugar.
|
static |
Altera a sensibilidade do zoom.
newZoomSpeed | Novo valor para sensibilidade o zoom. |
Quanto maior o newZoomSpeed, mais sensível será o zoom. Quanto menor o newZoomSpeed, menos sensível será o zoom. Esse efeito é obtido atribuindo newZoomSpeed à zoomSpeed.
|
static |
Caso a câmera esteja seguindo um objeto, a câmera pare de seguir esse objeto.
Basicamente atribui nullptr ao focus.
|
static |
Atualiza o estado da câmera.
dt | Intervalo de tempo transcorrido do frame anterior para o grame atual. |
Uma série de operações devem ser feitas:
Converte um ponto do espaço de coordenadas do mundo para o espaço de coordenadas da tela.
world | o ponto no mundo a ser convertido |
Essa função realiza o cálculo para se retornar onde, no espaço de coordenadas da tela, um ponto no mundo estaria localizado. O zoom é considerado nesse cálculo.
Converte um retângulo do espaço de coordenadas do mundo para o espaço de coordenadas da tela.
world | o retângulo no mundo a ser convertido |
Essa função realiza o cálculo para se retornar onde, no espaço de coordenadas da tela, um retângulo no mundo estaria localizado. O zoom é considerado nesse cálculo.
|
static |
Altera o zoom corrente.
deltaZoom | Variação no zoom. |
O zoom corrente é alterado logaritmicamente em deltaZoom*logZoomSpeed. Só tem efeito se o valor de zoomFixed for falso. Se o novo valor para o zoom extrapolar o limite superior, o valor do limite superior será usado. Se o novo valor para o zoom extrapolar o limite inferior, o valor do limite inferior será usado. Também ajusta a posição da câmera para que o ponto onde o mouse estava continue no mesmo lugar.
|
staticprivate |
Armazena o valor do zoom atual, informando em quantas vezes os objetos devem ser ampliados. Ele deve estar estre o minZoom e o maxZoom, a não ser que o método ForceZoom seja usado. Os métodos Zoom e ForceZoom alteram seu valor.
|
staticprivate |
Armazena a velocidade atual de movimento da câmera quando não está focalizada em nenhum objeto.
|
staticprivate |
Gameobject que ficará centralizado na câmera. Caso seja nullptr a câmera se moverá pelas setinhas/WASD.
|
staticprivate |
Armazena a velocidade com a qual o zoom deve ocorrer. O argumento do método Zoom é multiplicado por esse valor para depois ser somado ao currentZoom.
|
staticprivate |
Armazena o valor mínimo que o zoom pode ter. Esse limite é ignorado pelo método ForceZoom. É alterado pelo SetZoomLimits.
|
staticprivate |
Armazena o valor máximo da velocidade da câmera.
|
staticprivate |
Armazena o valor mínimo que o zoom pode ter. Esse limite é ignorado pelo método ForceZoom. É alterado pelo SetZoomLimits.
|
staticprivate |
Armazena o valor mínimo da velocidade da câmera.
Ponto de início do que deve ser exibido na tela.
Contém a informação do ponto no jogo que corresponde ao (0,0) da janela do jogo.
|
staticprivate |
Se for verdadeiro, o zoom não será alterado pelo método Zoom. Caso contrário o método Zoom pode mudar o valor corrente do zoom. É alterado pelo método SetZoomable.