CSC3224_Computer_Games_Development / GameEngine / Engine_Graphics / EngineRenderingSystem.cpp
EngineRenderingSystem.cpp
Raw
#include "EngineRenderingSystem.h"
#include "../Engine_Graphics/Scene.h"
// Engine Rendering System
EngineRenderingSystem::EngineRenderingSystem(Scene& inputScene) : EngineMessageSystem(inputScene){}
EngineRenderingSystem::~EngineRenderingSystem(){}
// Step through the Rendering System
void EngineRenderingSystem::play(const sf::Time& elapsedTime)
{
// messages
	auto messageSystemEventType = this->scene->getEntityManagement().getMessageSystemEventType(MessageSystemEventType::SPRITE_RECTANGLE_TYPE);
// Sorting list by z
	std::sort(messageSystemEventType->begin(), messageSystemEventType->end(), [](messageSystemEventVector::value_type value1, messageSystemEventVector::value_type value2)
	{
				return value1.second->getEntitySprite()->getSpriteZOrder() < value2.second->getEntitySprite()->getSpriteZOrder();
	});
	this->scene->spriteRectangleVector.clear();
	for (auto message : *messageSystemEventType)
	{
		auto spriteRectangle = static_cast<SpriteRectangle*>(message.first);
		this->scene->spriteRectangleVector.push_back(spriteRectangle);
	}
}

void EngineRenderingSystem::clear() {
		scene->spriteRectangleVector.clear();
}