Added Entityx logic (Movement|Render|Destruct)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user