OROCHI
 
Loading...
Searching...
No Matches
GxUnitLightBase.h
Go to the documentation of this file.
1//===========================================================================
10//===========================================================================
11#pragma once
12
13GX_CORE_NAMESPACE_BEGIN()
14
15//===========================================================================
17//===========================================================================
19{
20 //-----------------------------------------------------------
22 //-----------------------------------------------------------
24public:
25 GX_RTTI_ABSTRACT_CLASS_NAME_ICON(GxUnitLightBase, GxUnitLocate, "ライト基礎", GxRtti::ICON_TYPE::UNIT_LIGHT)
26 // new, delete定義
27 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::UNIT)
28 // ClassBaseReference継承クラス用禁止宣言
30
31
32 enum class TYPE
33 {
34 UNKNOWN,
35 DIRECTIONAL,
36 POINT,
37 SPOT,
38 MAX,
39 };
40#if GX_DEVELOP
42 GX_ENUM_TABLE_MAX(TYPE)
43#endif //GX_DEVELOP
44
45#if GX_DEVELOP
47 enum class DEVELOP_FLAG
48 {
49 SHOW_OBJECT,
50 SHOW_RANGE,
51 MAX,
52 };
54 GX_FLAG_TABLE_MAX(DEVELOP_FLAG)
55#endif // GX_DEVELOP
56
58 //-----------------------------------------------------------
60 //-----------------------------------------------------------
62protected:
64 GxUnitLightBase(void);
65
67 //-----------------------------------------------------------
69 //-----------------------------------------------------------
71public:
72#if GX_DEVELOP
74 void iconRender(void) override;
75
77 static GxGuiBase* createGui(GxProperty& property, GxTypedObject* pOwner, const GxRtti& rtti, u32 index);
78#endif //GX_DEVELOP
79
81 //-----------------------------------------------------------
83 //-----------------------------------------------------------
85public:
87 GX_FORCE_INLINE b32 isLightEnable(void) const { return _enable; }
89 GX_FORCE_INLINE void setLightEnable(b32 enable) { _enable = enable; }
90
92 constexpr TYPE getType(void) const { return _type; }
93
95 constexpr u32 getGroup(void) const { return _group; }
97 constexpr void setGroup(u32 group) { _group = group; }
98
100 constexpr f32 getRange(void) const { return _range; }
101
103 GX_FORCE_INLINE virtual const GxColorHDR& getColor(void) const { return _color; }
105 GX_FORCE_INLINE void setColor(const GxColorHDR& color) { _color = color; }
106
108 constexpr u32 getPriority(void) const { return _priority; }
110 constexpr void setPriority(u32 priority) { _priority = priority; }
111
112#if GX_DEVELOP
114 GX_FORCE_INLINE b32 isDevelopFlag(DEVELOP_FLAG flag) const { return _developFlag.isFlag(flag); }
116 GX_FORCE_INLINE void setDevelopFlag(DEVELOP_FLAG flag, b32 enable){ _developFlag.setFlag(flag,enable); }
117#endif // GX_DEVELOP
118
119protected:
121 constexpr void setType(TYPE type) { _type = type; }
123 constexpr void setRange(f32 range) { _range = range; }
124
125#if GX_DEVELOP
127 GX_FORCE_INLINE void addUnitOwnProperty(GxPropertyTable& /*table*/) override {}
128#endif // GX_DEVELOP
129
131 //-----------------------------------------------------------
133 //-----------------------------------------------------------
135private:
136 b32 _enable;
137 TYPE _type;
138 u32 _group;
139 f32 _range;
140 GxColorHDR _color;
141 u32 _priority;
142
143#if GX_DEVELOP
144 GxFlag32Index<DEVELOP_FLAG> _developFlag;
145#endif // GX_DEVELOP
146
148};
149
150//===========================================================================
152//===========================================================================
154{
155 //-----------------------------------------------------------
157 //-----------------------------------------------------------
159public:
160 GX_RTTI_CLASS_NAME(GxUnitLightDirectionalBase, GxUnitLightBase, "ディレクショナルライト基礎")
161 // ClassBaseReference継承クラス用禁止宣言
163
164
165 //-----------------------------------------------------------
167 //-----------------------------------------------------------
169protected:
172
174 //-----------------------------------------------------------
176 //-----------------------------------------------------------
178public:
180 void updateWorldMatrix(void) override;
181
182#if GX_DEVELOP
183protected:
185 void developRender(void) override;
186#endif //GX_DEVELOP
187
189 //-----------------------------------------------------------
191 //-----------------------------------------------------------
193public:
195 GX_FORCE_INLINE const GxVector3& getLightVector(void) const { return _lightVector; }
197 void setLightVector(const GxVector3& lightVector);
198
200 //-----------------------------------------------------------
202 //-----------------------------------------------------------
204private:
205 GxVector3 _lightVector;
206
208};
209
210//===========================================================================
212//===========================================================================
214{
215 //-----------------------------------------------------------
217 //-----------------------------------------------------------
219public:
220 GX_RTTI_CLASS_NAME(GxUnitLightPointBase, GxUnitLightBase, "ポイントライト基礎")
221 // ClassBaseReference継承クラス用禁止宣言
223
224
225 //-----------------------------------------------------------
227 //-----------------------------------------------------------
229protected:
232
234 //-----------------------------------------------------------
236 //-----------------------------------------------------------
238
239#if GX_DEVELOP
240protected:
242 void developRender(void) override;
243#endif //GX_DEVELOP
244
246};
247
248//===========================================================================
250//===========================================================================
252{
253 //-----------------------------------------------------------
255 //-----------------------------------------------------------
257public:
258 GX_RTTI_CLASS_NAME(GxUnitLightSpotBase, GxUnitLightBase, "スポットライト基礎")
259 // ClassBaseReference継承クラス用禁止宣言
261
262
263 //-----------------------------------------------------------
265 //-----------------------------------------------------------
267protected:
270
272 //-----------------------------------------------------------
274 //-----------------------------------------------------------
276public:
278 void updateWorldMatrix(void) override;
279
280#if GX_DEVELOP
281protected:
283 void developRender(void) override;
284#endif //GX_DEVELOP
285
287 //-----------------------------------------------------------
289 //-----------------------------------------------------------
291public:
293 GX_FORCE_INLINE void getPropertyOuterAngleDegree(void* const pValue) { *static_cast<f32*>(pValue) = RADIAN_TO_DEGREE(_outerAngle); }
295 GX_FORCE_INLINE void setPropertyOuterAngleDegree(const void* const pValue) { _outerAngle = DEGREE_TO_RADIAN(*static_cast<f32*>(const_cast<void*>(pValue))); }
297 GX_FORCE_INLINE void getPropertyInnerAngleDegree(void* const pValue) { *static_cast<f32*>(pValue) = RADIAN_TO_DEGREE(_innerAngle); }
299 GX_FORCE_INLINE void setPropertyInnerAngleDegree(const void* const pValue) { _innerAngle = DEGREE_TO_RADIAN(*static_cast<f32*>(const_cast<void*>(pValue))); }
300
302 constexpr f32 getOuterAngle(void) const { return _outerAngle; }
304 constexpr void setOuterAngle(f32 radian) { _outerAngle = radian; }
306 constexpr f32 getInnerAngle(void) const { return _innerAngle; }
308 constexpr void setInnerAngle(f32 radian) { _innerAngle = radian; }
310 GX_FORCE_INLINE const GxVector3& getLightVector(void) const { return _lightVector; }
312 void setLightVector(const GxVector3& lightVector);
313
315 //-----------------------------------------------------------
317 //-----------------------------------------------------------
319private:
320 GxVector3 _lightVector;
321 f32 _outerAngle;
322 f32 _innerAngle;
323
325};
326
327GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
@ MAX
定義数
void GxTypedObject
その他
Definition GxDefine.h:213
@ POINT
点で描画する
@ UNKNOWN
未定義
プロパティクラス
Definition GxProperty.h:48
プロパティテーブルクラス
Definition GxProperty.h:1641
実行時型情報クラス
Definition GxRtti.h:154
@ UNIT_LIGHT
ライトユニット
ライト基礎クラス
Definition GxUnitLightBase.h:19
constexpr u32 getGroup(void) const
グループを取得
Definition GxUnitLightBase.h:95
GX_FORCE_INLINE b32 isLightEnable(void) const
ライト有効/無効を取得
Definition GxUnitLightBase.h:87
GX_FORCE_INLINE void setLightEnable(b32 enable)
ライト有効/無効を設定
Definition GxUnitLightBase.h:89
constexpr void setType(TYPE type)
タイプを設定
Definition GxUnitLightBase.h:121
TYPE
ライトタイプ
Definition GxUnitLightBase.h:33
GX_FORCE_INLINE void setColor(const GxColorHDR &color)
カラーを設定
Definition GxUnitLightBase.h:105
constexpr void setPriority(u32 priority)
優先度を設定
Definition GxUnitLightBase.h:110
virtual GX_FORCE_INLINE const GxColorHDR & getColor(void) const
カラーを取得
Definition GxUnitLightBase.h:103
constexpr TYPE getType(void) const
タイプを取得
Definition GxUnitLightBase.h:92
constexpr void setGroup(u32 group)
グループを設定
Definition GxUnitLightBase.h:97
constexpr u32 getPriority(void) const
優先度を取得
Definition GxUnitLightBase.h:108
constexpr void setRange(f32 range)
効果範囲を設定
Definition GxUnitLightBase.h:123
constexpr f32 getRange(void) const
効果範囲を取得
Definition GxUnitLightBase.h:100
ディレクショナルライト基礎クラス
Definition GxUnitLightBase.h:154
GX_FORCE_INLINE const GxVector3 & getLightVector(void) const
ライトベクトルを取得
Definition GxUnitLightBase.h:195
void setLightVector(const GxVector3 &lightVector)
ライトベクトルを設定
Definition GxUnitLightBase.cpp:191
void updateWorldMatrix(void) override
ワールドマトリクスの更新
Definition GxUnitLightBase.cpp:156
GxUnitLightDirectionalBase(void)
デフォルトコンストラクタ
Definition GxUnitLightBase.cpp:147
ポイントライト基礎クラス
Definition GxUnitLightBase.h:214
GxUnitLightPointBase(void)
デフォルトコンストラクタ
Definition GxUnitLightBase.cpp:213
スポットライト基礎クラス
Definition GxUnitLightBase.h:252
constexpr f32 getOuterAngle(void) const
外側の円錐の角度を取得
Definition GxUnitLightBase.h:302
GxUnitLightSpotBase(void)
デフォルトコンストラクタ
Definition GxUnitLightBase.cpp:290
constexpr void setInnerAngle(f32 radian)
内側の円錐の角度を設定
Definition GxUnitLightBase.h:308
GX_FORCE_INLINE void setPropertyOuterAngleDegree(const void *const pValue)
外側の角度設定
Definition GxUnitLightBase.h:295
void updateWorldMatrix(void) override
ワールドマトリクスの更新
Definition GxUnitLightBase.cpp:300
GX_FORCE_INLINE const GxVector3 & getLightVector(void) const
ライトベクトルを取得
Definition GxUnitLightBase.h:310
constexpr void setOuterAngle(f32 radian)
外側の円錐の角度を設定
Definition GxUnitLightBase.h:304
GX_FORCE_INLINE void getPropertyOuterAngleDegree(void *const pValue)
外側の角度取得
Definition GxUnitLightBase.h:293
GX_FORCE_INLINE void getPropertyInnerAngleDegree(void *const pValue)
内側の角度取得
Definition GxUnitLightBase.h:297
void setLightVector(const GxVector3 &lightVector)
ライトベクトルを設定
Definition GxUnitLightBase.cpp:392
constexpr f32 getInnerAngle(void) const
内側の円錐の角度を取得
Definition GxUnitLightBase.h:306
GX_FORCE_INLINE void setPropertyInnerAngleDegree(const void *const pValue)
内側の角度設定
Definition GxUnitLightBase.h:299
座標ユニット基礎クラス
Definition GxUnitLocate.h:23
色(HDR)
Definition GxColor.h:241
インデックス指定型フラグ
Definition GxStruct.h:1294
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173