OROCHI
 
Loading...
Searching...
No Matches
GxUnit2DBase.h
Go to the documentation of this file.
1//===========================================================================
10//===========================================================================
11#pragma once
12
13GX_CORE_NAMESPACE_BEGIN()
14
15// 外部クラスの前方宣言
16#if GX_DEVELOP
17class GxHandle;
18#endif // GX_DEVELOP
19
20//===========================================================================
22//===========================================================================
24{
25 //-----------------------------------------------------------
27 //-----------------------------------------------------------
29public:
30 GX_RTTI_CLASS_NAME(GxUnit2DBase, GxUnitBase, "2D基礎")
31 // ClassBaseReference継承クラス用禁止宣言
33
34
35 enum class LAYOUT
36 {
37 LEFT_TOP = 0,
46 MAX,
47 };
49 static const GxVector2 LAYOUTS[static_cast<u32>(LAYOUT::MAX)];
50#if GX_DEVELOP
52 GX_ENUM_TABLE_MAX(LAYOUT)
53#endif //GX_DEVELOP
54
56 enum class BLEND_TYPE
57 {
58 NONE = 0,
59 ADD,
60 COLOR_ADD,
61 SUB,
62 COLOR_SUB,
65 OPAQUE_,
66 MAX,
67 };
68#if GX_DEVELOP
70 GX_ENUM_TABLE_MAX(BLEND_TYPE)
71#endif //GX_DEVELOP
72
74 static const GxSize DEFAULT_SIZE;
75
77 //-----------------------------------------------------------
79 //-----------------------------------------------------------
81public:
83 GxUnit2DBase(void);
84
86 b32 setup(void) override;
88 void cleanup(void) override;
89
91 //-----------------------------------------------------------
93 //-----------------------------------------------------------
95protected:
97 void preAsyncUpdate(void) override;
99 void forceAsyncUpdate(void) override;
101 void render(void) override;
102
103#if GX_DEVELOP
105 virtual void developRender(void);
106#endif // GX_DEVELOP
107
109 virtual b32 makeMaterial(GxPrimitiveMaterial& material, f32& zWritePosition) const;
111 virtual void setMaterial(GxPrimitiveMaterial& material) const;
113 virtual void renderPrimitive(const GxRectF& rect, f32 positionZ, f32 z, const GxPrimitiveMaterial& material, const GxVector2& rotateCenter);
114
115public:
117 void updateWorldMatrix(void);
118
120 b32 isIncluding( const GxPoint2& mousePosition ) const;
121
122private:
124 void updatePriority(f32& childPriority);
126 void searchUnit( GxArrayClassBase& searchList, GxUnitBase* pRootParent );
128 void searchUnitSub( GxArrayClassBase& searchList, GxUnitBase* pUnit );
130 b32 isFlipX(void) const;
132 b32 isFlipY(void) const;
134 void getWorldMatrix(GxMatrixAffine& matrix);
136 void updateRect(void);
137
138#if GX_DEVELOP
139private:
141 void controlHandle(void);
143 void initializeHandlePosition(void);
145 void initializeHandleQuaternion(void);
147 void initializeHandleScale(void);
148
149public:
151 static GxGuiBase* createGui(GxProperty& property, GxTypedObject* pOwner, const GxRtti& rtti, u32 index);
152#endif // GX_DEVELOP
153
155 //-----------------------------------------------------------
157 //-----------------------------------------------------------
159public:
161 GX_FORCE_INLINE const GxSize& getSize(void) const { return _size; }
163 GX_FORCE_INLINE void setSize(const GxSize& size) { _size = size; }
165 GX_FORCE_INLINE const GxRectF& getRect(void) const { return _rect; }
167 GX_FORCE_INLINE const GxMatrixAffine& getWorldMatrix(void) const { return _worldMatrix; }
169 GX_FORCE_INLINE const GxVector2& getPivot(void) const { return _pivot; }
171 GX_FORCE_INLINE void setPivot(const GxVector2& pivot) { _pivot = pivot; }
173 GX_FORCE_INLINE void setPivot(LAYOUT layout) { _pivot = LAYOUTS[static_cast<u32>(layout)]; }
175 GX_FORCE_INLINE const GxVector2& getAnchor(void) const { return _anchor; }
177 GX_FORCE_INLINE void setAnchor(const GxVector2& anchor) { _anchor = anchor; }
179 GX_FORCE_INLINE void setAnchor(LAYOUT layout) { _anchor = LAYOUTS[static_cast<u32>(layout)]; }
181 GX_FORCE_INLINE const GxVector2 getPosition(void) const { return GxVector2(_worldMatrix.getPosition()._x, _worldMatrix.getPosition()._y); }
183 GX_FORCE_INLINE const GxVector2& getLocalPosition(void) const { return _position; }
185 GX_FORCE_INLINE void setLocalPosition(const GxVector2& position) { _position = position; }
187 GX_FORCE_INLINE f32 getRotate(void) const { return _worldMatrix.getRotateXYZ()._z; }
189 constexpr const f32 getLocalRotate(void) const { return _rotate; }
191 constexpr void setLocalRotate(f32 rotate) { _rotate = rotate; }
193 GX_FORCE_INLINE const GxVector2 getScale(void) const { const auto& scale = _worldMatrix.getScale(); return GxVector2(scale._x, scale._y); }
195 GX_FORCE_INLINE const GxVector2& getLocalScale(void) const { return _scale; }
197 GX_FORCE_INLINE void setLocalScale(const GxVector2& scale) { _scale = scale; }
199 GX_FORCE_INLINE const GxColorHDR& getColor(void) const { return _color; }
201 GX_FORCE_INLINE void setColor(GxColorHDR color) { _color = color; }
203 constexpr void setColorA(f32 alpha) { _color._alpha = alpha; }
205 constexpr BLEND_TYPE getBlendType(void) const { return _blendType; }
207 constexpr void setBlendType(BLEND_TYPE type) { _blendType = type; }
209 GX_FORCE_INLINE const b32 isUseMask(void) const { return _useMask; }
211 GX_FORCE_INLINE void setUseMask(b32 use) { _useMask = use; }
213 constexpr const f32 getPriority(void) const { return _priority; }
215 constexpr const f32 getOffsetChildPriority(void) const { return _offsetChildPriority; }
217 constexpr void setOffsetChildPriority(f32 priority) { _offsetChildPriority = priority; }
219 constexpr void setProjectionMatrixId(u32 projectionId) { _projectionMatrixId = projectionId; }
221 constexpr u32 getProjectionMatrixId(void) const { return _projectionMatrixId; }
222
223#if GX_DEVELOP
225 constexpr GxHandle* getHandle( void ) const { return _pHandle; }
227 GX_FORCE_INLINE GxVector3* getHandlePosition( void ) { return &_handlePosition; }
229 GX_FORCE_INLINE GxQuaternion* getHandleQuaternion( void ) { return &_handleQuaternion; }
231 GX_FORCE_INLINE GxVector3* getHandleScale( void ) { return &_handleScale; }
232#endif // GX_DEVELOP
233
235 //-----------------------------------------------------------
237 //-----------------------------------------------------------
239protected:
256
257#if GX_DEVELOP
258 GxHandle* _pHandle;
259 GxVector3 _handlePosition;
260 GxQuaternion _handleQuaternion;
261 GxVector3 _handleScale;
262#endif // GX_DEVELOP
263
265};
266
267GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
void GxTypedObject
その他
Definition GxDefine.h:213
配列クラス
Definition GxArrayClassBase.h:18
プロパティクラス
Definition GxProperty.h:48
実行時型情報クラス
Definition GxRtti.h:154
2D基礎ユニットクラス
Definition GxUnit2DBase.h:24
void cleanup(void) override
delete直前に呼び出される関数
Definition GxUnit2DBase.cpp:132
b32 isIncluding(const GxPoint2 &mousePosition) const
マウス座標を内包しているか
Definition GxUnit2DBase.cpp:341
GX_FORCE_INLINE const GxRectF & getRect(void) const
描画矩形を取得
Definition GxUnit2DBase.h:165
GX_FORCE_INLINE void setPivot(LAYOUT layout)
矩形の中心位置を設定
Definition GxUnit2DBase.h:173
constexpr const f32 getLocalRotate(void) const
ローカル回転を取得
Definition GxUnit2DBase.h:189
f32 _rotate
回転
Definition GxUnit2DBase.h:248
virtual void renderPrimitive(const GxRectF &rect, f32 positionZ, f32 z, const GxPrimitiveMaterial &material, const GxVector2 &rotateCenter)
プリミティブ描画
Definition GxUnit2DBase.cpp:317
u32 _projectionMatrixId
射影行列ID
Definition GxUnit2DBase.h:252
GX_FORCE_INLINE const GxSize & getSize(void) const
描画サイズを取得
Definition GxUnit2DBase.h:161
GxMatrixAffine _worldMatrix
ワールド行列
Definition GxUnit2DBase.h:240
constexpr void setOffsetChildPriority(f32 priority)
子供の描画プライオリティ補正値を設定
Definition GxUnit2DBase.h:217
virtual void setMaterial(GxPrimitiveMaterial &material) const
マテリアル設定
Definition GxUnit2DBase.cpp:304
GX_FORCE_INLINE void setLocalScale(const GxVector2 &scale)
ローカルスケールを設定
Definition GxUnit2DBase.h:197
GxRectF _rect
描画矩形
Definition GxUnit2DBase.h:241
GxVector2 _scale
スケール
Definition GxUnit2DBase.h:247
GX_FORCE_INLINE const GxVector2 & getPivot(void) const
矩形の中心位置を取得
Definition GxUnit2DBase.h:169
GxSize _size
描画サイズ
Definition GxUnit2DBase.h:243
GX_FORCE_INLINE void setAnchor(LAYOUT layout)
親の基準位置を設定
Definition GxUnit2DBase.h:179
GxVector2 _pivot
矩形の中心位置
Definition GxUnit2DBase.h:244
GX_FORCE_INLINE const GxVector2 & getLocalPosition(void) const
ローカル座標を取得
Definition GxUnit2DBase.h:183
constexpr void setLocalRotate(f32 rotate)
ローカル回転を設定
Definition GxUnit2DBase.h:191
GX_FORCE_INLINE const GxVector2 & getAnchor(void) const
親の基準位置を取得
Definition GxUnit2DBase.h:175
f32 _offsetChildPriority
子供の描画プライオリティ補正値
Definition GxUnit2DBase.h:250
virtual b32 makeMaterial(GxPrimitiveMaterial &material, f32 &zWritePosition) const
マテリアル作成
Definition GxUnit2DBase.cpp:229
constexpr u32 getProjectionMatrixId(void) const
射影行列インデックスを取得
Definition GxUnit2DBase.h:221
GX_FORCE_INLINE const GxVector2 getPosition(void) const
座標を取得
Definition GxUnit2DBase.h:181
GX_FORCE_INLINE const GxMatrixAffine & getWorldMatrix(void) const
ワールド行列を取得
Definition GxUnit2DBase.h:167
LAYOUT
配置定義
Definition GxUnit2DBase.h:36
constexpr const f32 getPriority(void) const
描画プライオリティを取得
Definition GxUnit2DBase.h:213
void preAsyncUpdate(void) override
並列更新(asyncUpdateの前に実行される)
Definition GxUnit2DBase.cpp:147
GxVector2 _position
座標
Definition GxUnit2DBase.h:246
static const GxVector2 LAYOUTS[static_cast< u32 >(LAYOUT::MAX)]
配置座標テーブル
Definition GxUnit2DBase.h:43
constexpr void setBlendType(BLEND_TYPE type)
ブレンドタイプを設定
Definition GxUnit2DBase.h:207
GxColorHDR _color
Definition GxUnit2DBase.h:242
GX_FORCE_INLINE const GxVector2 getScale(void) const
スケールを取得
Definition GxUnit2DBase.h:193
constexpr void setProjectionMatrixId(u32 projectionId)
射影行列インデックスを設定
Definition GxUnit2DBase.h:219
GX_FORCE_INLINE const GxColorHDR & getColor(void) const
カラーを取得
Definition GxUnit2DBase.h:199
GX_FORCE_INLINE void setColor(GxColorHDR color)
カラーを設定
Definition GxUnit2DBase.h:201
f32 _priority
描画プライオリティ(0~1)
Definition GxUnit2DBase.h:249
GX_FORCE_INLINE void setSize(const GxSize &size)
描画サイズを設定
Definition GxUnit2DBase.h:163
b32 _useMask
マスク使用判定
Definition GxUnit2DBase.h:254
void forceAsyncUpdate(void) override
強制並列更新(pause中も実行)
Definition GxUnit2DBase.cpp:156
GX_FORCE_INLINE void setPivot(const GxVector2 &pivot)
矩形の中心位置を設定
Definition GxUnit2DBase.h:171
u8 _rootPriority
ルートプライオリティ(0~255)
Definition GxUnit2DBase.h:253
GxUnit2DBase(void)
コンストラクタ
Definition GxUnit2DBase.cpp:78
BLEND_TYPE
ブレンドタイプ
Definition GxUnit2DBase.h:57
@ COLOR_SCREEN
色スクリーン
@ NONE
アルファブレンド
constexpr BLEND_TYPE getBlendType(void) const
ブレンドタイプを取得
Definition GxUnit2DBase.h:205
static const GxSize DEFAULT_SIZE
デフォルトサイズ
Definition GxUnit2DBase.h:74
GX_FORCE_INLINE void setUseMask(b32 use)
マスク使用判定を設定
Definition GxUnit2DBase.h:211
GxVector2 _anchor
親の基準位置
Definition GxUnit2DBase.h:245
constexpr const f32 getOffsetChildPriority(void) const
子供の描画プライオリティ補正値を取得
Definition GxUnit2DBase.h:215
GX_FORCE_INLINE f32 getRotate(void) const
回転を取得
Definition GxUnit2DBase.h:187
GX_FORCE_INLINE const b32 isUseMask(void) const
マスク使用判定を取得
Definition GxUnit2DBase.h:209
GX_FORCE_INLINE void setAnchor(const GxVector2 &anchor)
親の基準位置を設定
Definition GxUnit2DBase.h:177
b32 setup(void) override
初期化
Definition GxUnit2DBase.cpp:104
void updateWorldMatrix(void)
ワールドマトリクスを更新
Definition GxUnit2DBase.cpp:325
b32 _updatedWorldMatrix
ワールドマトリクス更新済みフラグ
Definition GxUnit2DBase.h:255
void render(void) override
描画
Definition GxUnit2DBase.cpp:172
GX_FORCE_INLINE void setLocalPosition(const GxVector2 &position)
ローカル座標を設定
Definition GxUnit2DBase.h:185
constexpr void setColorA(f32 alpha)
カラーαを設定
Definition GxUnit2DBase.h:203
GX_FORCE_INLINE const GxVector2 & getLocalScale(void) const
ローカルスケールを取得
Definition GxUnit2DBase.h:195
BLEND_TYPE _blendType
ブレンドタイプ
Definition GxUnit2DBase.h:251
ユニット基礎クラス
Definition GxUnitBase.h:45
色(HDR)
Definition GxColor.h:241
f32 _alpha
不透明度(0.0f~1.0f)
Definition GxColor.h:364
アフィン変換行列(行優先)
Definition GxMatrix.h:330
GX_FORCE_INLINE GxVector3 getScale(void) const
スケールを取得
Definition GxMatrix.inl:2165
GX_FORCE_INLINE GxVector3 getRotateXYZ(void) const
XYZ軸回転角を取得
Definition GxMatrix.inl:1895
GX_FORCE_INLINE const GxVector3 & getPosition(void) const
平行移動量を取得
Definition GxMatrix.h:454
座標
Definition GxStruct.h:867
プリミティブマテリアル
Definition GxPrimitive.h:103
クォータニオン
Definition GxQuaternion.h:19
実数矩形
Definition GxStruct.h:1100
サイズ
Definition GxStruct.h:730
2次元ベクトル
Definition GxVector.h:34
3次元ベクトル
Definition GxVector.h:245
f32 _z
Z値
Definition GxVector.h:572
f32 _y
Y値
Definition GxVector.h:571
f32 _x
X値
Definition GxVector.h:570
32bitブーリアン
Definition GxDefine.h:173