rendererbase.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "model/structures/layer.h"
00031 #include "model/structures/map.h"
00032 #include "util/log/logger.h"
00033 #include "rendererbase.h"
00034
00035 namespace FIFE {
00036 static Logger _log(LM_VIEW);
00037
00038
00039 const int DEFAULT_RENDERER_POSITION = 1000;
00040
00041 RendererBase::RendererBase(RenderBackend* renderbackend, int position):
00042 m_renderbackend(renderbackend),
00043 m_enabled(false),
00044 m_pipeline_position(DEFAULT_RENDERER_POSITION),
00045 m_listener(NULL) {
00046 setPipelinePosition(position);
00047 }
00048
00049 RendererBase::RendererBase(const RendererBase& old):
00050 m_renderbackend(old.m_renderbackend),
00051 m_enabled(old.m_enabled),
00052 m_pipeline_position(old.m_pipeline_position),
00053 m_listener(NULL) {
00054 setPipelinePosition(old.m_pipeline_position);
00055 }
00056
00057 RendererBase::RendererBase():
00058 m_renderbackend(NULL),
00059 m_enabled(false),
00060 m_pipeline_position(DEFAULT_RENDERER_POSITION),
00061 m_listener(NULL) {
00062 }
00063
00064 void RendererBase::setPipelinePosition(int position) {
00065 if (position !=m_pipeline_position) {
00066 m_pipeline_position = position;
00067 if (m_listener) {
00068 m_listener->onRendererPipelinePositionChanged(this);
00069 }
00070 }
00071 }
00072
00073 void RendererBase::setEnabled(bool enabled) {
00074 if (m_enabled != enabled) {
00075 m_enabled = enabled;
00076 if (m_listener) {
00077 m_listener->onRendererEnabledChanged(this);
00078 }
00079 }
00080 }
00081
00082 void RendererBase::addActiveLayer(Layer* layer) {
00083 if (std::find(m_active_layers.begin(), m_active_layers.end(), layer) == m_active_layers.end()) {
00084 m_active_layers.push_back(layer);
00085 }
00086 }
00087
00088 void RendererBase::removeActiveLayer(Layer* layer) {
00089 m_active_layers.remove(layer);
00090 }
00091
00092 void RendererBase::clearActiveLayers() {
00093 m_active_layers.clear();
00094 }
00095
00096 bool RendererBase::isActivedLayer(Layer* layer) {
00097 return std::find(m_active_layers.begin(), m_active_layers.end(), layer) != m_active_layers.end();
00098 }
00099
00100 void RendererBase::activateAllLayers(Map* map) {
00101 clearActiveLayers();
00102
00103 const std::list<Layer*>& tmp = map->getLayers();
00104 std::list<Layer*>::const_iterator it = tmp.begin();
00105 for (; it != tmp.end(); ++it) {
00106 addActiveLayer(*it);
00107 }
00108 }
00109
00110 }