118 lines
2.4 KiB
Plaintext
118 lines
2.4 KiB
Plaintext
#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);
|
|
} |