mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-07-09 23:02:11 -04:00
Gizmo rot and scale collision working
This commit is contained in:
@@ -38,7 +38,7 @@ void Gizmo::Load() {
|
||||
BlueCollision.Pos = &Pos;
|
||||
BlueCollision.Model = (Gfx*)"__OTR__editor/gizmo/translate_handle_blue";
|
||||
|
||||
/* Rotate handle Collision */
|
||||
/* Rotate handle collision */
|
||||
RedRotateCollision.Pos = &Pos;
|
||||
RedRotateCollision.Model = (Gfx*)"__OTR__editor/gizmo/rot_handle_red";
|
||||
|
||||
@@ -48,7 +48,16 @@ void Gizmo::Load() {
|
||||
BlueRotateCollision.Pos = &Pos;
|
||||
BlueRotateCollision.Model = (Gfx*)"__OTR__editor/gizmo/rot_handle_blue";
|
||||
|
||||
// GenerateCollisionMesh(&RedCollision, (Gfx*)(handle_Cylinder_mesh), 1);
|
||||
/* Scale handle collision */
|
||||
RedScaleCollision.Pos = &Pos;
|
||||
RedScaleCollision.Model = (Gfx*)"__OTR__editor/gizmo/scale_handle_red";
|
||||
|
||||
GreenScaleCollision.Pos = &Pos;
|
||||
GreenScaleCollision.Model = (Gfx*)"__OTR__editor/gizmo/scale_handle_green";
|
||||
|
||||
BlueScaleCollision.Pos = &Pos;
|
||||
BlueScaleCollision.Model = (Gfx*)"__OTR__editor/gizmo/scale_handle_blue";
|
||||
|
||||
GenerateCollisionMesh(&RedCollision, (Gfx*)LOAD_ASSET_RAW(RedCollision.Model), 1.0f);
|
||||
GenerateCollisionMesh(&GreenCollision, (Gfx*)LOAD_ASSET_RAW(GreenCollision.Model), 1.0f);
|
||||
GenerateCollisionMesh(&BlueCollision, (Gfx*)LOAD_ASSET_RAW(BlueCollision.Model), 1.0f);
|
||||
@@ -56,6 +65,10 @@ void Gizmo::Load() {
|
||||
GenerateCollisionMesh(&RedRotateCollision, (Gfx*)LOAD_ASSET_RAW(RedRotateCollision.Model), 1.0f);
|
||||
GenerateCollisionMesh(&GreenRotateCollision, (Gfx*)LOAD_ASSET_RAW(GreenRotateCollision.Model), 1.0f);
|
||||
GenerateCollisionMesh(&BlueRotateCollision, (Gfx*)LOAD_ASSET_RAW(BlueRotateCollision.Model), 1.0f);
|
||||
|
||||
GenerateCollisionMesh(&RedScaleCollision, (Gfx*)LOAD_ASSET_RAW(RedScaleCollision.Model), 1.0f);
|
||||
GenerateCollisionMesh(&GreenScaleCollision, (Gfx*)LOAD_ASSET_RAW(GreenScaleCollision.Model), 1.0f);
|
||||
GenerateCollisionMesh(&BlueScaleCollision, (Gfx*)LOAD_ASSET_RAW(BlueScaleCollision.Model), 1.0f);
|
||||
}
|
||||
|
||||
void Gizmo::Tick() {
|
||||
|
||||
@@ -60,6 +60,10 @@ public:
|
||||
GameObject GreenRotateCollision;
|
||||
GameObject BlueRotateCollision;
|
||||
|
||||
GameObject RedScaleCollision;
|
||||
GameObject GreenScaleCollision;
|
||||
GameObject BlueScaleCollision;
|
||||
|
||||
MtxF Mtx_RedX;
|
||||
MtxF Mtx_GreenY;
|
||||
MtxF Mtx_BlueZ;
|
||||
|
||||
@@ -98,9 +98,24 @@ void ObjectPicker::DragHandle() {
|
||||
}
|
||||
};
|
||||
|
||||
tryHandle(Gizmo::GizmoHandle::Z_Axis, eGizmo.Mtx_RedX, eGizmo.RedCollision.Triangles);
|
||||
tryHandle(Gizmo::GizmoHandle::X_Axis, eGizmo.Mtx_GreenY, eGizmo.GreenCollision.Triangles);
|
||||
tryHandle(Gizmo::GizmoHandle::Y_Axis, eGizmo.Mtx_BlueZ, eGizmo.BlueCollision.Triangles);
|
||||
switch(static_cast<Gizmo::TranslationMode>(CVarGetInteger("eGizmoMode", 0))) {
|
||||
case Gizmo::TranslationMode::Move:
|
||||
tryHandle(Gizmo::GizmoHandle::Z_Axis, eGizmo.Mtx_RedX, eGizmo.RedCollision.Triangles);
|
||||
tryHandle(Gizmo::GizmoHandle::X_Axis, eGizmo.Mtx_GreenY, eGizmo.GreenCollision.Triangles);
|
||||
tryHandle(Gizmo::GizmoHandle::Y_Axis, eGizmo.Mtx_BlueZ, eGizmo.BlueCollision.Triangles);
|
||||
break;
|
||||
case Gizmo::TranslationMode::Rotate:
|
||||
tryHandle(Gizmo::GizmoHandle::Z_Axis, eGizmo.Mtx_RedX, eGizmo.RedRotateCollision.Triangles);
|
||||
tryHandle(Gizmo::GizmoHandle::X_Axis, eGizmo.Mtx_GreenY, eGizmo.GreenRotateCollision.Triangles);
|
||||
tryHandle(Gizmo::GizmoHandle::Y_Axis, eGizmo.Mtx_BlueZ, eGizmo.BlueRotateCollision.Triangles);
|
||||
break;
|
||||
case Gizmo::TranslationMode::Scale:
|
||||
tryHandle(Gizmo::GizmoHandle::Z_Axis, eGizmo.Mtx_RedX, eGizmo.RedScaleCollision.Triangles);
|
||||
tryHandle(Gizmo::GizmoHandle::X_Axis, eGizmo.Mtx_GreenY, eGizmo.GreenScaleCollision.Triangles);
|
||||
tryHandle(Gizmo::GizmoHandle::Y_Axis, eGizmo.Mtx_BlueZ, eGizmo.BlueScaleCollision.Triangles);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
if (closestHandle != Gizmo::GizmoHandle::None && closestClickPos.has_value()) {
|
||||
eGizmo.SelectedHandle = closestHandle;
|
||||
|
||||
Reference in New Issue
Block a user