PolyScreen.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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 "PolyString.h"
  12. #include "PolyGlobals.h"
  13. #include "PolyScreenEntity.h"
  14. #include "PolyRenderer.h"
  15. #include "PolyInputEvent.h"
  16. #include "PolyCoreServices.h"
  17. #include <vector>
  18. #include <algorithm>
  19. #include "PolyScreenEvent.h"
  20. using namespace std;
  21. namespace Polycode {
  22. class _PolyExport Screen : public EventDispatcher {
  23. public:
  24. Screen();
  25. ~Screen();
  26. ScreenEntity* addChild(ScreenEntity *newEntity);
  27. ScreenEntity* removeChild(ScreenEntity *entityToRemove);
  28. void setScreenOffset(Number x, Number y);
  29. Vector2 getScreenOffset();
  30. virtual void Shutdown();
  31. virtual void Update();
  32. ScreenEntity *getEntityAt(Number x, Number y);
  33. void Render();
  34. void setRenderer(Renderer *renderer);
  35. void setNormalizedCoordinates(bool newVal, Number yCoordinateSize = 1.0f);
  36. void setScreenShader(String shaderName);
  37. void handleEvent(Event *event);
  38. int getHighestZIndex();
  39. void sortChildren();
  40. static bool cmpZindex(const ScreenEntity *left, const ScreenEntity *right);
  41. void handleInputEvent(InputEvent *inputEvent);
  42. bool hasFilterShader();
  43. void drawFilter();
  44. bool usesNormalizedCoordinates() { return useNormalizedCoordinates; }
  45. Number getYCoordinateSize() { return yCoordinateSize; }
  46. bool Lua_EntitiesEqual(ScreenEntity *ent1, ScreenEntity *ent2) { return ent1 == ent2; }
  47. ScreenEntity *getRootEntity() { return rootEntity; }
  48. bool enabled;
  49. protected:
  50. bool useNormalizedCoordinates;
  51. Number yCoordinateSize;
  52. ScreenEntity *rootEntity;
  53. Vector2 offset;
  54. Renderer *renderer;
  55. ScreenEntity *focusChild;
  56. vector <ScreenEntity*> children;
  57. Material *filterShaderMaterial;
  58. Texture *originalSceneTexture;
  59. Texture *zBufferSceneTexture;
  60. vector<ShaderBinding*> localShaderOptions;
  61. bool _hasFilterShader;
  62. };
  63. }