Added Entityx logic (Movement|Render|Destruct)

This commit is contained in:
Gulum
2017-11-01 13:30:08 +01:00
parent 70857cb258
commit 6f68ac7db5
18 changed files with 163 additions and 17 deletions

View File

@@ -1,17 +1,31 @@
#include <iostream>
#include <SDL2/SDL_image.h>
#include "DarkRP2D.h"
#include "utility/Utility.h"
#include "entities/components/Position.h"
#include "entities/MovementSystem.h"
#include "entities/RenderSystem.h"
#include "entities/DestructSystem.h"
void DarkRP2D::create(SDL_Renderer *gRenderer, InputHandler *inputHandler) {
this->gRenderer = gRenderer;
this->inputHandler = inputHandler;
//Load PNG texture
gTexture = utility::loadTexture( "assets/police_officer.png", gRenderer);
ex = new entityx::EntityX();
ex->systems.add<DestructSystem>();
ex->systems.add<MovementSystem>();
ex->systems.add<RenderSystem>();
ex->systems.configure();
entityx::Entity entity = ex->entities.create();
entity.assign<Position>();
entity.destroy();
}
unsigned int ups = 0;
unsigned int fps = 0;
unsigned int acc = 0;
void DarkRP2D::loop(unsigned int deltaTime) {
accumulator += deltaTime;
@@ -25,26 +39,30 @@ void DarkRP2D::create(SDL_Renderer *gRenderer, InputHandler *inputHandler) {
skippedFrames = 0;
while (accumulator >= MS_PER_UPDATE && skippedFrames <= MAX_FRAMESKIP) {
accumulator -= MS_PER_UPDATE;
update(0.0f);
update(MS_PER_UPDATE/1000.0f); //Converted to Sec for normalization
ups++;
skippedFrames++;
}
if(acc >= 1000) {
std::cout << "Updates per second: " << ups << std::endl;
std::cout << "Updates per second: " << ups << " Frames per Second: " << fps << std::endl;
acc -= 1000;
ups = 0;
fps = 0;
}
render(0.0f);
fps++;
render(MS_PER_UPDATE/1000.0f);
}
void DarkRP2D::update(float deltaInSec) {
void DarkRP2D::update(double deltaInSec) {
ex->systems.update<DestructSystem>(deltaInSec);
ex->systems.update<MovementSystem>(deltaInSec);
}
void DarkRP2D::render(float deltaInSec) {
void DarkRP2D::render(double deltaInSec) {
//Clear screen
SDL_RenderClear( gRenderer );
ex->systems.update<RenderSystem>(deltaInSec);
SDL_Rect textureRect; //create a rect
textureRect.x = 0; //controls the rect's x coordinate
@@ -66,5 +84,7 @@ void DarkRP2D::create(SDL_Renderer *gRenderer, InputHandler *inputHandler) {
DarkRP2D::~DarkRP2D() {
//Free loaded image
SDL_DestroyTexture( gTexture );
delete ex;
gTexture = NULL;
}