TBUI.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 SetInputDisabled(bool disabled) { inputDisabled_ = disabled; }
  38. void FadeOut(float time);
  39. void FadeIn(float time);
  40. float GetFadeAlpha() { return fadeAlpha_; }
  41. void SetFadeAlpha(float fadeAlpha) { fadeAlpha_ = fadeAlpha; }
  42. void Initialize();
  43. private:
  44. static WeakPtr<Context> readerContext_;
  45. static void TBFileReader(const char* filename, void** data, unsigned* length);
  46. void Render(VertexBuffer* buffer, const PODVector<UIBatch>& batches, unsigned batchStart, unsigned batchEnd);
  47. void SetVertexData(VertexBuffer* dest, const PODVector<float>& vertexData);
  48. bool inputDisabled_;
  49. float fadeAlpha_;
  50. float fadeTarget_;
  51. float currentFadeTime_;
  52. float fadeTime_;
  53. /// UI rendering batches.
  54. PODVector<UIBatch> batches_;
  55. /// UI rendering vertex data.
  56. PODVector<float> vertexData_;
  57. SharedPtr<VertexBuffer> vertexBuffer_;
  58. WeakPtr<Graphics> graphics_;
  59. };
  60. }
  61. #endif