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