MT Showcase SDK
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
LaunchedContentOperator.hpp
1 #pragma once
2 
3 #include "Export.hpp"
4 
5 #include <MultiWidgets/Operator.hpp>
6 #include <MultiWidgets/Widget.hpp>
7 
8 namespace Showcase
9 {
15  class SHOWCASE_API LaunchedContentOperator : public MultiWidgets::Operator,
16  public std::enable_shared_from_this<LaunchedContentOperator>
17  {
18  public:
19  LaunchedContentOperator(bool useRelativeLocation = false,
20  const Nimble::Vector2f & tapLocation = Nimble::Vector2f(0, 0),
21  float duration = 0.3f);
22 
23  virtual void added(MultiWidgets::Widget & widget) override;
24  virtual void removed(MultiWidgets::Widget & widget) override;
25 
26  virtual void update(MultiWidgets::Widget & widget,
27  const MultiWidgets::FrameInfo & frameInfo) override;
28 
29  void setRelativeLocation(const Nimble::Vector2f & loc);
30 
31  private:
32  void recalculateCenter(MultiWidgets::Widget & widget);
33  void createPlaceHolder(MultiWidgets::Widget & widget);
34  void updatePlaceholderSize(MultiWidgets::Widget & widget);
35  void checkValues(MultiWidgets::Widget & widget, bool hadPlaceHolder,
36  bool recalculate);
37 
38  MultiWidgets::WidgetPtr m_placeHolder;
39  MultiWidgets::WidgetWeakPtr m_widget;
40 
41  Valuable::AttributeString m_textTemplate;
42  Valuable::AttributeString m_invalidSourceTemplate;
43 
44  Nimble::Vector2f m_relativeLocation;
45  Nimble::Vector2f m_locationOffset;
46  Nimble::Vector2f m_originalOrigin;
47 
48  Nimble::Vector2f m_lastSeenLocation;
49 
50  bool m_useRelativeLocation;
51 
52  float m_animationDuration;
53 
54  float m_originalScale;
55  float m_originalOpacity;
56 
57  float m_animatedScale;
58  float m_animatedOpacity;
59 
60  double m_lifeTime;
61 
62  int m_sizeListener;
63  long m_readyListener;
64  };
65 
66  typedef std::shared_ptr<LaunchedContentOperator> LaunchedContentOperatorPtr;
67  typedef std::weak_ptr<LaunchedContentOperator> LaunchedContentOperatorWeakPtr;
68 }