From a42dc3c71a241155f2a0ebb6f9a6b7359a35f86b Mon Sep 17 00:00:00 2001 From: Joeyrp Date: Wed, 27 Oct 2021 18:06:14 -0400 Subject: [PATCH] Refactored the tester to use scene classes to for different testing functions --- docs/Tasks.todo | 8 +- src/run_modes/tester/CMakeLists.txt | 2 +- src/run_modes/tester/scenes/baseScene.cpp | 44 +++++++++ src/run_modes/tester/scenes/baseScene.h | 33 +++++++ .../tester/scenes/simpleRenderScene.cpp | 93 +++++++++++++++++++ .../tester/scenes/simpleRenderScene.h | 34 +++++++ src/run_modes/tester/tester.cpp | 75 +++------------ src/run_modes/tester/tester.h | 5 +- 8 files changed, 225 insertions(+), 69 deletions(-) create mode 100644 src/run_modes/tester/scenes/baseScene.cpp create mode 100644 src/run_modes/tester/scenes/baseScene.h create mode 100644 src/run_modes/tester/scenes/simpleRenderScene.cpp create mode 100644 src/run_modes/tester/scenes/simpleRenderScene.h diff --git a/docs/Tasks.todo b/docs/Tasks.todo index 0fe74e9..e805d84 100644 --- a/docs/Tasks.todo +++ b/docs/Tasks.todo @@ -30,6 +30,11 @@ Core: ✔ Port over the Element2D input system and adjust it to use glfw @done (9/8/2021, 8:20:07 PM) ✔ Add the InputManager to the core @done (9/9/2021, 2:57:06 PM) + Physics: + ☐ Research Box2D as a possibly physics library + ☐ Add Box2D to the project as an external library + ☐ Add a scene to the tester to test Box2D usage + Audio: Scripting: @@ -69,8 +74,9 @@ Game: ☐ Transform ☐ Image ☐ Animation Controller - ☐ Collider + ☐ Collider (maybe via Box2D?) ☐ Script + ☐ RigidBody (via Box2D) Animations: ☐ Animated Sprite class diff --git a/src/run_modes/tester/CMakeLists.txt b/src/run_modes/tester/CMakeLists.txt index 7788377..4d816be 100644 --- a/src/run_modes/tester/CMakeLists.txt +++ b/src/run_modes/tester/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library(tester tester.cpp) +add_library(tester tester.cpp scenes/baseScene.cpp scenes/simpleRenderScene.cpp) target_include_directories(tester PUBLIC "${PROJECT_BINARY_DIR}" diff --git a/src/run_modes/tester/scenes/baseScene.cpp b/src/run_modes/tester/scenes/baseScene.cpp new file mode 100644 index 0000000..17faab8 --- /dev/null +++ b/src/run_modes/tester/scenes/baseScene.cpp @@ -0,0 +1,44 @@ +/****************************************************************************** +* File - baseScene.cpp +* Author - Joey Pollack +* Date - 2021/10/27 (y/m/d) +* Mod Date - 2021/10/27 (y/m/d) +* Description - The interface class for tester scenes +******************************************************************************/ + +#include "baseScene.h" + +namespace lunarium +{ + BaseScene::BaseScene(uint32_t logCat) + : mLogCat(logCat) + { + + } + + void BaseScene::OnLoad() + { + + } + + void BaseScene::OnTick(double delta) + { + + } + + void BaseScene::OnRender(IGraphics* g) + { + + } + + void BaseScene::OnKeyPress(InputManager::KeyPress kp) + { + + } + + void BaseScene::OnKeyRelease(Keyboard::Key k) + { + + } + +} \ No newline at end of file diff --git a/src/run_modes/tester/scenes/baseScene.h b/src/run_modes/tester/scenes/baseScene.h new file mode 100644 index 0000000..5c7257e --- /dev/null +++ b/src/run_modes/tester/scenes/baseScene.h @@ -0,0 +1,33 @@ +/****************************************************************************** +* File - baseScene.h +* Author - Joey Pollack +* Date - 2021/10/27 (y/m/d) +* Mod Date - 2021/10/27 (y/m/d) +* Description - The interface class for tester scenes +******************************************************************************/ + +#ifndef BASE_SCENE_H_ +#define BASE_SCENE_H_ + +#include +#include + +namespace lunarium +{ + class IGraphics; + class BaseScene + { + public: + BaseScene(uint32_t logCat); + virtual void OnLoad(); + virtual void OnTick(double delta); + virtual void OnRender(IGraphics* g); + virtual void OnKeyPress(InputManager::KeyPress kp); + virtual void OnKeyRelease(Keyboard::Key k); + + protected: + uint32_t mLogCat; + }; +} + +#endif // BASE_SCENE_H_ \ No newline at end of file diff --git a/src/run_modes/tester/scenes/simpleRenderScene.cpp b/src/run_modes/tester/scenes/simpleRenderScene.cpp new file mode 100644 index 0000000..3f50f2b --- /dev/null +++ b/src/run_modes/tester/scenes/simpleRenderScene.cpp @@ -0,0 +1,93 @@ +/****************************************************************************** +* File - simpleRenderScene.cpp +* Author - Joey Pollack +* Date - 2021/10/27 (y/m/d) +* Mod Date - 2021/10/27 (y/m/d) +* Description - Displays a simple scene that tests basic render features. +******************************************************************************/ + +#include "simpleRenderScene.h" +#include +#include +#include +#include +#include +#include + +namespace lunarium +{ + SimpleRenderScene::SimpleRenderScene(uint32_t logCat) + : BaseScene(logCat) + { + + } + void SimpleRenderScene::OnLoad() + { + mTextBoxWidth = 500; + + // Currently the full default window size + mImageSize.Width = 1280; + mImageSize.Height = 720; + } + + void SimpleRenderScene::OnTick(double delta) + { + if (Core::Input().IsKeyDown(KeyCode::ESCAPE)) + { + Core::GetInstance().SignalShutdown(); + } + + // Textbox size adjustment + if (Core::Input().IsKeyDown(KeyCode::LEFT)) + { + mTextBoxWidth -= 10; + } + + if (Core::Input().IsKeyDown(KeyCode::RIGHT)) + { + mTextBoxWidth += 10; + } + + mTextBoxWidth = Math::ClampI(mTextBoxWidth, 20, 500); + + // Image Size adjustment + if (Core::Input().IsKeyDown(KeyCode::DOWN)) + { + mImageSize.Width -= 10; + mImageSize.Height -= 10; + } + + if (Core::Input().IsKeyDown(KeyCode::UP)) + { + mImageSize.Width += 10; + mImageSize.Height += 10; + } + + mImageSize.Width = Math::ClampI(mImageSize.Width, 320, 1280); + mImageSize.Height = Math::ClampI(mImageSize.Height, 180, 720); + + // Render to texture testing + OpRes result = Core::GetInstance().BeginRenderToTexture(); + if (Failed(result)) + { + Logger::Log(mLogCat, LogLevel::WARNING, "Unable to render to texture: %s", result.Description.c_str()); + return; + } + + IGraphics& g = Core::Graphics(); + + g.DrawFilledEllipse(glm::vec2(600, 300), glm::vec2(100, 150), Color(1.0f, 0.0f, 1.0f, 1.0f), 100); + g.DrawString("This is a test of the text renderer!", Rectangle(100, 200, mTextBoxWidth, 300), + Color(0.0f, 1.0f, 1.0f, 1.0f), 0.5f, g.DefaultFont()); + + mpRenderedImage = Core::GetInstance().EndRenderToTexture(); + } + + void SimpleRenderScene::OnRender(IGraphics* g) + { + g->DrawImage(*mpRenderedImage, Rectangle(0.0f, 0.0f, (float)mpRenderedImage->GetWidth(), (float)mpRenderedImage->GetHeight()), + Rectangle(0.0f, 0.0f, (float)mImageSize.Width, (float)mImageSize.Height), Color(1.0f, 1.0f, 1.0f, 1.0f)); + + g->DrawBox(Rectangle(0.0f, 0.0f, (float)mImageSize.Width, (float)mImageSize.Height), Color(0.0f, 0.0f, 0.0f, 1.0f), 1.0f); + } +} \ No newline at end of file diff --git a/src/run_modes/tester/scenes/simpleRenderScene.h b/src/run_modes/tester/scenes/simpleRenderScene.h new file mode 100644 index 0000000..18427fc --- /dev/null +++ b/src/run_modes/tester/scenes/simpleRenderScene.h @@ -0,0 +1,34 @@ +/****************************************************************************** +* File - simpleRenderScene.h +* Author - Joey Pollack +* Date - 2021/10/27 (y/m/d) +* Mod Date - 2021/10/27 (y/m/d) +* Description - Displays a simple scene that tests basic render features. +******************************************************************************/ + +#ifndef SIMPLE_RENDER_SCENE_H_ +#define SIMPLE_RENDER_SCENE_H_ + +#include "baseScene.h" +#include + +namespace lunarium +{ + class Image; + class SimpleRenderScene : public BaseScene + { + public: + SimpleRenderScene(uint32_t logCat); + virtual void OnLoad(); + virtual void OnTick(double delta); + virtual void OnRender(IGraphics* g); + + private: + + int mTextBoxWidth; + Sizei mImageSize; + Image* mpRenderedImage; + }; +} + +#endif // SIMPLE_RENDER_SCENE_H_ \ No newline at end of file diff --git a/src/run_modes/tester/tester.cpp b/src/run_modes/tester/tester.cpp index ce21d76..7613216 100644 --- a/src/run_modes/tester/tester.cpp +++ b/src/run_modes/tester/tester.cpp @@ -7,17 +7,16 @@ ******************************************************************************/ #include "tester.h" -#include -#include +#include "scenes/simpleRenderScene.h" + #include #include -#include -#include #include namespace lunarium { Tester::Tester() + : mpScene(nullptr) { } @@ -33,81 +32,29 @@ namespace lunarium #else Logger::Log(mLogCat, LogLevel::INFO, "BUILDING WITH THE EDITOR!"); #endif - - mTextBoxWidth = 500; - - // Currently the full default window size - mImageSize.Width = 1280; - mImageSize.Height = 720; + Logger::Log(mLogCat, LogLevel::INFO, "Running Simple Render Test Scene"); + mpScene = new SimpleRenderScene(mLogCat); + mpScene->OnLoad(); + return OpRes::OK(); } void Tester::Shutdown() { - + delete mpScene; + mpScene = nullptr; } void Tester::OnTick(double delta) { - if (Core::Input().IsKeyDown(KeyCode::ESCAPE)) - { - Core::GetInstance().SignalShutdown(); - } - - // Textbox size adjustment - if (Core::Input().IsKeyDown(KeyCode::LEFT)) - { - mTextBoxWidth -= 10; - } - - if (Core::Input().IsKeyDown(KeyCode::RIGHT)) - { - mTextBoxWidth += 10; - } - - mTextBoxWidth = Math::ClampI(mTextBoxWidth, 20, 500); - - // Image Size adjustment - if (Core::Input().IsKeyDown(KeyCode::DOWN)) - { - mImageSize.Width -= 10; - mImageSize.Height -= 10; - } - - if (Core::Input().IsKeyDown(KeyCode::UP)) - { - mImageSize.Width += 10; - mImageSize.Height += 10; - } - - mImageSize.Width = Math::ClampI(mImageSize.Width, 320, 1280); - mImageSize.Height = Math::ClampI(mImageSize.Height, 180, 720); - - // Render to texture testing - OpRes result = Core::GetInstance().BeginRenderToTexture(); - if (Failed(result)) - { - Logger::Log(mLogCat, LogLevel::WARNING, "Unable to render to texture: %s", result.Description.c_str()); - return; - } - - IGraphics& g = Core::Graphics(); - - g.DrawFilledEllipse(glm::vec2(600, 300), glm::vec2(100, 150), Color(1.0f, 0.0f, 1.0f, 1.0f), 100); - g.DrawString("This is a test of the text renderer!", Rectangle(100, 200, mTextBoxWidth, 300), - Color(0.0f, 1.0f, 1.0f, 1.0f), 0.5f, g.DefaultFont()); - - mpRenderedImage = Core::GetInstance().EndRenderToTexture(); + mpScene->OnTick(delta); } void Tester::OnRender(IGraphics* g) { - g->DrawImage(*mpRenderedImage, Rectangle(0.0f, 0.0f, (float)mpRenderedImage->GetWidth(), (float)mpRenderedImage->GetHeight()), - Rectangle(0.0f, 0.0f, (float)mImageSize.Width, (float)mImageSize.Height), Color(1.0f, 1.0f, 1.0f, 1.0f)); - - g->DrawBox(Rectangle(0.0f, 0.0f, (float)mImageSize.Width, (float)mImageSize.Height), Color(0.0f, 0.0f, 0.0f, 1.0f), 1.0f); + mpScene->OnRender(g); } } diff --git a/src/run_modes/tester/tester.h b/src/run_modes/tester/tester.h index 168a76a..77eb391 100644 --- a/src/run_modes/tester/tester.h +++ b/src/run_modes/tester/tester.h @@ -11,6 +11,7 @@ #include #include +#include "scenes/baseScene.h" namespace lunarium { @@ -32,9 +33,7 @@ namespace lunarium private: // Data uint32_t mLogCat; - int mTextBoxWidth; - Sizei mImageSize; - Image* mpRenderedImage; + BaseScene* mpScene; private: // Test methods