#include "cCamera.hpp" /*** Custom Header Files ***/ #include "cRenderer.hpp" #include "../UtilityEngine/cUtility.hpp" using VideoEngine::cCamera; using UtilityEngine::cUtility; cCamera::cCamera( const signed long int xPos /*= 0*/, const signed long int yPos /*= 0*/, const unsigned long int reswidth /*= 640*/, const unsigned long int reshight /*= 480*/ ) : mp_texture(nullptr) { m_position.x = Sint16(xPos); m_position.y = Sint16(yPos); m_position.w = Uint16(reswidth); m_position.h = Uint16(reshight); CreateCamera(); } cCamera::cCamera( const cCamera& copy ) { m_position.x = Sint16(copy.getXPos()); m_position.y = Sint16(copy.getYPos()); m_position.w = Uint16(copy.getWidthRes()); m_position.h = Uint16(copy.getHeightRes()); setTexture(copy.getTexture()); } cCamera::~cCamera() { DeleteCamera(); } void cCamera::Draw() { cRenderer::Inst().Render(mp_texture, nullptr, &m_position); } void cCamera::SaveImage( const cString& fileName, const cString& dir /*= ""*/ ) { cRenderer::Inst().SaveTexture(mp_texture, fileName, dir); } ///Sets void cCamera::setXPosandYPos( const signed long int xPos /*= 0*/, const signed long int yPos /*= 0*/ ) { m_position.x = Sint16(xPos); m_position.y = Sint16(yPos); CreateCamera(); } void cCamera::setResWidthandResHeight( const unsigned long int reswidth /*= 640*/, const unsigned long int reshight /*= 480*/ ) { m_position.w = Uint16(reswidth); m_position.h = Uint16(reshight); CreateCamera(); } void cCamera::setTexture( SDL_Texture* texture ) { DeleteCamera(); CreateCamera(); cRenderer::Inst().CopyTexture(texture, mp_texture); } ///Gets const unsigned long int cCamera::getXPos() const { return m_position.x; } const unsigned long int cCamera::getYPos() const { return m_position.y; } const unsigned long int cCamera::getWidthRes() const { return m_position.w; } const unsigned long int cCamera::getHeightRes() const { return m_position.h; } SDL_Texture* cCamera::getCameraView() const { return mp_texture; } SDL_Texture* cCamera::getTexture() const { return mp_texture; } void cCamera::CreateCamera() { DeleteCamera(); mp_texture = cRenderer::Inst().NewTexture(m_position.w, m_position.h, SDL_TEXTUREACCESS_TARGET); if (mp_texture == nullptr) cUtility::Inst().Message("Unable to create camera.", __AT__); } void cCamera::DeleteCamera() { if (mp_texture != nullptr) SDL_DestroyTexture(mp_texture); }