From 247eda236d8b998dda678b5d2d3972e6d6101a5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Nie=C3=9Fner?= Date: Mon, 28 May 2018 20:20:29 +0200 Subject: [PATCH] Entityx usage and fixed release types --- CMakeLists.txt | 1 + assets/police_officer.png | Bin 13039 -> 1824 bytes external/entityx-1.1.2/entityx-config.cmake | 18 ++++++++---- src/DarkRP2D.cpp | 4 +-- src/entities/Charakter.h | 0 src/entities/MovementSystem.cpp | 16 ++++++++++ src/entities/MovementSystem.h | 10 +++++++ src/entities/RenderSystem.cpp | 31 ++++++++++++++++++++ src/entities/RenderSystem.h | 15 ++++++++++ src/entities/components/Direction.h | 11 +++++++ src/entities/components/Renderable.h | 12 ++++++++ src/screens/GameScreen.cpp | 30 ++++++++++++++----- src/screens/GameScreen.h | 9 ++++-- src/screens/Screen.h | 4 +-- 14 files changed, 142 insertions(+), 19 deletions(-) delete mode 100644 src/entities/Charakter.h create mode 100644 src/entities/MovementSystem.cpp create mode 100644 src/entities/MovementSystem.h create mode 100644 src/entities/RenderSystem.cpp create mode 100644 src/entities/RenderSystem.h create mode 100644 src/entities/components/Direction.h create mode 100644 src/entities/components/Renderable.h diff --git a/CMakeLists.txt b/CMakeLists.txt index e9fba91..c399a18 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,7 @@ include_directories(${BOX2D_INCLUDE_DIRS}) find_package(ENTITYX REQUIRED CONFIG) include_directories(${ENTITYX_INCLUDE_DIRS}) +MESSAGE( STATUS "Entityx Lib: " ${ENTITYX_LIBRARIES} ) MESSAGE( STATUS "OpenGL Lib: " ${OPENGL_gl_LIBRARY} ) MESSAGE( STATUS "SDL2 Lib: " ${SDL2_LIBRARIES} ) MESSAGE( STATUS "SDL2_IMG Lib: " ${SDL2_IMAGE_LIBRARIES} ) diff --git a/assets/police_officer.png b/assets/police_officer.png index d4a832693d11a7748e0f39f2f7a7419e863a8d81..04b7c63f271a1a5df80df293ea8eaf32e8169b4a 100644 GIT binary patch literal 1824 zcmV+*2jBRKP)PKY01SNn% zqMxU{DVmTVEJ0z3;9F#XErWt=wOiJ$tYvNe&^<@*dc9unt}QCRPxtbF{`Y@RJHGYw7_Q^Irqt#_*6N^F#M5d9f>35te1V zZBsXPN2yFe1VNDOd^8dU;Pj3zrC!VJwOU~upyj!@r33a-CjdpoC5e4SAe0E_W0N0Z2v}4B@mOHhD8~ToC|4QXm9|{V)@NxSGT1&_Q&*XaOV9h zO{y@*^`B2bfo_9>czyc{09sb0+@Ev8ncl<%eC<>(nDoJ_6_peO09Snjk}n z2aWxG34rn$ccqo7teel*yH`p&1y(q3iGnHOCqLgR?f8d-bbj%JOyIGXPDtCMgZ-*X zD(mLoQdkk@o9z!v`@5c5Moo2vw7>k>EpVFzARaieE9Kxh?=}3xLEib|H~^P%$j&RP zqj&!cvi-S40Qlh5bpSNG>r<{VePt(@^dV=r!De@T!sw|0Bs-L-5V^x5!>@mII7Lq` z$yo&?^XMCU066mAi$J0})DX@p<_|F=@5Z1n&sQN1@w^X^43F9p$#ZBcLGpo z0}7303n8Nup;4@u0O3vrP>k^(Ep+2O@5Ot;OK>Dez#q_*onAAYimD3S_quVcT)J>cm!5z>AO%S+0Hfm*czlDF*j!UnlL)}Y zix&+ka5__+RYN%6x^@NU`n_Dfd|g#;?%bI)&v(;zv^QhGd_JGFJuzYYWoj`%C=@a@ zST^qNwRrwKnzjl67A?GoMGNl%;J4o|rkoS>9qm;eFS5_wYY7CjTS+g)fNjm1HSxoT z4`&q4$gJgfd?#s|QzsqL3Wgp=$8TlV;~OM2YdIK9STgI@tpl)0OW|NJXj&;i(6tzR zzsiDO1s>lZ*IkRjB0B|A0Q&pYUs4#M9|tf<)0{e429=05NLLMFtj9OV37-S7&PIV0 zfZhELEx8nK^!3R0r?sw^?QcJDnlE2oqNyWO8+d$!06hK4St=Ghn3a8cNnT0C-5d3- z=EjcgVf{lb^c+vT(-+(2tL4w{BYg+?cE_89emy81TQa{;B@cM^ZGRm~Kx8tczd@Eb_LV3fCUmty_^$43ZVIVbJwasH{|Eqpb(RZ~Vu za`}V73J{L=9RD6b)A@ARo#jL)#;`lffkXhZ<zL1Rl}Q||)?_IA;@p<9=%r~);SxxYC}tIb6E3Z+BKoK>(Nx28aw_)oq9D zni}Ua-V$TsaR&Bwp?3u-80kAmJTfjfM5pt~L?=dZRL>?dd=_eU_z-sKy zN}@N$G@Z|csQ?(A1C*^`B>Ps8>9w+E8+dni(zv0UqSEwzt;I-R;<+G~&TExFSnyih z%w3?WwWDB}7wGw6A#D}JBI6Lp&_tLIGG!l3RzQ)%WojZ6El^1G{DzVkCotfT(eT@*E_hpD)Oo{$lF0ejB|6F1Ux4rMpW`2njcwh$+I}AZ O00003u@6UTb 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 diff --git a/external/entityx-1.1.2/entityx-config.cmake b/external/entityx-1.1.2/entityx-config.cmake index 9f4d523..a4d3e30 100644 --- a/external/entityx-1.1.2/entityx-config.cmake +++ b/external/entityx-1.1.2/entityx-config.cmake @@ -1,10 +1,18 @@ set(ENTITYX_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}") # Support both 32 and 64 bit builds -if (${CMAKE_SIZEOF_VOID_P} MATCHES 8) -else () - set(ENTITYX_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/build/Release/entityx.lib") - set(ENTITYX_DLL "${CMAKE_CURRENT_LIST_DIR}/build/Release/entityx.dll") -endif () +if (${CMAKE_BUILD_TYPE} MATCHES "DEBUG") + if (${CMAKE_SIZEOF_VOID_P} MATCHES 8) + else () + set(ENTITYX_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/build/Debug/entityx-d.lib") + set(ENTITYX_DLL "${CMAKE_CURRENT_LIST_DIR}/build/Debug/entityx.dll") + endif () +else (${CMAKE_BUILD_TYPE} MATCHES "DEBUG") + if (${CMAKE_SIZEOF_VOID_P} MATCHES 8) + else () + set(ENTITYX_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/build/Release/entityx.lib") + set(ENTITYX_DLL "${CMAKE_CURRENT_LIST_DIR}/build/Release/entityx.dll") + endif () +endif (${CMAKE_BUILD_TYPE} MATCHES "DEBUG") string(STRIP "${ENTITYX_LIBRARIES}" ENTITYX_LIBRARIES) \ No newline at end of file diff --git a/src/DarkRP2D.cpp b/src/DarkRP2D.cpp index fb4f31f..dd296ce 100644 --- a/src/DarkRP2D.cpp +++ b/src/DarkRP2D.cpp @@ -71,7 +71,7 @@ void DarkRP2D::loop(unsigned int delta) void DarkRP2D::update(unsigned int delta) { - gameScreen->update(); + gameScreen->update(delta); } void DarkRP2D::render(unsigned int delta) @@ -85,7 +85,7 @@ void DarkRP2D::render(unsigned int delta) Shader bitmapShader = assets->getShader("bitmapShader"); font->drawText(bitmapShader, "Hallo du noob", 25.0f, 25.0f, 1.f, glm::vec3(0.5f, 0.8f, 0.2f)); - gameScreen->render(); + gameScreen->render(delta); #ifndef NDEBUG // 1. Show a simple window. diff --git a/src/entities/Charakter.h b/src/entities/Charakter.h deleted file mode 100644 index e69de29..0000000 diff --git a/src/entities/MovementSystem.cpp b/src/entities/MovementSystem.cpp new file mode 100644 index 0000000..4baf666 --- /dev/null +++ b/src/entities/MovementSystem.cpp @@ -0,0 +1,16 @@ +#include "MovementSystem.h" +#include "components/Direction.h" +#include "components/Position.h" + +void MovementSystem::update(entityx::EntityManager &es, + entityx::EventManager &events, + entityx::TimeDelta dt) +{ + for (entityx::Entity entity : es.entities_with_components()) + { + entityx::ComponentHandle position = entity.component(); + entityx::ComponentHandle direction = entity.component(); + position.get()->x += direction.get()->x * dt; + position.get()->y += direction.get()->y * dt; + } +} \ No newline at end of file diff --git a/src/entities/MovementSystem.h b/src/entities/MovementSystem.h new file mode 100644 index 0000000..6ac5870 --- /dev/null +++ b/src/entities/MovementSystem.h @@ -0,0 +1,10 @@ +#ifndef MOVEMENTSYSTEM_H +#define MOVEMENTSYSTEM_H + +#include + +struct MovementSystem : public entityx::System { + void update(entityx::EntityManager &es, entityx::EventManager &events, entityx::TimeDelta dt) override; +}; + +#endif //MOVEMENTSYSTEM_H \ No newline at end of file diff --git a/src/entities/RenderSystem.cpp b/src/entities/RenderSystem.cpp new file mode 100644 index 0000000..a791c0b --- /dev/null +++ b/src/entities/RenderSystem.cpp @@ -0,0 +1,31 @@ +#include "RenderSystem.h" +#include "components/Renderable.h" +#include "components/Position.h" + +#include +#include + +void RenderSystem::update(entityx::EntityManager &es, + entityx::EventManager &events, + entityx::TimeDelta dt) +{ + for (entityx::Entity entity : es.entities_with_components()) + { + entityx::ComponentHandle meshContainer = entity.component(); + entityx::ComponentHandle pos = entity.component(); + + glm::mat4 model(1); + float x = pos.get()->x; + float y = pos.get()->y; + model = glm::translate(model, glm::vec3(x, y, 0.f)); + + glm::mat4 combined; + combined = _camera->getProjectionMatrix() * _camera->getViewMatrix() * model; + + //Drawing + Shader defaultShader = _assets->getShader(meshContainer.get()->_shaderName); + defaultShader.SetMatrix4("MVP", combined, true); + //Draw Mesh + _renderer->draw(*(meshContainer.get()->_mesh), defaultShader); + } +} \ No newline at end of file diff --git a/src/entities/RenderSystem.h b/src/entities/RenderSystem.h new file mode 100644 index 0000000..3477505 --- /dev/null +++ b/src/entities/RenderSystem.h @@ -0,0 +1,15 @@ +#pragma once + +#include +#include "../Renderer.h" +#include "../Camera.h" +#include "../Assets.h" + + +struct RenderSystem : public entityx::System { + RenderSystem(Renderer *renderer, OrtographicCamera *camera, Assets *assets) : _renderer(renderer), _camera(camera), _assets(assets) {} + void update(entityx::EntityManager &es, entityx::EventManager &events, entityx::TimeDelta dt) override; + Renderer *_renderer; + OrtographicCamera *_camera; + Assets *_assets; +}; \ No newline at end of file diff --git a/src/entities/components/Direction.h b/src/entities/components/Direction.h new file mode 100644 index 0000000..c08ee9e --- /dev/null +++ b/src/entities/components/Direction.h @@ -0,0 +1,11 @@ +#ifndef DIRECTION_H +#define DIRECTION_H + +struct Direction +{ + Direction(float x = 0.0f, float y = 0.0f) : x(x), y(y) {} + + float x, y; +}; + +#endif \ No newline at end of file diff --git a/src/entities/components/Renderable.h b/src/entities/components/Renderable.h new file mode 100644 index 0000000..6a2e775 --- /dev/null +++ b/src/entities/components/Renderable.h @@ -0,0 +1,12 @@ +#pragma once + +#include "../../Mesh.h" +#include + +struct Renderable +{ + Renderable(Mesh *mesh, std::string shaderName) : _mesh(mesh), _shaderName(shaderName) {} + + Mesh *_mesh; + std::string _shaderName; +}; \ No newline at end of file diff --git a/src/screens/GameScreen.cpp b/src/screens/GameScreen.cpp index 34e0e79..bfbee17 100644 --- a/src/screens/GameScreen.cpp +++ b/src/screens/GameScreen.cpp @@ -1,5 +1,10 @@ #include "GameScreen.h" -#include +#include "../entities/components/Position.h" +#include "../entities/components/Direction.h" +#include "../entities/components/Renderable.h" +#include "../entities/MovementSystem.h" +#include "../entities/RenderSystem.h" + #include #include @@ -26,9 +31,14 @@ GameScreen::GameScreen(Renderer *renderer, Assets *assets) camera = new OrtographicCamera(); //Create Entities - //entityx::EntityX ex; - //entityx::Entity charakter = ex.entities.create(); - //charakter.assign(); + entityx::Entity charakter = ex.entities.create(); + charakter.assign(); + charakter.assign(1.f,0.f); //apply speed right + charakter.assign(obj, "defaultShader"); + + ex.systems.add(); + ex.systems.add(renderer,camera,assets); + ex.systems.configure(); } GameScreen::~GameScreen() @@ -46,16 +56,18 @@ void GameScreen::pause() { } -void GameScreen::render() +void GameScreen::render(unsigned int delta) { - //Drawing + double dt = ((double) delta) * 0.001; //(10^-3) milli + ex.systems.update(dt); + /*//Drawing Shader defaultShader = assets->getShader("defaultShader"); defaultShader.SetMatrix4("MVP", camera->getCombinedMatrix(), true); //Draw Mesh - renderer->draw(*obj, defaultShader); + renderer->draw(*obj, defaultShader);*/ } -void GameScreen::update() +void GameScreen::update(unsigned int delta) { SDL_Event event; while (SDL_PollEvent(&event) != 0) @@ -66,6 +78,8 @@ void GameScreen::update() command->execute(*camera); } } + double dt = ((double) delta) * 0.001; //(10^-3) milli + ex.systems.update(dt); } void GameScreen::resize() diff --git a/src/screens/GameScreen.h b/src/screens/GameScreen.h index 01de0f7..1d0c32b 100644 --- a/src/screens/GameScreen.h +++ b/src/screens/GameScreen.h @@ -8,6 +8,8 @@ #include "../Camera.h" #include "../input/InputHandler.h" +#include + class GameScreen : public Screen { public: @@ -16,8 +18,8 @@ class GameScreen : public Screen virtual void hide() override; virtual void pause() override; - virtual void render() override; - virtual void update() override; + virtual void render(unsigned int delta) override; + virtual void update(unsigned int delta) override; virtual void resize() override; virtual void resume() override; virtual void show() override; @@ -31,6 +33,9 @@ class GameScreen : public Screen InputHandler *inputHandler; OrtographicCamera *camera; Mesh *obj; + + //Part of the class + entityx::EntityX ex; }; #endif \ No newline at end of file diff --git a/src/screens/Screen.h b/src/screens/Screen.h index 29cd2b2..c945b54 100644 --- a/src/screens/Screen.h +++ b/src/screens/Screen.h @@ -12,8 +12,8 @@ class Screen /* Called when this screen is no longer the current screen for a Game. */ virtual void hide() = 0; virtual void pause() = 0; - virtual void render() = 0; - virtual void update() = 0; + virtual void render(unsigned int delta) = 0; + virtual void update(unsigned int delta) = 0; virtual void resize() = 0; virtual void resume() = 0; virtual void show() = 0;