16GX_CORE_NAMESPACE_BEGIN()
34 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
37 enum class HANDLE_MODE
47 GX_ENUM_TABLE_MAX(HANDLE_MODE)
53 HANDLE_TYPE_STATE = 0,
54 HANDLE_TYPE_TRANSLATE = 0x01 << 0,
55 HANDLE_TYPE_ROTATE = 0x01 << 1,
56 HANDLE_TYPE_SCALE = 0x01 << 2,
58 HANDLE_TYPE_ALL = HANDLE_TYPE_TRANSLATE | HANDLE_TYPE_ROTATE | HANDLE_TYPE_SCALE,
62 enum class HANDLE_RESULT
70 static const f32 AXIS_LENGTH;
85 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
98 GX_ENUM_TABLE_MAX(STATE)
117 GX_ENUM_TABLE_MAX(AXIS_TYPE)
120 static const GxColor COLOR_AXIS_X_HIGHLIGHT;
121 static const GxColor COLOR_AXIS_Y_HIGHLIGHT;
122 static const GxColor COLOR_AXIS_Z_HIGHLIGHT;
123 static const GxColor COLOR_AXIS_ALL;
124 static const GxColor COLOR_AXIS_ALL_HIGHLIGHT;
125 static const GxColor COLOR_AXIS_SELECTED;
126 static const GxColor COLOR_AXIS_EYE;
127 static const GxColor COLOR_AXIS_EYE_HIGHLIGHT;
128 static const GxColor COLOR_AXIS_OLD;
139 GxUiBase(GxHandle* pHandle);
142 ~GxUiBase(
void)
override;
151 virtual GxHandle::HANDLE_RESULT update(
void);
154 virtual void render(
void);
157 constexpr void resetState(
void) { _state = STATE::WAITING; _manipulatingAxis = AXIS_TYPE::NONE; }
186 constexpr GxVector3* getControlOffset(
void)
const {
return _pOffset; }
188 constexpr GxQuaternion* getControlQuaternion(
void)
const {
return _pQuaternion; }
190 constexpr GxVector3* getControlScale(
void)
const {
return _pScale; }
192 GX_FORCE_INLINE
b32 isOnMouse(
void)
const {
return _axisUnderMouse != AXIS_TYPE::NONE; }
195 constexpr void setAxisDrawLength(
const f32 length) { _axisDrawLength = length; }
203 constexpr void setState(STATE state) { _state = state; }
206 constexpr STATE getState(
void)
const {
return _state; }
209 constexpr void setManipulatingAxis(AXIS_TYPE axis) { _manipulatingAxis = axis; }
212 constexpr AXIS_TYPE getManipulatingAxis(
void) {
return _manipulatingAxis; }
215 GX_FORCE_INLINE
b32 is3D(
void)
const {
return !_pHandle->_is2D; }
231 AXIS_TYPE _axisUnderMouse;
236 AXIS_TYPE _manipulatingAxis;
247 class GxUiTranslate :
public GxUiBase
255 GX_RTTI_ABSTRACT_CLASS(GxUiTranslate, GxUiBase)
264 static const f32 RAY_CHECK_LENGTH;
273 GxUiTranslate(GxHandle* pHandle);
276 ~GxUiTranslate(
void)
override;
285 GxHandle::HANDLE_RESULT update(
void)
override;
288 void render(
void)
override;
294 GX_FORCE_INLINE
GxVector3 getOffset(
void)
const {
return _addVector; }
297 GX_FORCE_INLINE
void setLocal(
b32 isLocal) { _localFlag = isLocal; }
301 AXIS_TYPE getAxisUnderMouse(
void);
304 void eventTraceBackGroundOn(
void);
306 void eventTraceBackGroundOff(
void);
308 void eventPositionInitializeZero(
void);
310 void eventHitBackGroundPlusX(
void);
312 void eventHitBackGroundMinusX(
void);
314 void eventHitBackGroundPlusY(
void);
316 void eventHitBackGroundMinusY(
void);
318 void eventHitBackGroundPlusZ(
void);
320 void eventHitBackGroundMinusZ(
void);
333 b32 _isHitBackGround;
348 class GxUiRotate :
public GxUiBase
356 GX_RTTI_ABSTRACT_CLASS(GxUiRotate, GxUiBase)
361 static const f32 RADIUS_RATIO_AXIS_EYE;
363 static const f32 RADIUS_RATIO_AXIS_ALL;
365 static constexpr u32 CIRCLE_DIVIDE = 20;
374 GxUiRotate(GxHandle* pHandle);
377 ~GxUiRotate(
void)
override;
389 GxHandle::HANDLE_RESULT update(
void)
override;
392 void render(
void)
override;
395 GX_FORCE_INLINE
GxQuaternion getOffset(
void)
const {
return _addQuaternion; }
400 AXIS_TYPE getAxisUnderMouse(
void);
406 void updateAxis(
void);
412 void eventRotateInitializeIdentity(
void);
418 GxVector3 getDirectionCenterToMouse(
const AXIS_TYPE type);
432 void setSelectAxis(
b32 isSelectAxis, AXIS_TYPE type);
444 GxVector3 _axis[
static_cast<u32
>(AXIS_TYPE::MAX)];
445 f32 _incrementRadian;
454 AXIS_TYPE _selectAxis;
462 class GxUiScale :
public GxUiBase
470 GX_RTTI_ABSTRACT_CLASS(GxUiScale, GxUiBase)
475 static const f32 SCALE_MIN;
477 static const f32 SCALE_MAX;
486 GxUiScale(GxHandle* pHandle);
489 ~GxUiScale(
void)
override;
498 GxHandle::HANDLE_RESULT update(
void)
override;
501 void render(
void)
override;
504 GX_FORCE_INLINE
GxVector3 getOffset(
void)
const {
return _addVector; }
514 f32 getGuiAxisNormalized(
const GxPoint2& mousePosition, AXIS_TYPE axisType, f32 value);
517 AXIS_TYPE getAxisUnderMouse(
void);
548 void initialize(
const u32 handleTypeFlag );
551 ~GxHandle(
void)
override {}
560 HANDLE_RESULT update(
void );
567 void stretchSize(
void);
569 void shrinkSize(
void);
578 void setIsEnable(
b32 isEnable );
580 GX_FORCE_INLINE
void set2D(
void ) { _is2D =
true; }
588 void setMode( HANDLE_MODE mode );
590 void setLocalTranslate(
b32 isLocal);
593 void setSelRotateAxis(
b32 isSelAxis, GxUiBase::AXIS_TYPE type);
599 GX_FORCE_INLINE
b32 isEnable(
void )
const {
return _isEnable; }
601 constexpr HANDLE_MODE getMode(
void )
const {
return _mode; }
609 void createMenu(
const GxPoint2& position );
611 b32 isOnMouse(
void )
const;
614 static f32 getFloor( f32 value,
const f32 step );
619 void setAxisDrawLength(
const f32 length );
621 GX_FORCE_INLINE f32 getAxisDrawLength(
void )
const {
return _axisDrawLength; }
624 GxVector3 getOffsetTranslate(
void)
const;
640 HANDLE_MODE _baseMode;
641 GxUiBase* _pHandleUi[
static_cast<s32
>(HANDLE_MODE::MAX)];
642 GxUiBase _handleUiState;
643 GxUiTranslate _handleUiTranslate;
644 GxUiRotate _handleUiRotate;
645 GxUiScale _handleUiScale;
647 static f32 _axisDrawLength;
666 GX_OPERATOR_NEW_DELETE(GxAllocatorList::ALLOCATOR_TYPE::DEVELOP)
675 GxHandleConfig(
void);
686 GxHandleConfig&
operator = (
const GxHandleConfig& value);
688 GX_FORCE_INLINE
void set(GxHandleConfig& value) { *
this = value; }
690 void setDefault(
void);
699 f32 _translateShiftStep;
701 f32 _rotateShiftStep;
708GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
void GxTypedObject
その他
Definition GxDefine.h:213
オブジェクト基底クラス
Definition GxBase.h:88
constexpr GxClassBaseRoot & operator=(const GxClassBaseRoot &)
代入演算子
Definition GxBase.h:64
JSON解析用ノード
Definition GxJson.h:108
プロパティクラス
Definition GxProperty.h:48
プロパティテーブルクラス
Definition GxProperty.h:1641
実行時型情報クラス
Definition GxRtti.h:154
2D基礎ユニットクラス
Definition GxUnit2DBase.h:24
4×4行列(行優先)
Definition GxMatrix.h:607
アフィン変換行列(行優先)
Definition GxMatrix.h:330
座標
Definition GxStruct.h:867
プリミティブマテリアル
Definition GxPrimitive.h:103
クォータニオン
Definition GxQuaternion.h:19
2次元ベクトル
Definition GxVector.h:34
3次元ベクトル
Definition GxVector.h:245
32bitブーリアン
Definition GxDefine.h:173