diff options
author | Piotr Dziwinski <piotrdz@gmail.com> | 2012-09-19 22:53:06 +0200 |
---|---|---|
committer | Piotr Dziwinski <piotrdz@gmail.com> | 2012-09-19 22:53:06 +0200 |
commit | 7479f486b671acb2a6aea2c84a56b383aaba00ca (patch) | |
tree | 4043545a14234dfaa2d7d08d59c7ee9ee97f0de9 /src/graphics/engine | |
parent | 901f10b2bac18a2063cd21798f22b3917e8519b5 (diff) | |
parent | 57d33d79ea570773d84ad81d4a61f50e079979ef (diff) | |
download | colobot-7479f486b671acb2a6aea2c84a56b383aaba00ca.tar.gz colobot-7479f486b671acb2a6aea2c84a56b383aaba00ca.tar.bz2 colobot-7479f486b671acb2a6aea2c84a56b383aaba00ca.zip |
Forgotten fix in dev-graphics
Diffstat (limited to 'src/graphics/engine')
-rw-r--r-- | src/graphics/engine/camera.cpp | 100 | ||||
-rw-r--r-- | src/graphics/engine/camera.h | 6 | ||||
-rw-r--r-- | src/graphics/engine/engine.cpp | 197 | ||||
-rw-r--r-- | src/graphics/engine/engine.h | 21 | ||||
-rw-r--r-- | src/graphics/engine/lightning.h | 2 | ||||
-rw-r--r-- | src/graphics/engine/particle.cpp | 2 | ||||
-rw-r--r-- | src/graphics/engine/particle.h | 2 | ||||
-rw-r--r-- | src/graphics/engine/pyro.h | 3 | ||||
-rw-r--r-- | src/graphics/engine/text.cpp | 14 |
9 files changed, 74 insertions, 273 deletions
diff --git a/src/graphics/engine/camera.cpp b/src/graphics/engine/camera.cpp index f077fff..cd7e307 100644 --- a/src/graphics/engine/camera.cpp +++ b/src/graphics/engine/camera.cpp @@ -28,67 +28,6 @@ #include "object/object.h" #include "physics/physics.h" - -// TODO temporary stubs for CObject and CPhysics - -void CObject::SetTransparency(float) -{ -} - -CObject* CObject::GetFret() -{ - return nullptr; -} - -CObject* CObject::GetPower() -{ - return nullptr; -} - -CObject* CObject::GetTruck() -{ - return nullptr; -} - -ObjectType CObject::GetType() -{ - return OBJECT_NULL; -} - -void CObject::SetGunGoalH(float) -{ -} - -void CObject::GetGlobalSphere(Math::Vector &pos, float &radius) -{ -} - -float CObject::GetAngleY(int) -{ - return 0.0f; -} - -Math::Vector CObject::GetPosition(int) -{ - return Math::Vector(); -} - -void CObject::SetViewFromHere(Math::Vector &eye, float &dirH, float &dirV, - Math::Vector &lookat, Math::Vector &upVec, - Gfx::CameraType type) -{ -} - -CPhysics* CObject::GetPhysics() -{ - return nullptr; -} - -bool CPhysics::GetLand() -{ - return false; -} - //! Changes the level of transparency of an object and objects transported (battery & cargo) void SetTransparency(CObject* obj, float value) { @@ -263,12 +202,12 @@ void Gfx::CCamera::Init(Math::Vector eye, Math::Vector lookat, float delay) } -void Gfx::CCamera::SetObject(CObject* object) +void Gfx::CCamera::SetControllingObject(CObject* object) { m_cameraObj = object; } -CObject* Gfx::CCamera::GetObject() +CObject* Gfx::CCamera::GetControllingObject() { return m_cameraObj; } @@ -1063,11 +1002,9 @@ bool Gfx::CCamera::EventProcess(const Event &event) EventMouseMove(event); break; - // TODO: mouse wheel event - /*case EVENT_KEY_DOWN: - if ( event.param == VK_WHEELUP ) EventMouseWheel(+1); - if ( event.param == VK_WHEELDOWN ) EventMouseWheel(-1); - break;*/ + case EVENT_MOUSE_WHEEL: + EventMouseWheel(event.mouseWheel.dir); + break; default: break; @@ -1081,17 +1018,17 @@ bool Gfx::CCamera::EventMouseMove(const Event &event) return true; } -void Gfx::CCamera::EventMouseWheel(int dir) +void Gfx::CCamera::EventMouseWheel(WheelDirection dir) { if (m_type == Gfx::CAM_TYPE_BACK) { - if (dir > 0) + if (dir == WHEEL_UP) { m_backDist -= 8.0f; if (m_backDist < m_backMin) m_backDist = m_backMin; } - if (dir < 0) + else if (dir == WHEEL_DOWN) { m_backDist += 8.0f; if (m_backDist > 200.0f) @@ -1102,13 +1039,13 @@ void Gfx::CCamera::EventMouseWheel(int dir) if ( m_type == Gfx::CAM_TYPE_FIX || m_type == Gfx::CAM_TYPE_PLANE ) { - if (dir > 0) + if (dir == WHEEL_UP) { m_fixDist -= 8.0f; if (m_fixDist < 10.0f) m_fixDist = 10.0f; } - if (dir < 0) + else if (dir == WHEEL_DOWN) { m_fixDist += 8.0f; if (m_fixDist > 200.0f) @@ -1118,13 +1055,13 @@ void Gfx::CCamera::EventMouseWheel(int dir) if ( m_type == Gfx::CAM_TYPE_VISIT ) { - if (dir > 0) + if (dir == WHEEL_UP) { m_visitDist -= 8.0f; if (m_visitDist < 20.0f) m_visitDist = 20.0f; } - if (dir < 0) + else if (dir == WHEEL_DOWN) { m_visitDist += 8.0f; if (m_visitDist > 200.0f) @@ -1245,19 +1182,19 @@ bool Gfx::CCamera::EventFrameFree(const Event &event) m_eyePt = Math::LookatPoint(m_eyePt, m_directionH, m_directionV, m_mouseDirV * event.rTime * factor * m_speed); // Up/Down - m_eyePt = Math::LookatPoint(m_eyePt, m_directionH, m_directionV, event.axeY * event.rTime * factor * m_speed); + m_eyePt = Math::LookatPoint(m_eyePt, m_directionH, m_directionV, event.motionInput.y * event.rTime * factor * m_speed); // Left/Right if ( event.keyState & KS_CONTROL ) { - if ( event.axeX < 0.0f ) - m_eyePt = Math::LookatPoint(m_eyePt, m_directionH + Math::PI / 2.0f, m_directionV, -event.axeX * event.rTime * factor * m_speed); - if ( event.axeX > 0.0f ) - m_eyePt = Math::LookatPoint(m_eyePt, m_directionH - Math::PI / 2.0f, m_directionV, event.axeX * event.rTime * factor * m_speed); + if ( event.motionInput.x < 0.0f ) + m_eyePt = Math::LookatPoint(m_eyePt, m_directionH + Math::PI / 2.0f, m_directionV, -event.motionInput.x * event.rTime * factor * m_speed); + if ( event.motionInput.x > 0.0f ) + m_eyePt = Math::LookatPoint(m_eyePt, m_directionH - Math::PI / 2.0f, m_directionV, event.motionInput.x * event.rTime * factor * m_speed); } else { - m_directionH -= event.axeX * event.rTime * 0.7f * m_speed; + m_directionH -= event.motionInput.x * event.rTime * 0.7f * m_speed; } // PageUp/PageDown @@ -1719,3 +1656,4 @@ Math::Vector Gfx::CCamera::ExcludeObject(Math::Vector eye, Math::Vector lookat, return eye;*/ } + diff --git a/src/graphics/engine/camera.h b/src/graphics/engine/camera.h index 1a82f9f..7a7350f 100644 --- a/src/graphics/engine/camera.h +++ b/src/graphics/engine/camera.h @@ -136,8 +136,8 @@ class CCamera { void Init(Math::Vector eye, Math::Vector lookat, float delay); //! Sets the object controlling the camera - void SetObject(CObject* object); - CObject* GetObject(); + void SetControllingObject(CObject* object); + CObject* GetControllingObject(); //! Change the type of camera void SetType(Gfx::CameraType type); @@ -208,7 +208,7 @@ protected: //! Changes the camera according to the mouse moved bool EventMouseMove(const Event &event); //! Mouse wheel operation - void EventMouseWheel(int dir); + void EventMouseWheel(WheelDirection dir); //! Changes the camera according to the time elapsed bool EventFrame(const Event &event); //! Moves the point of view diff --git a/src/graphics/engine/engine.cpp b/src/graphics/engine/engine.cpp index 068687a..bd5f60f 100644 --- a/src/graphics/engine/engine.cpp +++ b/src/graphics/engine/engine.cpp @@ -37,6 +37,7 @@ #include "graphics/engine/water.h" #include "math/geometry.h" #include "sound/sound.h" +#include "ui/interface.h" // Initial size of various vectors @@ -87,15 +88,6 @@ Gfx::EngineObjLevel4::EngineObjLevel4(bool used, Gfx::EngineTriangleType type, c vertices.reserve(LEVEL4_VERTEX_PREALLOCATE_COUNT); } - - -// TODO: temporary stub for CInterface -class CInterface -{ -public: - void Draw() {} -}; - Gfx::CEngine::CEngine(CInstanceManager *iMan, CApplication *app) { m_iMan = iMan; @@ -147,7 +139,7 @@ Gfx::CEngine::CEngine(CInstanceManager *iMan, CApplication *app) m_backgroundCloudUp = Gfx::Color(); m_backgroundCloudDown = Gfx::Color(); m_backgroundFull = false; - m_backgroundQuarter = false; + m_backgroundScale = Math::Point(1.0f, 1.0f); m_overFront = true; m_overColor = Gfx::Color(); m_overMode = ENG_RSTATE_TCOLOR_BLACK; @@ -338,41 +330,23 @@ bool Gfx::CEngine::ProcessEvent(const Event &event) int index = static_cast<int>(m_mouseType); m_mouseType = static_cast<Gfx::EngineMouseType>( (index + 1) % Gfx::ENG_MOUSE_COUNT ); } - else if (event.key.key == KEY(F3)) - { - bool bq = !m_backgroundQuarter; - SetBackground(bq ? "geneda.png" : "", Gfx::Color(), Gfx::Color(), Gfx::Color(), Gfx::Color(), true, bq); - } - else if (event.key.key == KEY(F4)) - { - m_skyMode = !m_skyMode; - if (! m_skyMode) - { - m_backgroundColorDown = Gfx::Color(0.2f, 0.2f, 0.2f); - m_backgroundColorUp = Gfx::Color(0.8f, 0.8f, 0.8f); - } - else - { - m_backgroundColorDown = m_backgroundColorUp = Gfx::Color(0.0f, 0.0f, 0.0f); - } - } - } - else if (event.type == EVENT_FRAME) - { - m_highlightTime += event.rTime; } // By default, pass on all events return true; } -void Gfx::CEngine::FrameMove(float rTime) +void Gfx::CEngine::FrameUpdate() { + float rTime = m_app->GetRelTime(); + m_lightMan->UpdateProgression(rTime); m_particle->FrameParticle(rTime); ComputeDistance(); UpdateGeometry(); + m_highlightTime = m_app->GetAbsTime(); + if (m_groundMark.draw) { if (m_groundMark.phase == Gfx::ENG_GR_MARK_PHASE_INC) // growing? @@ -402,16 +376,6 @@ void Gfx::CEngine::FrameMove(float rTime) } } } - - if (m_sound == nullptr) - m_sound = static_cast<CSoundInterface*>( m_iMan->SearchInstance(CLASS_SOUND) ); - - m_sound->FrameMove(rTime); -} - -void Gfx::CEngine::StepSimulation(float rTime) -{ - m_app->StepSimulation(rTime); } bool Gfx::CEngine::WriteScreenShot(const std::string& fileName, int width, int height) @@ -2166,26 +2130,10 @@ bool Gfx::CEngine::LoadAllTextures() LoadTexture("effect02.png"); LoadTexture("map.png"); - if (m_backgroundQuarter) // image into 4 pieces? - { - if (! m_backgroundName.empty()) - { - for (int i = 0; i < 4; i++) - m_backgroundQuarterTexs[i] = LoadTexture(m_backgroundQuarterNames[i]); - } - else - { - for (int i = 0; i < 4; i++) - m_backgroundQuarterTexs[i].SetInvalid(); - } - } + if (! m_backgroundName.empty()) + m_backgroundTex = LoadTexture(m_backgroundName); else - { - if (! m_backgroundName.empty()) - m_backgroundFullTex = LoadTexture(m_backgroundName); - else - m_backgroundFullTex.SetInvalid(); - } + m_backgroundTex.SetInvalid(); if (! m_foregroundName.empty()) m_foregroundTex = LoadTexture(m_foregroundName); @@ -2464,29 +2412,14 @@ float Gfx::CEngine::GetFogStart(int rank) return m_fogStart[rank]; } -std::string QuarterName(const std::string& name, int quarter) -{ - size_t pos = name.find('.'); - if (pos == std::string::npos) - return name; - - return name.substr(0, pos) + std::string(1, static_cast<char>('a' + quarter)) + name.substr(pos); -} - void Gfx::CEngine::SetBackground(const std::string& name, Gfx::Color up, Gfx::Color down, Gfx::Color cloudUp, Gfx::Color cloudDown, - bool full, bool quarter) + bool full, Math::Point scale) { - if (m_backgroundFullTex.Valid()) + if (m_backgroundTex.Valid()) { - DeleteTexture(m_backgroundFullTex); - m_backgroundFullTex.SetInvalid(); - } - - for (int i = 0; i < 4; i++) - { - DeleteTexture(m_backgroundQuarterTexs[i]); - m_backgroundQuarterTexs[i].SetInvalid(); + DeleteTexture(m_backgroundTex); + m_backgroundTex.SetInvalid(); } m_backgroundName = name; @@ -2495,28 +2428,15 @@ void Gfx::CEngine::SetBackground(const std::string& name, Gfx::Color up, Gfx::Co m_backgroundCloudUp = cloudUp; m_backgroundCloudDown = cloudDown; m_backgroundFull = full; - m_backgroundQuarter = quarter; + m_backgroundScale = scale; if (! m_backgroundName.empty()) - { - if (m_backgroundQuarter) - { - for (int i = 0; i < 4; i++) - { - m_backgroundQuarterNames[i] = QuarterName(name, i); - m_backgroundQuarterTexs[i] = LoadTexture(m_backgroundQuarterNames[i]); - } - } - else - { - m_backgroundFullTex = LoadTexture(m_backgroundName); - } - } + m_backgroundTex = LoadTexture(m_backgroundName); } void Gfx::CEngine::GetBackground(std::string& name, Gfx::Color& up, Gfx::Color& down, Gfx::Color& cloudUp, Gfx::Color& cloudDown, - bool &full, bool &quarter) + bool &full, Math::Point& scale) { name = m_backgroundName; up = m_backgroundColorUp; @@ -2524,7 +2444,7 @@ void Gfx::CEngine::GetBackground(std::string& name, Gfx::Color& up, Gfx::Color& cloudUp = m_backgroundCloudUp; cloudDown = m_backgroundCloudDown; full = m_backgroundFull; - quarter = m_backgroundQuarter; + scale = m_backgroundScale; } void Gfx::CEngine::SetForegroundName(const std::string& name) @@ -2726,16 +2646,6 @@ int Gfx::CEngine::GetEditIndentValue() return m_editIndentValue; } -void Gfx::CEngine::SetSpeed(float speed) -{ - m_speed = speed; -} - -float Gfx::CEngine::GetSpeed() -{ - return m_speed; -} - void Gfx::CEngine::SetTracePrecision(float factor) { m_tracePrecision = factor; @@ -3144,7 +3054,7 @@ void Gfx::CEngine::DrawInterface() m_device->SetTransform(Gfx::TRANSFORM_WORLD, m_matWorldInterface); // Draw the entire interface - CInterface* interface = static_cast<CInterface*>( m_iMan->SearchInstance(CLASS_INTERFACE) ); + Ui::CInterface* interface = static_cast<Ui::CInterface*>( m_iMan->SearchInstance(CLASS_INTERFACE) ); if (interface != nullptr) interface->Draw(); @@ -3505,10 +3415,16 @@ void Gfx::CEngine::DrawBackgroundGradient(const Gfx::Color& up, const Gfx::Color AddStatisticTriangle(2); } -// Status: PART_TESTED -void Gfx::CEngine::DrawBackgroundImageQuarter(Math::Point p1, Math::Point p2, const Gfx::Texture &tex) +// Status: TESTED, VERIFIED +void Gfx::CEngine::DrawBackgroundImage() { - Math::Vector n = Math::Vector(0.0f, 0.0f, -1.0f); // normal + Math::Point p1, p2; + p1.x = 0.0f; + p1.y = 0.0f; + p2.x = 1.0f; + p2.y = 1.0f; + +Math::Vector n = Math::Vector(0.0f, 0.0f, -1.0f); // normal float u1, u2, v1, v2; if (m_backgroundFull) @@ -3517,14 +3433,6 @@ void Gfx::CEngine::DrawBackgroundImageQuarter(Math::Point p1, Math::Point p2, co v1 = 0.0f; u2 = 1.0f; v2 = 1.0f; - - if (m_backgroundQuarter) - { - u1 += 0.5f/512.0f; - v1 += 0.5f/384.0f; - u2 -= 0.5f/512.0f; - v2 -= 0.5f/384.0f; - } } else { @@ -3541,7 +3449,10 @@ void Gfx::CEngine::DrawBackgroundImageQuarter(Math::Point p1, Math::Point p2, co v2 = v1+h; } - SetTexture(tex); + u2 *= m_backgroundScale.x; + v2 *= m_backgroundScale.y; + + SetTexture(m_backgroundTex); SetState(Gfx::ENG_RSTATE_OPAQUE_TEXTURE | Gfx::ENG_RSTATE_WRAP); m_device->SetTransform(Gfx::TRANSFORM_VIEW, m_matViewInterface); @@ -3560,48 +3471,6 @@ void Gfx::CEngine::DrawBackgroundImageQuarter(Math::Point p1, Math::Point p2, co AddStatisticTriangle(2); } -// Status: TESTED, VERIFIED -void Gfx::CEngine::DrawBackgroundImage() -{ - Math::Point p1, p2; - std::string name; - - if (m_backgroundQuarter) - { - p1.x = 0.0f; - p1.y = 0.5f; - p2.x = 0.5f; - p2.y = 1.0f; - DrawBackgroundImageQuarter(p1, p2, m_backgroundQuarterTexs[0]); - - p1.x = 0.5f; - p1.y = 0.5f; - p2.x = 1.0f; - p2.y = 1.0f; - DrawBackgroundImageQuarter(p1, p2, m_backgroundQuarterTexs[1]); - - p1.x = 0.0f; - p1.y = 0.0f; - p2.x = 0.5f; - p2.y = 0.5f; - DrawBackgroundImageQuarter(p1, p2, m_backgroundQuarterTexs[2]); - - p1.x = 0.5f; - p1.y = 0.0f; - p2.x = 1.0f; - p2.y = 0.5f; - DrawBackgroundImageQuarter(p1, p2, m_backgroundQuarterTexs[3]); - } - else - { - p1.x = 0.0f; - p1.y = 0.0f; - p2.x = 1.0f; - p2.y = 1.0f; - DrawBackgroundImageQuarter(p1, p2, m_backgroundFullTex); - } -} - void Gfx::CEngine::DrawPlanet() { if (! m_planet->PlanetExist()) return; @@ -3854,6 +3723,8 @@ void Gfx::CEngine::DrawMouseSprite(Math::Point pos, Math::Point size, int icon) Gfx::Vertex(Math::Vector(p2.x, p2.y, 0.0f), normal, Math::Point(u2, v1)) }; + m_device->SetRenderState(Gfx::RENDER_STATE_DEPTH_TEST, false); + m_device->SetRenderState(Gfx::RENDER_STATE_DEPTH_WRITE, false); m_device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, vertex, 4); AddStatisticTriangle(2); } diff --git a/src/graphics/engine/engine.h b/src/graphics/engine/engine.h index 705c83a..01a1dee 100644 --- a/src/graphics/engine/engine.h +++ b/src/graphics/engine/engine.h @@ -664,9 +664,7 @@ public: bool ProcessEvent(const Event& event); //! Called once per frame, the call is the entry point for animating the scene - void FrameMove(float rTime); - //! Evolved throughout the game - void StepSimulation(float rTime); + void FrameUpdate(); //! Writes a screenshot containing the current frame @@ -993,10 +991,10 @@ public: //! Management of the background image to use void SetBackground(const std::string& name, Gfx::Color up = Gfx::Color(), Gfx::Color down = Gfx::Color(), Gfx::Color cloudUp = Gfx::Color(), Gfx::Color cloudDown = Gfx::Color(), - bool full = false, bool quarter = false); + bool full = false, Math::Point scale = Math::Point(1.0f, 1.0f)); void GetBackground(std::string& name, Gfx::Color& up, Gfx::Color& down, Gfx::Color& cloudUp, Gfx::Color& cloudDown, - bool& full, bool& quarter); + bool& full, Math::Point& scale); //@} //! Specifies the name of foreground texture @@ -1099,11 +1097,6 @@ public: //@} //@{ - //! Management of game speed - void SetSpeed(float speed); - float GetSpeed(); - - //@{ //! Management of precision of robot tracks void SetTracePrecision(float factor); float GetTracePrecision(); @@ -1161,8 +1154,6 @@ protected: void DrawBackground(); //! Draws the gradient background void DrawBackgroundGradient(const Gfx::Color& up, const Gfx::Color& down); - //! Draws a portion of the image background - void DrawBackgroundImageQuarter(Math::Point p1, Math::Point p2, const Gfx::Texture &tex); //! Draws the image background void DrawBackgroundImage(); //! Draws all the planets @@ -1297,11 +1288,9 @@ protected: bool m_firstGroundSpot; int m_secondTexNum; bool m_backgroundFull; - bool m_backgroundQuarter; + Math::Point m_backgroundScale; std::string m_backgroundName; - std::string m_backgroundQuarterNames[4]; - Gfx::Texture m_backgroundFullTex; - Gfx::Texture m_backgroundQuarterTexs[4]; + Gfx::Texture m_backgroundTex; Gfx::Color m_backgroundColorUp; Gfx::Color m_backgroundColorDown; Gfx::Color m_backgroundCloudUp; diff --git a/src/graphics/engine/lightning.h b/src/graphics/engine/lightning.h index e34eb3b..af389f2 100644 --- a/src/graphics/engine/lightning.h +++ b/src/graphics/engine/lightning.h @@ -22,7 +22,7 @@ #pragma once -#include "common/misc.h" +#include "common/event.h" #include "math/vector.h" diff --git a/src/graphics/engine/particle.cpp b/src/graphics/engine/particle.cpp index 37a3975..c177deb 100644 --- a/src/graphics/engine/particle.cpp +++ b/src/graphics/engine/particle.cpp @@ -200,7 +200,7 @@ void Gfx::CParticle::DrawParticle(int sheet) // TODO! } -bool Gfx::CParticle::WriteWheelTrace(char *filename, int width, int height, Math::Vector dl, Math::Vector ur) +bool Gfx::CParticle::WriteWheelTrace(const char *filename, int width, int height, Math::Vector dl, Math::Vector ur) { GetLogger()->Trace("CParticle::WriteWheelTrace() stub!\n"); // TODO! diff --git a/src/graphics/engine/particle.h b/src/graphics/engine/particle.h index c53aea5..f78e242 100644 --- a/src/graphics/engine/particle.h +++ b/src/graphics/engine/particle.h @@ -306,7 +306,7 @@ public: void FrameParticle(float rTime); void DrawParticle(int sheet); - bool WriteWheelTrace(char *filename, int width, int height, Math::Vector dl, Math::Vector ur); + bool WriteWheelTrace(const char *filename, int width, int height, Math::Vector dl, Math::Vector ur); protected: void DeleteRank(int rank); diff --git a/src/graphics/engine/pyro.h b/src/graphics/engine/pyro.h index 5d2ca63..c0c0144 100644 --- a/src/graphics/engine/pyro.h +++ b/src/graphics/engine/pyro.h @@ -22,7 +22,8 @@ #pragma once -#include "common/misc.h" +#include "common/event.h" +#include "common/global.h" #include "graphics/engine/engine.h" #include "object/object.h" diff --git a/src/graphics/engine/text.cpp b/src/graphics/engine/text.cpp index 19ef57b..8fc8709 100644 --- a/src/graphics/engine/text.cpp +++ b/src/graphics/engine/text.cpp @@ -785,18 +785,20 @@ Gfx::CharTexture Gfx::CText::CreateCharTexture(Gfx::UTF8Char ch, Gfx::CachedFont data.surface = nullptr; - SDL_FreeSurface(textSurface); - SDL_FreeSurface(textureSurface); - if (! tex.Valid()) { m_error = "Texture create error"; return texture; } + else + { + texture.id = tex.id; + texture.texSize = m_engine->WindowToInterfaceSize(Math::IntPoint(textureSurface->w, textureSurface->h)); + texture.charSize = m_engine->WindowToInterfaceSize(Math::IntPoint(textSurface->w, textSurface->h)); + } - texture.id = tex.id; - texture.texSize = m_engine->WindowToInterfaceSize(Math::IntPoint(textureSurface->w, textureSurface->h)); - texture.charSize = m_engine->WindowToInterfaceSize(Math::IntPoint(textSurface->w, textSurface->h)); + SDL_FreeSurface(textSurface); + SDL_FreeSurface(textureSurface); return texture; } |