PolyScene.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. * PolyScene.cpp
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 3/18/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. #include "PolyScene.h"
  10. using namespace Polycode;
  11. Scene::Scene() : EventDispatcher() {
  12. defaultCamera = new Camera(this);
  13. CoreServices::getInstance()->getSceneManager()->addScene(this);
  14. fogEnabled = false;
  15. lightingEnabled = false;
  16. enabled = true;
  17. isSceneVirtual = false;
  18. }
  19. void Scene::setVirtual(bool val) {
  20. isSceneVirtual = val;
  21. }
  22. bool Scene::isVirtual() {
  23. return isSceneVirtual;
  24. }
  25. void Scene::setEnabled(bool enabled) {
  26. this->enabled = enabled;
  27. }
  28. bool Scene::isEnabled() {
  29. return enabled;
  30. }
  31. void Scene::Update() {
  32. }
  33. Scene::~Scene() {
  34. Logger::log("Cleaning scene...\n");
  35. for(int i=0; i < entities.size(); i++) {
  36. // delete entities[i];
  37. }
  38. entities.clear();
  39. CoreServices::getInstance()->getSceneManager()->removeScene(this);
  40. // delete defaultCamera;
  41. }
  42. void Scene::enableLighting(bool enable) {
  43. lightingEnabled = enable;
  44. CoreServices::getInstance()->getRenderer()->enableLighting(enable);
  45. }
  46. void Scene::enableFog(bool enable) {
  47. fogEnabled = enable;
  48. if(enable)
  49. CoreServices::getInstance()->getRenderer()->setFogProperties(fogMode, fogColor, fogDensity, fogStartDepth, fogEndDepth);
  50. CoreServices::getInstance()->getRenderer()->enableFog(enable);
  51. }
  52. void Scene::setFogProperties(int fogMode, Color color, Number density, Number startDepth, Number endDepth) {
  53. this->fogMode = fogMode;
  54. fogColor = color;
  55. fogDensity = density;
  56. fogStartDepth = startDepth;
  57. fogEndDepth = endDepth;
  58. if(fogEnabled)
  59. CoreServices::getInstance()->getRenderer()->setFogProperties(fogMode, fogColor, fogDensity, fogStartDepth, fogEndDepth);
  60. }
  61. SceneEntity *Scene::getEntityAtCursor(Number x, Number y) {
  62. for(int i =0; i< entities.size(); i++) {
  63. if(entities[i]->testMouseCollision(x,y)) {
  64. return entities[i];
  65. }
  66. }
  67. return NULL;
  68. }
  69. void Scene::addEntity(SceneEntity *entity) {
  70. entity->setRenderer(CoreServices::getInstance()->getRenderer());
  71. entities.push_back(entity);
  72. }
  73. void Scene::removeEntity(SceneEntity *entity) {
  74. for(int i=0; i < entities.size(); i++) {
  75. if(entities[i] == entity) {
  76. entities.erase(entities.begin()+i);
  77. return;
  78. }
  79. }
  80. }
  81. Camera *Scene::getDefaultCamera() {
  82. return defaultCamera;
  83. }