TBUI.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #pragma once
  2. #ifdef ATOMIC_TBUI
  3. #include "UIElement.h"
  4. namespace tb
  5. {
  6. class TBWidget;
  7. }
  8. namespace Atomic
  9. {
  10. class VertexBuffer;
  11. /// %UI element which renders a 3D scene.
  12. class ATOMIC_API TBUI : public UIElement
  13. {
  14. OBJECT(TBUI);
  15. tb::TBWidget* rootWidget_;
  16. bool initialized_;
  17. void HandleScreenMode(StringHash eventType, VariantMap& eventData);
  18. void HandleMouseButtonDown(StringHash eventType, VariantMap& eventData);
  19. void HandleMouseButtonUp(StringHash eventType, VariantMap& eventData);
  20. void HandleMouseMove(StringHash eventType, VariantMap& eventData);
  21. void HandleMouseWheel(StringHash eventType, VariantMap& eventData);
  22. void HandleKeyDown(StringHash eventType, VariantMap& eventData);
  23. void HandleKeyUp(StringHash eventType, VariantMap& eventData);
  24. void HandleKey(bool keydown, int keycode, int scancode);
  25. void HandleTextInput(StringHash eventType, VariantMap& eventData);
  26. void HandleUpdate(StringHash eventType, VariantMap& eventData);
  27. void HandleRenderUpdate(StringHash eventType, VariantMap& eventData);
  28. public:
  29. /// Construct.
  30. TBUI(Context* context);
  31. /// Destruct.
  32. ~TBUI();
  33. tb::TBWidget* GetRootWidget() { return rootWidget_; }
  34. bool LoadResourceFile(tb::TBWidget* widget, const String& filename);
  35. void Render();
  36. void GetBatches(PODVector<UIBatch>& batches, PODVector<float>& vertexData, const IntRect& currentScissor);
  37. void SubmitBatchVertexData(Texture* texture, const PODVector<float>& vertexData);
  38. void SetKeyboardDisabled(bool disabled) {keyboardDisabled_ = disabled; }
  39. void SetInputDisabled(bool disabled) { inputDisabled_ = disabled; }
  40. void FadeOut(float time);
  41. void FadeIn(float time);
  42. float GetFadeAlpha() { return fadeAlpha_; }
  43. void SetFadeAlpha(float fadeAlpha) { fadeAlpha_ = fadeAlpha; }
  44. void Initialize();
  45. void Shutdown();
  46. private:
  47. static WeakPtr<Context> readerContext_;
  48. static void TBFileReader(const char* filename, void** data, unsigned* length);
  49. void Render(VertexBuffer* buffer, const PODVector<UIBatch>& batches, unsigned batchStart, unsigned batchEnd);
  50. void SetVertexData(VertexBuffer* dest, const PODVector<float>& vertexData);
  51. bool inputDisabled_;
  52. bool keyboardDisabled_;
  53. float fadeAlpha_;
  54. float fadeTarget_;
  55. float currentFadeTime_;
  56. float fadeTime_;
  57. /// UI rendering batches.
  58. PODVector<UIBatch> batches_;
  59. /// UI rendering vertex data.
  60. PODVector<float> vertexData_;
  61. SharedPtr<VertexBuffer> vertexBuffer_;
  62. WeakPtr<Graphics> graphics_;
  63. bool shuttingDown_;
  64. };
  65. }
  66. #endif