26 #include <boost/lexical_cast.hpp>
32 #include "util/base/exception.h"
33 #include "util/structures/purge.h"
34 #include "util/structures/rect.h"
35 #include "view/camera.h"
36 #include "view/rendererbase.h"
37 #include "video/renderbackend.h"
38 #include "video/imagepool.h"
39 #include "video/animationpool.h"
47 const std::vector<RendererBase*>& renderers,
ImagePool* imagePool,
50 m_timeprovider(tp_master),
53 m_renderbackend(renderBackend),
54 m_imagepool(imagePool),
56 m_renderers(renderers),
62 std::vector<Camera*>::iterator iter = m_cameras.begin();
63 for ( ; iter != m_cameras.end(); ++iter) {
72 std::list<Layer*>::const_iterator it = m_layers.begin();
73 for(; it != m_layers.end(); ++it) {
74 if((*it)->getId() == id)
82 return m_layers.size();
86 std::list<Layer*>::const_iterator it = m_layers.begin();
87 for(; it != m_layers.end(); ++it) {
88 if(identifier == (*it)->getId())
89 throw NameClash(identifier);
92 Layer* layer =
new Layer(identifier,
this, grid);
93 m_layers.push_back(layer);
95 std::vector<MapChangeListener*>::iterator i = m_changelisteners.begin();
96 while (i != m_changelisteners.end()) {
97 (*i)->onLayerCreate(
this, layer);
105 std::list<Layer*>::iterator it = m_layers.begin();
106 for(; it != m_layers.end(); ++it) {
108 std::vector<MapChangeListener*>::iterator i = m_changelisteners.begin();
109 while (i != m_changelisteners.end()) {
110 (*i)->onLayerDelete(
this, layer);
122 std::list<Layer*>::iterator it = m_layers.begin();
123 for(; it != m_layers.end(); ++it) {
124 std::vector<MapChangeListener*>::iterator i = m_changelisteners.begin();
125 while (i != m_changelisteners.end()) {
126 (*i)->onLayerDelete(
this, *it);
135 m_changedlayers.clear();
136 std::list<Layer*>::iterator it = m_layers.begin();
137 for(; it != m_layers.end(); ++it) {
138 if ((*it)->update()) {
139 m_changedlayers.push_back(*it);
142 if (!m_changedlayers.empty()) {
143 std::vector<MapChangeListener*>::iterator i = m_changelisteners.begin();
144 while (i != m_changelisteners.end()) {
145 (*i)->onMapChanged(
this, m_changedlayers);
151 std::vector<Camera*>::iterator camIter = m_cameras.begin();
152 for ( ; camIter != m_cameras.end(); ++camIter) {
153 if ((*camIter)->isEnabled()) {
154 (*camIter)->update();
155 (*camIter)->render();
159 bool retval = m_changed;
165 m_changelisteners.push_back(listener);
169 std::vector<MapChangeListener*>::iterator i = m_changelisteners.begin();
170 while (i != m_changelisteners.end()) {
171 if ((*i) == listener) {
172 m_changelisteners.erase(i);
181 throw NotSupported(
"Must have valid layer for camera");
185 std::string errorStr =
"Camera: " +
id +
" already exists";
186 throw NameClash(errorStr);
190 Camera* camera =
new Camera(
id, layer, viewport, m_renderbackend, m_imagepool, m_animpool);
191 m_cameras.push_back(camera);
193 std::vector<RendererBase*>::iterator iter = m_renderers.begin();
194 for ( ; iter != m_renderers.end(); ++iter) {
202 std::vector<Camera*>::iterator iter = m_cameras.begin();
203 for ( ; iter != m_cameras.end(); ++iter) {
204 if ((*iter)->getId() == id) {
211 m_cameras.erase(iter);
219 std::vector<Camera*>::iterator iter = m_cameras.begin();
220 for ( ; iter != m_cameras.end(); ++iter) {
221 if ((*iter)->getId() == id) {