UIPlayer.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  2. // Please see LICENSE.md in repository root for license information
  3. // https://github.com/AtomicGameEngine/AtomicGameEngine
  4. #include "AtomicEditor.h"
  5. #include <TurboBadger/tb_window.h>
  6. #include <TurboBadger/tb_select.h>
  7. #include <TurboBadger/tb_editfield.h>
  8. #include <Atomic/Core/Context.h>
  9. #include <Atomic/Core/CoreEvents.h>
  10. #include <Atomic/IO/Log.h>
  11. #include <Atomic/UI/UI.h>
  12. #include <Atomic/UI/TBUI.h>
  13. #include <Atomic/Graphics/Graphics.h>
  14. #include <Atomic/Graphics/Viewport.h>
  15. #include "AEEditor.h"
  16. #include "AEEvents.h"
  17. #include "UIPlayer.h"
  18. namespace Atomic
  19. {
  20. void FixMeSetLight2DGroupViewport(Viewport *viewport);
  21. }
  22. namespace AtomicEditor
  23. {
  24. // UIBuildSettings------------------------------------------------
  25. UIPlayer::UIPlayer(Context* context):
  26. UIModalOpWindow(context)
  27. {
  28. aePlayer_ = GetSubsystem<AEPlayer>();
  29. aePlayer_->SetUIPlayer(this);
  30. TBUI* tbui = GetSubsystem<TBUI>();
  31. window_->SetText("Atomic Player");
  32. tbui->LoadResourceFile(window_->GetContentRoot(), "AtomicEditor/editor/ui/playerwidget.tb.txt");
  33. Graphics* graphics = GetSubsystem<Graphics>();
  34. view3D_ = new UIView3D(context_);
  35. // horrible hack
  36. Viewport* viewport = view3D_->GetViewport();
  37. FixMeSetLight2DGroupViewport(viewport);
  38. TBWidgetDelegate* view3DDelegate = view3D_->GetWidgetDelegate();
  39. float gwidth = graphics->GetWidth();
  40. float aspect = float(graphics->GetHeight())/ gwidth;
  41. gwidth -= 150;
  42. playerSize_.x_ = gwidth;
  43. playerSize_.y_ = gwidth * aspect;
  44. LayoutParams lp;
  45. lp.SetWidth(playerSize_.x_);
  46. lp.SetHeight(playerSize_.y_);
  47. view3DDelegate->SetLayoutParams(lp);
  48. TBLayout* playercontainer = window_->GetWidgetByIDAndType<TBLayout>(TBIDC("playerlayout"));
  49. assert(playercontainer);
  50. playercontainer->AddChild(view3DDelegate);
  51. window_->ResizeToFitContent();
  52. Center();
  53. SubscribeToEvent(E_UPDATE, HANDLER(UIPlayer, HandleUpdate));
  54. }
  55. Viewport *UIPlayer::SetView(Scene* scene, Camera* camera)
  56. {
  57. view3D_->SetView(scene, camera);
  58. return view3D_->GetViewport();
  59. }
  60. UIPlayer::~UIPlayer()
  61. {
  62. }
  63. void UIPlayer::HandleUpdate(StringHash eventType, VariantMap& eventData)
  64. {
  65. view3D_->QueueUpdate();
  66. UI* ui = GetSubsystem<UI>();
  67. TBWidgetDelegate* view3DDelegate = view3D_->GetWidgetDelegate();
  68. TBRect rect = view3DDelegate->GetRect();
  69. view3DDelegate->ConvertToRoot(rect.x, rect.y);
  70. ui->GetRoot()->SetPosition(rect.x, rect.y);
  71. ui->GetRoot()->SetSize(rect.w, rect.h);
  72. }
  73. bool UIPlayer::OnEvent(const TBWidgetEvent &ev)
  74. {
  75. return true;
  76. }
  77. }