/* * RenderContext.cpp * * Created on: Nov 30, 2016 * Author: tibi */ #include #include #include using namespace farmlands::components::basic; using namespace farmlands::model; namespace farmlands { namespace graphics { float RenderContext::xToWorld(float x) { float cellW = viewport.pixelsPerUnitX * m_camera->scale; return (x - viewport.width / 2) / cellW + m_cameraObj->transform.x; } float RenderContext::yToWorld(float y) { float cellH = viewport.pixelsPerUnitY * m_camera->scale; return (y - viewport.height / 2) / cellH + m_cameraObj->transform.y; } float RenderContext::xToScreen(float x) { float cellW = viewport.pixelsPerUnitX * m_camera->scale; return (x - m_cameraObj->transform.x) * cellW + viewport.width / 2; } float RenderContext::yToScreen(float y) { float cellH = viewport.pixelsPerUnitY * m_camera->scale; return (y - m_cameraObj->transform.y) * cellH + viewport.height / 2; } bool RenderContext::visible(SDL_Rect& rect) { SDL_Rect screen = { 0, 0, viewport.width, viewport.height }; return SDL_HasIntersection(&screen, &rect); } void RenderContext::setCamera(GameObject* camera) { m_cameraObj = camera; m_camera = camera->component(); } } }