Mercurial > fife-parpg
comparison engine/core/view/renderers/genericrenderer.cpp @ 32:75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
* add grouing to generic renderer, probably this should be exported to the client in any way
author | spq@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Fri, 11 Jul 2008 15:37:16 +0000 |
parents | 9a9f4447af7c |
children | 6f1227f4932b |
comparison
equal
deleted
inserted
replaced
31:9a9f4447af7c | 32:75b6394ced14 |
---|---|
285 | 285 |
286 GenericRenderer::GenericRenderer(RenderBackend* renderbackend, int position, ImagePool* imagepool, AnimationPool* animpool): | 286 GenericRenderer::GenericRenderer(RenderBackend* renderbackend, int position, ImagePool* imagepool, AnimationPool* animpool): |
287 RendererBase(renderbackend, position), | 287 RendererBase(renderbackend, position), |
288 m_imagepool(imagepool), | 288 m_imagepool(imagepool), |
289 m_animationpool(animpool), | 289 m_animationpool(animpool), |
290 m_infos() { | 290 m_groups() { |
291 setEnabled(false); | 291 setEnabled(false); |
292 } | 292 } |
293 | 293 |
294 GenericRenderer::GenericRenderer(const GenericRenderer& old): | 294 GenericRenderer::GenericRenderer(const GenericRenderer& old): |
295 RendererBase(old), | 295 RendererBase(old), |
296 m_imagepool(old.m_imagepool), | 296 m_imagepool(old.m_imagepool), |
297 m_animationpool(old.m_animationpool), | 297 m_animationpool(old.m_animationpool), |
298 m_infos() { | 298 m_groups() { |
299 setEnabled(false); | 299 setEnabled(false); |
300 } | 300 } |
301 | 301 |
302 RendererBase* GenericRenderer::clone() { | 302 RendererBase* GenericRenderer::clone() { |
303 return new GenericRenderer(*this); | 303 return new GenericRenderer(*this); |
304 } | 304 } |
305 | 305 |
306 GenericRenderer::~GenericRenderer() { | 306 GenericRenderer::~GenericRenderer() { |
307 } | 307 } |
308 void GenericRenderer::addLine(GenericRendererNode n1, GenericRendererNode n2, uint8_t r, uint8_t g, uint8_t b) { | 308 void GenericRenderer::addLine(int group, GenericRendererNode n1, GenericRendererNode n2, uint8_t r, uint8_t g, uint8_t b) { |
309 GenericRendererElementInfo* info = new GenericRendererLineInfo(n1, n2, r, g, b); | 309 GenericRendererElementInfo* info = new GenericRendererLineInfo(n1, n2, r, g, b); |
310 m_infos.push_back(info); | 310 m_groups[group].push_back(info); |
311 } | 311 } |
312 void GenericRenderer::addPoint(GenericRendererNode n, uint8_t r, uint8_t g, uint8_t b) { | 312 void GenericRenderer::addPoint(int group, GenericRendererNode n, uint8_t r, uint8_t g, uint8_t b) { |
313 GenericRendererElementInfo* info = new GenericRendererPointInfo(n, r, g, b); | 313 GenericRendererElementInfo* info = new GenericRendererPointInfo(n, r, g, b); |
314 m_infos.push_back(info); | 314 m_groups[group].push_back(info); |
315 } | 315 } |
316 void GenericRenderer::addQuad(GenericRendererNode n1, GenericRendererNode n2, GenericRendererNode n3, GenericRendererNode n4, uint8_t r, uint8_t g, uint8_t b) { | 316 void GenericRenderer::addQuad(int group, GenericRendererNode n1, GenericRendererNode n2, GenericRendererNode n3, GenericRendererNode n4, uint8_t r, uint8_t g, uint8_t b) { |
317 GenericRendererElementInfo* info = new GenericRendererQuadInfo(n1, n2, n3, n4, r, g, b); | 317 GenericRendererElementInfo* info = new GenericRendererQuadInfo(n1, n2, n3, n4, r, g, b); |
318 m_infos.push_back(info); | 318 m_groups[group].push_back(info); |
319 } | 319 } |
320 void GenericRenderer::addText(GenericRendererNode n, AbstractFont* font, std::string text) { | 320 void GenericRenderer::addText(int group, GenericRendererNode n, AbstractFont* font, std::string text) { |
321 GenericRendererElementInfo* info = new GenericRendererTextInfo(n, font, text); | 321 GenericRendererElementInfo* info = new GenericRendererTextInfo(n, font, text); |
322 m_infos.push_back(info); | 322 m_groups[group].push_back(info); |
323 } | 323 } |
324 void GenericRenderer::addImage(GenericRendererNode n, int image) { | 324 void GenericRenderer::addImage(int group, GenericRendererNode n, int image) { |
325 GenericRendererElementInfo* info = new GenericRendererImageInfo(n, image); | 325 GenericRendererElementInfo* info = new GenericRendererImageInfo(n, image); |
326 m_infos.push_back(info); | 326 m_groups[group].push_back(info); |
327 } | 327 } |
328 void GenericRenderer::addAnimation(GenericRendererNode n, int animation) { | 328 void GenericRenderer::addAnimation(int group, GenericRendererNode n, int animation) { |
329 GenericRendererElementInfo* info = new GenericRendererAnimationInfo(n, animation); | 329 GenericRendererElementInfo* info = new GenericRendererAnimationInfo(n, animation); |
330 m_infos.push_back(info); | 330 m_groups[group].push_back(info); |
331 } | 331 } |
332 void GenericRenderer::removeAll() { | 332 void GenericRenderer::removeAll(int group) { |
333 std::vector<GenericRendererElementInfo*>::const_iterator info_it = m_infos.begin(); | 333 std::vector<GenericRendererElementInfo*>::const_iterator info_it = m_groups[group].begin(); |
334 for (;info_it != m_infos.end(); ++info_it) { | 334 for (;info_it != m_groups[group].end(); ++info_it) { |
335 delete *info_it; | 335 delete *info_it; |
336 } | 336 } |
337 m_infos.clear(); | 337 m_groups[group].clear(); |
338 m_groups.erase(group); | |
338 } | 339 } |
339 | 340 |
340 void GenericRenderer::render(Camera* cam, Layer* layer, std::vector<Instance*>& instances) { | 341 void GenericRenderer::render(Camera* cam, Layer* layer, std::vector<Instance*>& instances) { |
341 std::vector<GenericRendererElementInfo*>::const_iterator info_it = m_infos.begin(); | 342 std::map<int, std::vector<GenericRendererElementInfo*> >::iterator group_it = m_groups.begin(); |
342 for (;info_it != m_infos.end(); ++info_it) { | 343 for(; group_it != m_groups.end(); ++group_it) { |
343 GenericRendererElementInfo* info = *info_it; | 344 std::vector<GenericRendererElementInfo*>::const_iterator info_it = group_it->second.begin(); |
344 info->render(cam, layer, instances, m_renderbackend, m_imagepool, m_animationpool); | 345 for (;info_it != group_it->second.end(); ++info_it) { |
346 (*info_it)->render(cam, layer, instances, m_renderbackend, m_imagepool, m_animationpool); | |
347 } | |
345 } | 348 } |
346 } | 349 } |
347 } | 350 } |