Entityx usage and fixed release types
This commit is contained in:
@@ -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} )
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 1.8 KiB |
18
external/entityx-1.1.2/entityx-config.cmake
vendored
18
external/entityx-1.1.2/entityx-config.cmake
vendored
@@ -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)
|
||||
@@ -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.
|
||||
|
||||
16
src/entities/MovementSystem.cpp
Normal file
16
src/entities/MovementSystem.cpp
Normal file
@@ -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<Position, Direction>())
|
||||
{
|
||||
entityx::ComponentHandle<Position> position = entity.component<Position>();
|
||||
entityx::ComponentHandle<Direction> direction = entity.component<Direction>();
|
||||
position.get()->x += direction.get()->x * dt;
|
||||
position.get()->y += direction.get()->y * dt;
|
||||
}
|
||||
}
|
||||
10
src/entities/MovementSystem.h
Normal file
10
src/entities/MovementSystem.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef MOVEMENTSYSTEM_H
|
||||
#define MOVEMENTSYSTEM_H
|
||||
|
||||
#include <entityx/entityx.h>
|
||||
|
||||
struct MovementSystem : public entityx::System<MovementSystem> {
|
||||
void update(entityx::EntityManager &es, entityx::EventManager &events, entityx::TimeDelta dt) override;
|
||||
};
|
||||
|
||||
#endif //MOVEMENTSYSTEM_H
|
||||
31
src/entities/RenderSystem.cpp
Normal file
31
src/entities/RenderSystem.cpp
Normal file
@@ -0,0 +1,31 @@
|
||||
#include "RenderSystem.h"
|
||||
#include "components/Renderable.h"
|
||||
#include "components/Position.h"
|
||||
|
||||
#include <glm/glm.hpp>
|
||||
#include <glm/gtc/matrix_transform.hpp>
|
||||
|
||||
void RenderSystem::update(entityx::EntityManager &es,
|
||||
entityx::EventManager &events,
|
||||
entityx::TimeDelta dt)
|
||||
{
|
||||
for (entityx::Entity entity : es.entities_with_components<Renderable, Position>())
|
||||
{
|
||||
entityx::ComponentHandle<Renderable> meshContainer = entity.component<Renderable>();
|
||||
entityx::ComponentHandle<Position> pos = entity.component<Position>();
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
15
src/entities/RenderSystem.h
Normal file
15
src/entities/RenderSystem.h
Normal file
@@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <entityx/entityx.h>
|
||||
#include "../Renderer.h"
|
||||
#include "../Camera.h"
|
||||
#include "../Assets.h"
|
||||
|
||||
|
||||
struct RenderSystem : public entityx::System<RenderSystem> {
|
||||
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;
|
||||
};
|
||||
11
src/entities/components/Direction.h
Normal file
11
src/entities/components/Direction.h
Normal file
@@ -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
|
||||
12
src/entities/components/Renderable.h
Normal file
12
src/entities/components/Renderable.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "../../Mesh.h"
|
||||
#include <string>
|
||||
|
||||
struct Renderable
|
||||
{
|
||||
Renderable(Mesh *mesh, std::string shaderName) : _mesh(mesh), _shaderName(shaderName) {}
|
||||
|
||||
Mesh *_mesh;
|
||||
std::string _shaderName;
|
||||
};
|
||||
@@ -1,5 +1,10 @@
|
||||
#include "GameScreen.h"
|
||||
#include <entityx/entityx.h>
|
||||
#include "../entities/components/Position.h"
|
||||
#include "../entities/components/Direction.h"
|
||||
#include "../entities/components/Renderable.h"
|
||||
#include "../entities/MovementSystem.h"
|
||||
#include "../entities/RenderSystem.h"
|
||||
|
||||
#include <SDL.h>
|
||||
|
||||
#include <iostream>
|
||||
@@ -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<Position>();
|
||||
entityx::Entity charakter = ex.entities.create();
|
||||
charakter.assign<Position>();
|
||||
charakter.assign<Direction>(1.f,0.f); //apply speed right
|
||||
charakter.assign<Renderable>(obj, "defaultShader");
|
||||
|
||||
ex.systems.add<MovementSystem>();
|
||||
ex.systems.add<RenderSystem>(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<RenderSystem>(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<MovementSystem>(dt);
|
||||
}
|
||||
|
||||
void GameScreen::resize()
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
#include "../Camera.h"
|
||||
#include "../input/InputHandler.h"
|
||||
|
||||
#include <entityx/entityx.h>
|
||||
|
||||
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
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user