From ef0c323d945f2e8d8f6a70e8ab0eb8e1199d44b1 Mon Sep 17 00:00:00 2001 From: "arthur.jamet" Date: Wed, 2 Jun 2021 14:33:52 +0200 Subject: [PATCH] addition + correct drawing modes --- lib/Ray/sources/Window.cpp | 5 +++++ lib/Ray/sources/Window.hpp | 4 +++- sources/Runner/Runner.cpp | 17 +++++++++++------ .../System/Renderer/Render2DScreenSystem.cpp | 8 +++++--- .../System/Renderer/Render2DScreenSystem.hpp | 3 --- sources/System/Renderer/RenderScreenSystem.cpp | 14 +++++++++++--- sources/System/Renderer/Renderer2DSystem.hpp | 3 ++- sources/System/Renderer/Renderer3DSystem.hpp | 2 +- 8 files changed, 38 insertions(+), 18 deletions(-) diff --git a/lib/Ray/sources/Window.cpp b/lib/Ray/sources/Window.cpp index c30c2575..9deba6e0 100644 --- a/lib/Ray/sources/Window.cpp +++ b/lib/Ray/sources/Window.cpp @@ -167,3 +167,8 @@ void RAY::Window::setIcon(RAY::Image &img) { SetWindowIcon(img); } + +bool RAY::Window::isReady() const +{ + return IsWindowReady(); +} \ No newline at end of file diff --git a/lib/Ray/sources/Window.hpp b/lib/Ray/sources/Window.hpp index 91acd870..c16eae4b 100644 --- a/lib/Ray/sources/Window.hpp +++ b/lib/Ray/sources/Window.hpp @@ -7,7 +7,7 @@ #ifndef WINDOW_HPP_ #define WINDOW_HPP_ - +#define INTERNAL public #include #include #include @@ -131,6 +131,8 @@ namespace RAY { //! @brief Draw a 3d mesh with material and transform void draw(const Mesh &mesh, const Material &material, const Matrix &transform); + bool isReady() const; + private: //! @brief Creates window, and opens it if openNow is set to true diff --git a/sources/Runner/Runner.cpp b/sources/Runner/Runner.cpp index 9e256b05..c97c125d 100644 --- a/sources/Runner/Runner.cpp +++ b/sources/Runner/Runner.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -34,27 +35,31 @@ namespace BBM void enableRaylib(WAL::Wal &wal) { - RAY::TraceLog::setLevel(LOG_WARNING); - RAY::Window &window = RAY::Window::getInstance(600, 400, "Bomberman", FLAG_WINDOW_RESIZABLE); + //RAY::TraceLog::setLevel(LOG_WARNING); + RAY::Window &window = RAY::Window::getInstance(800, 600, "Bomberman", FLAG_WINDOW_RESIZABLE); - wal.addSystem>(); + wal.addSystem(window) + .addSystem>() + .addSystem>(); wal.addSystem(window) .addSystem>(); - wal.addSystem(window); } std::shared_ptr loadGameScene() { auto scene = std::make_shared(); scene->addEntity("cube") + .addComponent(10, 10, 0) + .addComponent>(Vector2f(), Vector2f(10, 10), GREEN); + scene->addEntity("cube2") .addComponent() - .addComponent>(Vector2f(), Vector2f(10, 10), RED); + .addComponent>(Vector3f(), Vector3f(1, 1, 1), RED); scene->addEntity("player") .addComponent() .addComponent>("assets/player/player.iqm", std::make_pair(MAP_DIFFUSE, "assets/player/blue.png")); scene->addEntity("camera") - .addComponent(10, 10, 10) + .addComponent(10, 10, 15) .addComponent(); return scene; } diff --git a/sources/System/Renderer/Render2DScreenSystem.cpp b/sources/System/Renderer/Render2DScreenSystem.cpp index 938d107f..b21c35da 100644 --- a/sources/System/Renderer/Render2DScreenSystem.cpp +++ b/sources/System/Renderer/Render2DScreenSystem.cpp @@ -8,12 +8,14 @@ namespace BBM { Render2DScreenSystem::Render2DScreenSystem(RAY::Window &window) : WAL::System({}), - _window(window), - _camera(RAY::Vector2(10, 10), RAY::Vector2(), 0) + _window(window) {} void Render2DScreenSystem::onSelfUpdate() { - this->_window.useCamera(this->_camera); + EndMode3D(); + printf("EndMode3D\n"); + DrawText("Try selecting the box with mouse!", 10, 10, 20, WHITE); + //this->_window.unuseCamera(); } } \ No newline at end of file diff --git a/sources/System/Renderer/Render2DScreenSystem.hpp b/sources/System/Renderer/Render2DScreenSystem.hpp index 12adaf34..4fa00ba1 100644 --- a/sources/System/Renderer/Render2DScreenSystem.hpp +++ b/sources/System/Renderer/Render2DScreenSystem.hpp @@ -13,9 +13,6 @@ namespace BBM { //! @brief The window to render on RAY::Window &_window; - - //! @brief The camera used to render. - RAY::Camera::Camera2D _camera; public: //! @brief A method called after all entities that this system manage has been updated. //! @note render on screen here diff --git a/sources/System/Renderer/RenderScreenSystem.cpp b/sources/System/Renderer/RenderScreenSystem.cpp index 5523ee48..1550bd65 100644 --- a/sources/System/Renderer/RenderScreenSystem.cpp +++ b/sources/System/Renderer/RenderScreenSystem.cpp @@ -15,18 +15,26 @@ namespace BBM }), _window(window), _camera(Vector3f(), Vector3f(), Vector3f(0, 1, 0), 50, CAMERA_PERSPECTIVE) - {} + { + this->_camera.setMode(CAMERA_FREE); + } void RenderScreenSystem::onSelfUpdate() { - this->_window.draw(); + //this->_window.draw(); + //EndMode2D(); + EndDrawing(); + this->_camera.update(); + BeginDrawing(); this->_window.clear(); - this->_window.useCamera(this->_camera); + BeginMode3D(this->_camera); + printf("BeginMode3D\n"); } void RenderScreenSystem::onUpdate(WAL::Entity &entity, std::chrono::nanoseconds dtime) { const auto &pos = entity.getComponent(); _camera.setPosition(pos.position); + //this->_camera.update(); } } \ No newline at end of file diff --git a/sources/System/Renderer/Renderer2DSystem.hpp b/sources/System/Renderer/Renderer2DSystem.hpp index a1622c0d..3fd55346 100644 --- a/sources/System/Renderer/Renderer2DSystem.hpp +++ b/sources/System/Renderer/Renderer2DSystem.hpp @@ -35,7 +35,8 @@ namespace BBM auto &pos = entity.getComponent(); comp.member.setPosition({pos.getX(), pos.getY()}); - comp.member.drawOn(this->_window); + this->_window.draw(comp.member); + printf("Drawing smth\n"); } //! @brief default copy ctor diff --git a/sources/System/Renderer/Renderer3DSystem.hpp b/sources/System/Renderer/Renderer3DSystem.hpp index 8dba98f6..0fa3a9bb 100644 --- a/sources/System/Renderer/Renderer3DSystem.hpp +++ b/sources/System/Renderer/Renderer3DSystem.hpp @@ -35,7 +35,7 @@ namespace BBM auto &pos = entity.getComponent(); comp.member.setPosition(static_cast(pos.position)); - comp.member.drawOn(this->_window); + this->_window.draw(comp.member); } //! @brief Default copy ctor