AEPlayer.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. #pragma once
  5. #include <Atomic/Core/Object.h>
  6. #include <Atomic/IPC/IPC.h>
  7. #include <Atomic/IPC/IPCEvents.h>
  8. #include <Atomic/IPC/IPCBroker.h>
  9. #include "../AETypes.h"
  10. using namespace Atomic;
  11. namespace Atomic
  12. {
  13. class JSVM;
  14. }
  15. namespace AtomicEditor
  16. {
  17. class UIPlayer;
  18. struct AEPlayerError
  19. {
  20. String name_;
  21. String message_;
  22. String filename_;
  23. int lineNumber_;
  24. String stack_;
  25. };
  26. class AEPlayer : public Object
  27. {
  28. OBJECT(AEPlayer);
  29. public:
  30. /// Construct.
  31. AEPlayer(Context* context);
  32. /// Destruct.
  33. ~AEPlayer();
  34. bool Play(AEPlayerMode mode, const IntRect& rect = IntRect());
  35. AEPlayerMode GetMode() const { return mode_; }
  36. void Invalidate();
  37. bool HasErrors() { return errors_.Size() != 0; }
  38. const Vector<AEPlayerError>& GetErrors() { return errors_; }
  39. UIPlayer* GetUIPlayer() { return uiPlayer_; }
  40. void SetUIPlayer(UIPlayer* uiPlayer);
  41. private:
  42. AEPlayerMode mode_;
  43. Vector<AEPlayerError> errors_;
  44. void HandleJSError(StringHash eventType, VariantMap& eventData);
  45. void HandleEditorShutdown(StringHash eventType, VariantMap& eventData);
  46. void HandleIPCWorkerStarted(StringHash eventType, VariantMap& eventData);
  47. void HandleIPCWorkerExit(StringHash eventType, VariantMap& eventData);
  48. SharedPtr<IPCBroker> broker_;
  49. SharedPtr<UIPlayer> uiPlayer_;
  50. };
  51. }