PolyScreen.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. * PolyScreen.h
  3. * TAU
  4. *
  5. * Created by Ivan Safrin on 3/13/08.
  6. * Copyright 2008 Ivan Safrin. All rights reserved.
  7. *
  8. */
  9. // @package Screen
  10. #pragma once
  11. #include "PolyGlobals.h"
  12. #include "PolyScreenEntity.h"
  13. #include "PolyRenderer.h"
  14. #include "PolyInputEvent.h"
  15. #include "PolyCoreServices.h"
  16. #include <vector>
  17. #include <algorithm>
  18. #include "PolyScreenEvent.h"
  19. using namespace std;
  20. namespace Polycode {
  21. class _PolyExport Screen : public EventDispatcher {
  22. public:
  23. Screen();
  24. ~Screen();
  25. ScreenEntity* addChild(ScreenEntity *newEntity);
  26. ScreenEntity* removeChild(ScreenEntity *entityToRemove);
  27. void setScreenOffset(float x, float y);
  28. Vector2 getScreenOffset();
  29. virtual void Shutdown();
  30. virtual void Update();
  31. ScreenEntity *getEntityAt(float x, float y);
  32. void Render();
  33. void setRenderer(Renderer *renderer);
  34. void setScreenShader(string shaderName);
  35. void handleEvent(Event *event);
  36. int getHighestZIndex();
  37. void sortChildren();
  38. static bool cmpZindex(const ScreenEntity *left, const ScreenEntity *right);
  39. void handleInputEvent(InputEvent *inputEvent);
  40. bool hasFilterShader();
  41. void drawFilter();
  42. bool Lua_EntitiesEqual(ScreenEntity *ent1, ScreenEntity *ent2) { return ent1 == ent2; }
  43. ScreenEntity *getRootEntity() { return rootEntity; }
  44. bool enabled;
  45. protected:
  46. ScreenEntity *rootEntity;
  47. Vector2 offset;
  48. Renderer *renderer;
  49. ScreenEntity *focusChild;
  50. vector <ScreenEntity*> children;
  51. Material *filterShaderMaterial;
  52. Texture *originalSceneTexture;
  53. Texture *zBufferSceneTexture;
  54. vector<ShaderBinding*> localShaderOptions;
  55. bool _hasFilterShader;
  56. };
  57. }