46void EditTransform(
const Camera& camera, matrix_t& matrix)
48 static KarmaGuizmo::OPERATION mCurrentGizmoOperation(KarmaGuizmo::ROTATE);
49 static KarmaGuizmo::MODE mCurrentGizmoMode(KarmaGuizmo::WORLD);
50 if (KarmaGui::IsKeyPressed(90))
51 mCurrentGizmoOperation = KarmaGuizmo::TRANSLATE;
52 if (KarmaGui::IsKeyPressed(69))
53 mCurrentGizmoOperation = KarmaGuizmo::ROTATE;
54 if (KarmaGui::IsKeyPressed(82))
55 mCurrentGizmoOperation = KarmaGuizmo::SCALE;
56 if (KarmaGui::RadioButton(
"Translate", mCurrentGizmoOperation == KarmaGuizmo::TRANSLATE))
57 mCurrentGizmoOperation = KarmaGuizmo::TRANSLATE;
59 if (KarmaGui::RadioButton(
"Rotate", mCurrentGizmoOperation == KarmaGuizmo::ROTATE))
60 mCurrentGizmoOperation = KarmaGuizmo::ROTATE;
62 if (KarmaGui::RadioButton(
"Scale", mCurrentGizmoOperation == KarmaGuizmo::SCALE))
63 mCurrentGizmoOperation = KarmaGuizmo::SCALE;
64 float matrixTranslation[3], matrixRotation[3], matrixScale[3];
65 KarmaGuizmo::DecomposeMatrixToComponents(matrix.m16, matrixTranslation, matrixRotation, matrixScale);
66 KarmaGui::InputFloat3(
"Tr", matrixTranslation, 3);
67 KarmaGui::InputFloat3(
"Rt", matrixRotation, 3);
68 KarmaGui::InputFloat3(
"Sc", matrixScale, 3);
69 KarmaGuizmo::RecomposeMatrixFromComponents(matrixTranslation, matrixRotation, matrixScale, matrix.m16);
71 if (mCurrentGizmoOperation != KarmaGuizmo::SCALE)
73 if (KarmaGui::RadioButton(
"Local", mCurrentGizmoMode == KarmaGuizmo::LOCAL))
74 mCurrentGizmoMode = KarmaGuizmo::LOCAL;
76 if (KarmaGui::RadioButton(
"World", mCurrentGizmoMode == KarmaGuizmo::WORLD))
77 mCurrentGizmoMode = KarmaGuizmo::WORLD;
79 static bool useSnap(
false);
80 if (KarmaGui::IsKeyPressed(83))
82 KarmaGui::Checkbox(
"", &useSnap);
85 switch (mCurrentGizmoOperation)
87 case KarmaGuizmo::TRANSLATE:
88 snap = config.mSnapTranslation;
89 KarmaGui::InputFloat3(
"Snap", &snap.x);
91 case KarmaGuizmo::ROTATE:
92 snap = config.mSnapRotation;
93 KarmaGui::InputFloat(
"Angle Snap", &snap.x);
95 case KarmaGuizmo::SCALE:
96 snap = config.mSnapScale;
97 KarmaGui::InputFloat(
"Scale Snap", &snap.x);
101 KarmaGuizmo::SetRect(0, 0, io.DisplaySize.x, io.DisplaySize.y);
102 KarmaGuizmo::Manipulate(camera.mView.m16, camera.mProjection.m16, mCurrentGizmoOperation, mCurrentGizmoMode, matrix.m16, NULL, useSnap ? &snap.x : NULL);
110#define KARMAGUI_API KARMA_API
113#ifndef KARMAGUIZMO_NAMESPACE
114#define KARMAGUIZMO_NAMESPACE KarmaGuizmo
119namespace KARMAGUIZMO_NAMESPACE
123 KARMAGUI_API
void SetDrawlist(KGDrawList* drawlist =
nullptr);
126 KARMAGUI_API
void BeginFrame();
132 KARMAGUI_API
void SetKarmaGuiContext(KarmaGuiContext* ctx);
135 KARMAGUI_API
bool IsOver();
138 KARMAGUI_API
bool IsUsing();
141 KARMAGUI_API
bool IsUsingViewManipulate();
143 KARMAGUI_API
bool IsViewManipulateHovered();
146 KARMAGUI_API
bool IsUsingAny();
150 KARMAGUI_API
void Enable(
bool enable);
164 KARMAGUI_API
void DecomposeMatrixToComponents(
const float* matrix,
float* translation,
float* rotation,
float* scale);
165 KARMAGUI_API
void RecomposeMatrixFromComponents(
const float* translation,
const float* rotation,
const float* scale,
float* matrix);
167 KARMAGUI_API
void SetRect(
float x,
float y,
float width,
float height);
169 KARMAGUI_API
void SetOrthographic(
bool isOrthographic);
172 KARMAGUI_API
void DrawCubes(
const float* view,
const float* projection,
const float* matrices,
int matrixCount);
173 KARMAGUI_API
void DrawGrid(
const float* view,
const float* projection,
const float* matrix,
const float gridSize);
181 TRANSLATE_X = (1u << 0),
182 TRANSLATE_Y = (1u << 1),
183 TRANSLATE_Z = (1u << 2),
184 ROTATE_X = (1u << 3),
185 ROTATE_Y = (1u << 4),
186 ROTATE_Z = (1u << 5),
187 ROTATE_SCREEN = (1u << 6),
192 SCALE_XU = (1u << 11),
193 SCALE_YU = (1u << 12),
194 SCALE_ZU = (1u << 13),
196 TRANSLATE = TRANSLATE_X | TRANSLATE_Y | TRANSLATE_Z,
197 ROTATE = ROTATE_X | ROTATE_Y | ROTATE_Z | ROTATE_SCREEN,
198 SCALE = SCALE_X | SCALE_Y | SCALE_Z,
199 SCALEU = SCALE_XU | SCALE_YU | SCALE_ZU,
200 UNIVERSAL = TRANSLATE | ROTATE | SCALEU
203 inline OPERATION operator|(OPERATION lhs, OPERATION rhs)
205 return static_cast<OPERATION
>(
static_cast<int>(lhs) |
static_cast<int>(rhs));
214 KARMAGUI_API
bool Manipulate(
const float* view,
const float* projection, OPERATION operation, MODE mode,
float* matrix,
float* deltaMatrix = NULL,
const float* snap = NULL,
const float* localBounds = NULL,
const float* boundsSnap = NULL);
220 KARMAGUI_API
void ViewManipulate(
float* view,
float length, KGVec2 position, KGVec2 size, KGU32 backgroundColor);
223 KARMAGUI_API
void ViewManipulate(
float* view,
const float* projection, OPERATION operation, MODE mode,
float* matrix,
float length, KGVec2 position, KGVec2 size, KGU32 backgroundColor);
225 KARMAGUI_API
void SetAlternativeWindow(KGGuiWindow* window);
227 [[deprecated(
"Use PushID/PopID instead.")]]
228 KARMAGUI_API
void SetID(
int id);
241 KARMAGUI_API
void PushID(
const char* str_id);
242 KARMAGUI_API
void PushID(
const char* str_id_begin,
const char* str_id_end);
243 KARMAGUI_API
void PushID(
const void* ptr_id);
244 KARMAGUI_API
void PushID(
int int_id);
245 KARMAGUI_API
void PopID();
246 KARMAGUI_API KGGuiID GetID(
const char* str_id);
247 KARMAGUI_API KGGuiID GetID(
const char* str_id_begin,
const char* str_id_end);
248 KARMAGUI_API KGGuiID GetID(
const void* ptr_id);
251 KARMAGUI_API
bool IsOver(OPERATION op);
252 KARMAGUI_API
void SetGizmoSizeClipSpace(
float value);
257 KARMAGUI_API
void AllowAxisFlip(
bool value);
260 KARMAGUI_API
void SetAxisLimit(
float value);
262 KARMAGUI_API
void SetAxisMask(
bool x,
bool y,
bool z);
264 KARMAGUI_API
void SetPlaneLimit(
float value);
266 KARMAGUI_API
bool IsOver(
float* position,
float pixelRadius);
280 ROTATION_USING_BORDER,
290 KARMAGUI_API Style();
292 float TranslationLineThickness;
293 float TranslationLineArrowSize;
294 float RotationLineThickness;
295 float RotationOuterLineThickness;
296 float ScaleLineThickness;
297 float ScaleLineCircleSize;
298 float HatchedAxisLineThickness;
299 float CenterCircleSize;
301 KGVec4 Colors[COLOR::COUNT];
304 KARMAGUI_API
Style& GetStyle();
This file constains KarmaGui class. The chief class for our UI needs..
Definition KarmaGuizmo.h:289
Definition KarmaGuiInternal.h:2264
Definition KarmaGui.h:163
Definition KarmaGui.h:1952