You.i Engine
YiEffect.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_EFFECT_H_
3 #define _YI_EFFECT_H_
4 
5 #include "animation/YiVariant.h"
6 #include "renderer/YiMaterial.h"
7 #include "renderer/YiMesh.h"
9 
10 #include <vector>
11 
23 class CYISceneNode;
24 class CYITimelineTrack;
25 
27 {
31  uint32_t nCount;
33 };
34 
36 {
38  uint32_t nCount;
39  uint32_t nTrackID;
40 };
41 
42 class CYIEffect : public std::enable_shared_from_this<CYIEffect>
43 {
44 public:
45  CYIEffect();
46  virtual ~CYIEffect();
47 
49  {
50  uint32_t nPassesNeeded;
52  uint32_t nWidth;
53  uint32_t nHeight;
54  uint32_t nCompWidth;
55  uint32_t nCompHeight;
56  std::vector<CYIString> ShaderFileNames;
57  float *pEffectValues;
59  std::vector<EffectUniform> Uniforms;
61  std::unique_ptr<CYIAbstractCameraSceneNode> pCamera;
62  void * pReserved1;
63  void * pReserved2;
64  void * pReserved3;
65  void * pReserved4;
66  void * pReserved5;
67  void * pReserved6;
68 
69  EFFECT_CONFIG();
70  };
71 
75  bool SetEffect(CYISceneNode * pOwner, EFFECT_CONFIG config);
76 
80  void ResetEffectSize(int32_t nWidth, int32_t nHeight);
81 
85  void SetEffectOwner(CYISceneNode * pOwner);
86 
90  const std::shared_ptr<CYIRenderTarget> GetRenderTarget(uint32_t nIndex) const;
91 
95  void SetRenderTarget(std::shared_ptr<CYIOffscreenRenderTarget> pTarget, uint32_t nIndex);
96 
100  const std::shared_ptr<CYIMesh> &GetMesh() const;
101 
105  const glm::mat4 &GetTransform() const;
106 
110  void SetTransform(glm::mat4 &Transform);
111 
118  CYIAbstractCameraSceneNode *GetCamera() const;
119 
123  const std::shared_ptr<CYIMaterial> GetMaterial(uint32_t nIndex) const;
124 
128  const EFFECT_CONFIG &GetConfig() const;
129 
136  void SetNeedsUpdate(bool bUpdate) const;
137 
141  bool GetNeedsUpdate() const ;
142 
146  void SetCustomUniforms();
147 
152  void ConnectTimelineTrack(const CYITimelineTrack *pTrack);
153 
157  void SetUniformValue(uint32_t nTrackID, const CYIVariant &value);
158 
162  void SetUniformValueDirect(uint32_t uIndex, const CYIVariant &value);
163 
167  void Enable(bool bEnable);
168 
169 protected:
172  std::shared_ptr<CYIMesh> m_pMesh;
173  std::vector<std::shared_ptr<CYIMaterial>> m_pMaterials;
174  std::vector<std::shared_ptr<CYIOffscreenRenderTarget>> m_pTargets;
175  std::vector<EffectUniformVariable> UniformVariables;
176  glm::mat4 m_Transform;
177  mutable bool m_bNeedsUpdate;
178  bool m_bEnable;
179  std::shared_ptr<CYIMaterial> m_pOrigMaterial;
180  std::shared_ptr<CYIRenderTarget> m_pOrigTarget;
181  std::shared_ptr<CYIMesh> m_pOrigMesh;
182 };
183 
186 #endif // _YI_EFFECT_H_
glm::mat4 m_Transform
Definition: YiEffect.h:176
bool bIsTextNode
Definition: YiEffect.h:60
uint32_t nWidth
Definition: YiEffect.h:52
A container class for common data types.
Definition: YiVariant.h:33
CYIUniformBufferId UniformId
Definition: YiEffect.h:28
uint32_t nCount
Definition: YiEffect.h:38
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
std::vector< CYIString > ShaderFileNames
Definition: YiEffect.h:56
IYIUniformBufferObject::YI_UNIFORM_TYPE UniformType
Definition: YiEffect.h:30
std::unique_ptr< CYIAbstractCameraSceneNode > pCamera
Definition: YiEffect.h:61
Definition: YiEffect.h:48
uint32_t nExistingPassToStartOn
Definition: YiEffect.h:51
A representation of a single track of a CYITimeline.
Definition: YiTimelineTrack.h:26
Provides a base for the definition of camera objects.
Definition: YiAbstractCameraSceneNode.h:30
bool m_bEnable
Definition: YiEffect.h:178
void * pReserved3
Definition: YiEffect.h:64
std::vector< std::shared_ptr< CYIOffscreenRenderTarget > > m_pTargets
Definition: YiEffect.h:174
EFFECT_CONFIG m_config
Definition: YiEffect.h:171
void * pReserved1
Definition: YiEffect.h:62
void * pReserved4
Definition: YiEffect.h:65
void * pReserved6
Definition: YiEffect.h:67
bool m_bNeedsUpdate
Definition: YiEffect.h:177
float * pEffectValues
Definition: YiEffect.h:57
The CYIUniformBufferId class is an identification class for Uniform buffers that also reveals the nam...
Definition: YiUniformBufferId.h:30
CYISceneNode * m_pOwner
Definition: YiEffect.h:170
CYIVariant Variable
Definition: YiEffect.h:37
void * pReserved2
Definition: YiEffect.h:63
uint32_t nCompWidth
Definition: YiEffect.h:54
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
CYIVariant Variable
Definition: YiEffect.h:32
uint32_t nHeight
Definition: YiEffect.h:53
std::shared_ptr< CYIRenderTarget > m_pOrigTarget
Definition: YiEffect.h:180
Definition: YiEffect.h:26
std::shared_ptr< CYIMesh > m_pOrigMesh
Definition: YiEffect.h:181
uint32_t nCompHeight
Definition: YiEffect.h:55
uint32_t nTrackID
Definition: YiEffect.h:39
std::shared_ptr< CYIMesh > m_pMesh
Definition: YiEffect.h:172
uint32_t nCount
Definition: YiEffect.h:31
Definition: YiEffect.h:42
uint32_t nEffectValueCount
Definition: YiEffect.h:58
YI_UNIFORM_TYPE
Definition: YiUniformBufferObject.h:19
Definition: YiEffect.h:35
std::shared_ptr< CYIMaterial > m_pOrigMaterial
Definition: YiEffect.h:179
std::vector< EffectUniformVariable > UniformVariables
Definition: YiEffect.h:175
std::vector< EffectUniform > Uniforms
Definition: YiEffect.h:59
uint32_t nPassesNeeded
Definition: YiEffect.h:50
CYIString AELinkName
Definition: YiEffect.h:29
void * pReserved5
Definition: YiEffect.h:66
std::vector< std::shared_ptr< CYIMaterial > > m_pMaterials
Definition: YiEffect.h:173