You.i Engine
YiAnimatingLayout.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_ANIMATING_LAYOUT_H_
3 #define _YI_ANIMATING_LAYOUT_H_
4 
5 #include "layout/YiLayout.h"
6 #include "layout/YiLayoutState.h"
7 
8 #include <set>
9 
11 
68 {
69 public:
71  virtual ~CYIAnimatingLayout();
72 
78  void DisableAnimationsOnNextLayout(bool bDisable = true);
79 
85  void DisableAnimationsOnNextLayoutFor(CYISceneNode *pChild, bool bDisable = true);
86 
87  virtual void ChildAdded(CYISceneNode *pChild) override;
88 
89  virtual void ChildRemoved(CYISceneNode *pChild) override;
90 
91  virtual void ChildVisibilityChanged(CYISceneNode *pChild) override;
92 
93 
101  void SetMovingTime(uint32_t uMovingTimeMs);
102 
103  uint32_t GetMovingTimeMs() const;
104 
112  void SetSizingTime(uint32_t uSizingTimeMs);
113 
114  uint32_t GetSizingTimeMs() const;
115 
121  void SetTimeInterpolator(std::unique_ptr<CYITimeInterpolator> pInterpolator);
122 
125 
126 protected:
127  virtual void Configure() override;
128 
129  virtual void OnMeasurementsApplied() override;
130 
131  virtual const CYIRuntimeTypeInfo &GetLayoutConfigType() const override;
132 
133  virtual void ApplyPosition(CYISceneNode *pChild, const glm::vec3 &vPosition) override;
134 
135  virtual void ApplySize(CYISceneNode *pChild, const glm::vec3 &vSize) override;
136 
137 private:
138  bool ShouldAnimatePositionFor(const CYISceneNode *pChild) const;
139  bool ShouldAnimateSizeFor(const CYISceneNode *pChild) const;
140 
141  uint32_t m_uMovingTimeMs;
142  uint32_t m_uSizingTimeMs;
143  std::unique_ptr<CYITimeInterpolator> m_pTimeInterpolator;
144 
145  bool m_bAnimationsDisabledOnNextLayout;
146  std::set<const CYISceneNode*> m_animationsDisabledOnNextLayoutForChildren;
147 
149 };
150 
157 {
158 public:
160  virtual ~CYIAnimatingLayoutConfig();
161 
162  virtual void ConfigureFrom(const IYIPropertiesSource *pSource) override;
163 
171  void SetAnimatePosition(bool bAnimatePosition);
172 
173  bool IsUsingAnimatedPosition() const;
174 
182  void SetAnimateSize(bool bAnimateSize);
183 
184  bool IsUsingAnimatedSize() const;
185 
186 protected:
189 
191 };
192 
201 {
202 public:
204  virtual ~CYIAnimatingLayoutState();
205 };
206 
210 {
211  return m_bAnimatePosition;
212 }
213 
215 {
216  return m_bAnimateSize;
217 }
218 
219 #endif // _YI_ANIMATING_LAYOUT_H_
A class used to hold per-child layout configuration for CYIAnimatingLayout layouts.
Definition: YiAnimatingLayout.h:156
Container for basic interpolator functions.
Definition: YiTimeInterpolator.h:21
virtual void Configure() override
CYITimeInterpolator * GetTimeInterpolator()
bool m_bAnimatePosition
Definition: YiAnimatingLayout.h:187
bool IsUsingAnimatedPosition() const
Definition: YiAnimatingLayout.h:209
virtual void OnMeasurementsApplied() override
void SetTimeInterpolator(std::unique_ptr< CYITimeInterpolator > pInterpolator)
void SetMovingTime(uint32_t uMovingTimeMs)
#define YI_TYPE_BASES(...)
Definition: YiRtti.h:350
void DisableAnimationsOnNextLayoutFor(CYISceneNode *pChild, bool bDisable=true)
uint32_t GetMovingTimeMs() const
uint32_t GetSizingTimeMs() const
virtual const CYIRuntimeTypeInfo & GetLayoutConfigType() const override
virtual ~CYIAnimatingLayout()
virtual void ApplySize(CYISceneNode *pChild, const glm::vec3 &vSize) override
A class used to hold layout state for CYIAnimatingLayout layouts.
Definition: YiAnimatingLayout.h:200
A scene node is the base type for all nodes which are used by the scene manager; it is an integral pa...
Definition: YiSceneNode.h:114
virtual void ChildRemoved(CYISceneNode *pChild) override
bool m_bAnimateSize
Definition: YiAnimatingLayout.h:188
A class used to hold node-specific layout configuration (such as, for example, Margin).
Definition: YiLayoutConfig.h:24
virtual void ChildVisibilityChanged(CYISceneNode *pChild) override
The abstract runtime representation of a C++ type.
Definition: YiRtti.h:48
A class used to hold node-specific layout state.
Definition: YiLayoutState.h:16
A layout that can animate its children&#39;s position and size.
Definition: YiAnimatingLayout.h:67
An interface to a class that provides key-value properties.
Definition: YiPropertiesSource.h:17
This class defines a layout that can be applied to a scene view. The layout class determines how obje...
Definition: YiLayout.h:159
bool IsUsingAnimatedSize() const
Definition: YiAnimatingLayout.h:214
virtual void ApplyPosition(CYISceneNode *pChild, const glm::vec3 &vPosition) override
virtual void ChildAdded(CYISceneNode *pChild) override
void DisableAnimationsOnNextLayout(bool bDisable=true)
void SetSizingTime(uint32_t uSizingTimeMs)