Camera class now can be passed to renderer and game to apply an active camera
This commit is contained in:
@@ -15,6 +15,14 @@ void Game::PollEvents() {
|
||||
this->renderer->CloseDisplay();
|
||||
}
|
||||
|
||||
void Game::AddCamera(std::string name, Camera* camera) {
|
||||
Cameras[name] = camera;
|
||||
}
|
||||
|
||||
void Game::UseCamera(std::string name) {
|
||||
renderer->ApplyCameraToScene(Cameras[name]);
|
||||
}
|
||||
|
||||
Game::~Game() {
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <SDL.h>
|
||||
#include "renderer.h"
|
||||
#include "camera.h"
|
||||
@@ -10,7 +11,10 @@ public:
|
||||
Game(std::string title, int width, int height, int targetFramerate, int targetUpdaterate);
|
||||
|
||||
Renderer* renderer;
|
||||
Camera* camera;
|
||||
std::map<std::string, Camera*> Cameras;
|
||||
|
||||
void AddCamera(std::string name, Camera* camera);
|
||||
void UseCamera(std::string name);
|
||||
|
||||
void PollEvents();
|
||||
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
int main(int argc, char** argv) {
|
||||
Game game("Crumpet engine", SCREEN_WIDTH, SCREEN_HEIGHT, 0, 1000 / 60); // 1000 / 60);
|
||||
Camera camera(SCREEN_WIDTH, SCREEN_HEIGHT);
|
||||
game.camera = &camera;
|
||||
game.AddCamera("follow", &camera);
|
||||
game.UseCamera("follow");
|
||||
Timer timer;
|
||||
|
||||
Sprite sans("sans", game.renderer, SpriteType::SPRITE_ANIMATED);
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include "renderer.h"
|
||||
#include "entity.h"
|
||||
|
||||
Renderer::Renderer(std::string title, int width, int height, int targetFramerate) {
|
||||
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
|
||||
@@ -63,6 +62,10 @@ void Renderer::RenderTexture(Rect* fromRect, Rect* toRect, SDL_Surface* surface,
|
||||
SDL_DestroyTexture(texture);
|
||||
}
|
||||
|
||||
void Renderer::ApplyCameraToScene(Camera* camera) {
|
||||
this->ActiveCamera = camera;
|
||||
}
|
||||
|
||||
void Renderer::RenderUpdate() {
|
||||
SDL_SetRenderDrawColor(SDLRenderer, 66, 134, 244, 255);
|
||||
SDL_RenderPresent(SDLRenderer);
|
||||
|
||||
@@ -4,14 +4,15 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <SDL.h>
|
||||
#include "rect.h"
|
||||
#include "camera.h"
|
||||
|
||||
class Renderer {
|
||||
public:
|
||||
Renderer(std::string title, int width, int height, int targetFramerate);
|
||||
|
||||
SDL_Renderer *SDLRenderer;
|
||||
|
||||
Camera* ActiveCamera;
|
||||
|
||||
void SetRendererColour(Vec4* col);
|
||||
void RenderEmptyRect(Rect* rect);
|
||||
void RenderFilledRect(Rect* rect);
|
||||
@@ -21,6 +22,8 @@ public:
|
||||
void RenderTexture(Rect* fromRect, Rect* toRect, SDL_Texture* surface, const double angle, Vec2* rotationCenter);
|
||||
void RenderTexture(Rect* fromRect, Rect* toRect, SDL_Surface* surface, const double angle, Vec2* rotationCenter);
|
||||
|
||||
void ApplyCameraToScene(Camera* camera);
|
||||
|
||||
void RenderUpdate();
|
||||
void RenderClear();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user