-
Notifications
You must be signed in to change notification settings - Fork 1
/
RenderSystem.h
34 lines (29 loc) · 1.07 KB
/
RenderSystem.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/** Render System Header
*
* @author Caleb Geiger
* Created: 8-2-2013
* Source File: RenderSystem.h
*/
#pragma once
#include "ISystem.h"
#include "WindowAccessor.h"
#include "IListener.h"
class IRenderComponent;
typedef std::vector<std::vector<IRenderComponent*> > renderQueue;
typedef std::function<bool (IRenderComponent* a, IRenderComponent* b)> renderSort;
class RenderSystem : public ISystem, public WindowAccessor, IListener<EntityMovedMessage>
{
private:
unsigned int _depth;
renderQueue _RenderQueue;
renderSort _sort;
std::vector<const char*> _renderTypes = {"sprite", "rectangle", "circle", "text", "particle" };
void OnMessage(EntityMovedMessage& msg) override;
void insertRenderComponent(unsigned int id, const char* type);
void removeRenderComponent(unsigned int id, const char* type);
public:
RenderSystem(unsigned int depth = 1, renderSort sort = nullptr) :
ISystem("Render"), _depth(depth), _RenderQueue(_depth), _sort(sort) { }
void Update(sf::Time dt) override;
bool ValidateEntity(unsigned int ID) override;
};