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 }