Refactored the tester to use scene classes to for different testing functions

Gui_Panel_Refactor
Joeyrp 4 years ago
parent a0584b652c
commit a42dc3c71a

@ -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

@ -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}"

@ -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)
{
}
}

@ -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 <input/inputManager.h>
#include <input/keyboard.h>
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_

@ -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 <core/core.h>
#include <utils/helpers.h>
#include <utils/logger.h>
#include <graphics/igraphics.h>
#include <input/inputManager.h>
#include <assets/types/image.h>
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);
}
}

@ -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 <utils/types.h>
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_

@ -7,17 +7,16 @@
******************************************************************************/
#include "tester.h"
#include <core/core.h>
#include <utils/helpers.h>
#include "scenes/simpleRenderScene.h"
#include <utils/logger.h>
#include <graphics/igraphics.h>
#include <input/inputManager.h>
#include <assets/types/image.h>
#include <LunariumConfig.h>
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);
}
}

@ -11,6 +11,7 @@
#include <core/iRunMode.h>
#include <utils/types.h>
#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

Loading…
Cancel
Save