PolySceneManager.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*
  2. * PolySceneManager.cpp
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 3/18/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. #include "PolySceneManager.h"
  10. using namespace Polycode;
  11. SceneManager::SceneManager() {
  12. }
  13. SceneManager::~SceneManager() {
  14. for(int i=0; i < scenes.size(); i++) {
  15. delete scenes[i];
  16. }
  17. scenes.clear();
  18. }
  19. void SceneManager::removeScene(Scene *scene) {
  20. Logger::log("Removing scene\n");
  21. for(int i=0;i<scenes.size();i++) {
  22. if(scenes[i] == scene) {
  23. scenes.erase(scenes.begin()+i);
  24. // delete scene;
  25. }
  26. }
  27. }
  28. void SceneManager::registerRenderTexture(SceneRenderTexture *renderTexture) {
  29. renderTextures.push_back(renderTexture);
  30. }
  31. void SceneManager::addScene(Scene *newScene) {
  32. scenes.push_back(newScene);
  33. }
  34. void SceneManager::updateRenderTextures(Scene *scene) {
  35. }
  36. void SceneManager::UpdateVirtual() {
  37. for(int i=0;i<renderTextures.size();i++) {
  38. CoreServices::getInstance()->getRenderer()->setViewportSize(renderTextures[i]->getTargetTexture()->getWidth(), renderTextures[i]->getTargetTexture()->getHeight());
  39. CoreServices::getInstance()->getRenderer()->loadIdentity();
  40. renderTextures[i]->getTargetScene()->Update();
  41. renderTextures[i]->getTargetScene()->Render();
  42. renderTextures[i]->drawScreen();
  43. CoreServices::getInstance()->getRenderer()->clearScreen();
  44. CoreServices::getInstance()->getRenderer()->loadIdentity();
  45. }
  46. CoreServices::getInstance()->getRenderer()->setViewportSize(CoreServices::getInstance()->getRenderer()->getXRes(), CoreServices::getInstance()->getRenderer()->getYRes());
  47. }
  48. void SceneManager::Update() {
  49. for(int i=0;i<scenes.size();i++) {
  50. if(scenes[i]->isEnabled() && !scenes[i]->isVirtual()) {
  51. CoreServices::getInstance()->getRenderer()->loadIdentity();
  52. Scene *scene = scenes[i];
  53. scene->Update();
  54. if(scene->getDefaultCamera()->hasFilterShader()) {
  55. scene->getDefaultCamera()->drawFilter();
  56. } else {
  57. scene->Render();
  58. }
  59. }
  60. }
  61. }