PolyScene.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * PolyScene.h
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 3/18/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. // @package Scene
  10. #pragma once
  11. #include "PolyString.h"
  12. #include "PolyGlobals.h"
  13. #include "PolyRenderer.h"
  14. #include "PolySceneEntity.h"
  15. #include "PolyCamera.h"
  16. #include "PolySceneLight.h"
  17. #include <vector>
  18. using std::vector;
  19. namespace Polycode {
  20. class Camera;
  21. class SceneLight;
  22. class _PolyExport Scene : public EventDispatcher {
  23. public:
  24. Scene();
  25. virtual ~Scene();
  26. virtual void Render() = 0;
  27. virtual void RenderDepthOnly(Camera *targetCamera) = 0;
  28. void addEntity(SceneEntity *entity);
  29. void removeEntity(SceneEntity *entity);
  30. Camera *getDefaultCamera();
  31. void enableLighting(bool enable);
  32. void enableFog(bool enable);
  33. void setFogProperties(int fogMode, Color color, Number density, Number startDepth, Number endDepth);
  34. virtual void Update();
  35. void setVirtual(bool val);
  36. bool isVirtual();
  37. bool isEnabled();
  38. void setEnabled(bool enabled);
  39. int getNumEntities() { return entities.size(); }
  40. SceneEntity *getEntity(int index) { return entities[index]; }
  41. SceneEntity *getEntityAtCursor(Number x, Number y);
  42. protected:
  43. bool isSceneVirtual;
  44. bool enabled;
  45. Camera *defaultCamera;
  46. vector <SceneEntity*> entities;
  47. bool lightingEnabled;
  48. bool fogEnabled;
  49. int fogMode;
  50. Color fogColor;
  51. Number fogDensity;
  52. Number fogStartDepth;
  53. Number fogEndDepth;
  54. };
  55. }