UIPlayer.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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/Graphics/Graphics.h>
  13. #include <Atomic/Graphics/Viewport.h>
  14. #include <Atomic/Graphics/Camera.h>
  15. #include "UI/Modal/UIModalOps.h"
  16. #include "License/AELicenseSystem.h"
  17. #include "AEEditor.h"
  18. #include "AEEvents.h"
  19. #include "UIPlayer.h"
  20. namespace Atomic
  21. {
  22. void FixMeSetLight2DGroupViewport(Viewport *viewport);
  23. }
  24. namespace AtomicEditor
  25. {
  26. // UIBuildSettings------------------------------------------------
  27. UIPlayer::UIPlayer(Context* context):
  28. UIModalOpWindow(context)
  29. {
  30. // BEGIN LICENSE MANAGEMENT
  31. LicenseSystem* license = GetSubsystem<LicenseSystem>();
  32. standardLicense_ = license->IsStandardLicense();
  33. show3DInfo_ = false;
  34. // END LICENSE MANAGEMENT
  35. aePlayer_ = GetSubsystem<AEPlayer>();
  36. aePlayer_->SetUIPlayer(this);
  37. UI* tbui = GetSubsystem<UI>();
  38. // FIXME: disabling close button as having the widget die is currently bad
  39. window_->DisableCloseButton();
  40. window_->SetText("Atomic Player");
  41. tbui->LoadResourceFile(window_->GetContentRoot(), "AtomicEditor/editor/ui/playerwidget.tb.txt");
  42. Graphics* graphics = GetSubsystem<Graphics>();
  43. view3D_ = new UIView3D(context_);
  44. // horrible hack
  45. Viewport* viewport = view3D_->GetViewport();
  46. FixMeSetLight2DGroupViewport(viewport);
  47. TBWidgetDelegate* view3DDelegate = view3D_->GetWidgetDelegate();
  48. float gwidth = graphics->GetWidth();
  49. float aspect = float(graphics->GetHeight())/ gwidth;
  50. gwidth -= 150;
  51. playerSize_.x_ = gwidth;
  52. playerSize_.y_ = gwidth * aspect;
  53. LayoutParams lp;
  54. lp.SetWidth(playerSize_.x_);
  55. lp.SetHeight(playerSize_.y_);
  56. view3DDelegate->SetLayoutParams(lp);
  57. TBLayout* playercontainer = window_->GetWidgetByIDAndType<TBLayout>(TBIDC("playerlayout"));
  58. assert(playercontainer);
  59. playercontainer->AddChild(view3DDelegate);
  60. window_->ResizeToFitContent();
  61. Center();
  62. SubscribeToEvent(E_UPDATE, HANDLER(UIPlayer, HandleUpdate));
  63. }
  64. Viewport *UIPlayer::SetView(Scene* scene, Camera* camera)
  65. {
  66. view3D_->SetView(scene, camera);
  67. return view3D_->GetViewport();
  68. }
  69. UIPlayer::~UIPlayer()
  70. {
  71. }
  72. void UIPlayer::HandleUpdate(StringHash eventType, VariantMap& eventData)
  73. {
  74. view3D_->QueueUpdate();
  75. // BEGIN LICENSE MANAGEMENT
  76. if (standardLicense_)
  77. {
  78. Camera* camera = view3D_->GetViewport()->GetCamera();
  79. if (camera && !camera->IsOrthographic())
  80. {
  81. show3DInfo_ = true;
  82. }
  83. }
  84. // END LICENSE MANAGEMENT
  85. TBWidgetDelegate* view3DDelegate = view3D_->GetWidgetDelegate();
  86. TBRect rect = view3DDelegate->GetRect();
  87. view3DDelegate->ConvertToRoot(rect.x, rect.y);
  88. }
  89. bool UIPlayer::OnEvent(const TBWidgetEvent &ev)
  90. {
  91. if (ev.type == EVENT_TYPE_CLICK)
  92. {
  93. if (ev.target->GetID() == TBIDC("play"))
  94. {
  95. if (GetSubsystem<Editor>()->IsPlayingProject())
  96. {
  97. SendEvent(E_EDITORPLAYSTOP);
  98. return true;
  99. }
  100. }
  101. }
  102. return true;
  103. }
  104. }