From 91cc2343e475df1e56075092463f12e9650aaa49 Mon Sep 17 00:00:00 2001 From: Ben Date: Mon, 8 Oct 2018 13:32:20 +0100 Subject: [PATCH] Added render functions, now moving everything to use rect and render functions --- crumpet-engine/entity.h | 4 ++-- crumpet-engine/renderer.cpp | 38 +++++++++++++++++++++++++++++++++++-- crumpet-engine/renderer.h | 13 +++++++++---- 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/crumpet-engine/entity.h b/crumpet-engine/entity.h index bc410b7..f09b658 100644 --- a/crumpet-engine/entity.h +++ b/crumpet-engine/entity.h @@ -45,8 +45,8 @@ public: virtual ~Entity(); protected: - // std::string PATH = "C:/Users/Ben/Desktop/crumpet-engine"; - std::string PATH = "E:/Games/crumpet-engine"; + std::string PATH = "C:/Users/Ben/Desktop/crumpet-engine"; + // std::string PATH = "E:/Games/crumpet-engine"; private: std::string m_name; diff --git a/crumpet-engine/renderer.cpp b/crumpet-engine/renderer.cpp index 62a2a6b..28105b1 100644 --- a/crumpet-engine/renderer.cpp +++ b/crumpet-engine/renderer.cpp @@ -35,11 +35,45 @@ void Renderer::RenderSprite(Sprite* sprite) { } void Renderer::SetRendererColour(Vec4* col) { - + SDL_SetRenderDrawColor(SDLRenderer, col->x, col->y, col->z, col->w); } -void Renderer::RenderEmptyRect() { +void Renderer::RenderEmptyRect(Rect* rect) { + SDL_RenderDrawRect(SDLRenderer, rect->ToSDLRect); +} +void Renderer::RenderFilledRect(Rect* rect) { + SDL_RenderFillRect(SDLRenderer, rect->ToSDLRect); +} + +void Renderer::RenderLines(std::vector points) { + for (unsigned int i = 0; i < points.size(); i++) { + SDL_RenderDrawLine(SDLRenderer, points[i]->x, points[i]->y, points[i]->z, points[i]->w); + } +} + +void Renderer::RenderTexture(Rect* fromRect, Rect* toRect, SDL_Texture* texture) { + SDL_RenderCopy(SDLRenderer, texture, fromRect->ToSDLRect(), toRect->ToSDLRect()); +} + +void Renderer::RenderTexture(Rect* fromRect, Rect* toRect, SDL_Surface* surface) { + SDL_Texture* texture = SDL_CreateTextureFromSurface(SDLRenderer, surface); + SDL_RenderCopy(SDLRenderer, texture, fromRect->ToSDLRect(), toRect->ToSDLRect()); + SDL_DestroyTexture(texture); +} + +void Renderer::RenderTexture(Rect* fromRect, Rect* toRect, SDL_Texture* texture, const double angle, Vec2* rotationCenter) { + SDL_Point temp = { rotationCenter->x, rotationCenter->y }; + SDL_Point* center = new SDL_Point(temp); + SDL_RenderCopyEx(SDLRenderer, texture, fromRect->ToSDLRect(), toRect->ToSDLRect(), angle, center, SDL_FLIP_NONE); +} + +void Renderer::RenderTexture(Rect* fromRect, Rect* toRect, SDL_Surface* surface, const double angle, Vec2* rotationCenter) { + SDL_Point temp = { rotationCenter->x, rotationCenter->y }; + SDL_Point* center = new SDL_Point(temp); + SDL_Texture* texture = SDL_CreateTextureFromSurface(SDLRenderer, surface); + SDL_RenderCopyEx(SDLRenderer, texture, fromRect->ToSDLRect(), toRect->ToSDLRect(), angle, center, SDL_FLIP_NONE); + SDL_DestroyTexture(texture); } void Renderer::RenderUpdate() { diff --git a/crumpet-engine/renderer.h b/crumpet-engine/renderer.h index 968454f..a02c3ab 100644 --- a/crumpet-engine/renderer.h +++ b/crumpet-engine/renderer.h @@ -2,9 +2,11 @@ #include #include +#include #include #include "entity.h" #include "sprite.h" +#include "rect.h" class Renderer { public: @@ -19,10 +21,13 @@ public: void SetRendererColour(Vec4* col); - void RenderEmptyRect(); - void RenderFilledRect(); - void RenderLines(); - void RenderTexture(); + void RenderEmptyRect(Rect* rect); + void RenderFilledRect(Rect* rect); + void RenderLines(std::vector points); + void RenderTexture(Rect* fromRect, Rect* toRect, SDL_Texture* texture); + void RenderTexture(Rect* fromRect, Rect* toRect, SDL_Surface* surface); + 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 RenderUpdate(); void RenderClear();