diff --git a/src/noggit/Action.hpp b/src/noggit/Action.hpp index 14572647..07438474 100755 --- a/src/noggit/Action.hpp +++ b/src/noggit/Action.hpp @@ -53,7 +53,10 @@ namespace Noggit eRMB = 0x20, eMMB = 0x40, eSCROLL = 0x80, - eNUM = 0x100 + eNUM = 0x100, + eSCALE = 0x200, + eROTATE = 0x400, + eTRANSLATE = 0x800 }; enum class ActionObjectTypes diff --git a/src/noggit/MapView.cpp b/src/noggit/MapView.cpp index 36e4f3ba..ee86e292 100755 --- a/src/noggit/MapView.cpp +++ b/src/noggit/MapView.cpp @@ -3429,6 +3429,12 @@ void MapView::tick (float dt) action_modality |= Noggit::ActionModalityControllers::eRMB; if (MoveObj) action_modality |= Noggit::ActionModalityControllers::eMMB; + if (keys) + action_modality |= Noggit::ActionModalityControllers::eSCALE; + if (keyr) + action_modality |= Noggit::ActionModalityControllers::eROTATE; + // if (keyx != 0 || keyy != 0 || keyz != 0) + // action_modality |= Noggit::ActionModalityControllers::eTRANSLATE; NOGGIT_ACTION_MGR->endActionOnModalityMismatch(action_modality); @@ -3519,14 +3525,15 @@ void MapView::tick (float dt) if (keys != 0.f) { - NOGGIT_ACTION_MGR->beginAction(this, Noggit::ActionFlags::eOBJECTS_TRANSFORMED); + NOGGIT_ACTION_MGR->beginAction(this, Noggit::ActionFlags::eOBJECTS_TRANSFORMED, + Noggit::ActionModalityControllers::eSCALE); _world->scale_selected_models(keys*numpad_moveratio / 50.f, World::m2_scaling_type::add); - // NOGGIT_ACTION_MGR->endAction(); _rotation_editor_need_update = true; } if (keyr != 0.f) { - NOGGIT_ACTION_MGR->beginAction(this, Noggit::ActionFlags::eOBJECTS_TRANSFORMED); + NOGGIT_ACTION_MGR->beginAction(this, Noggit::ActionFlags::eOBJECTS_TRANSFORMED, + Noggit::ActionModalityControllers::eROTATE); _world->rotate_selected_models( math::degrees(0.f) , math::degrees(keyr * numpad_moveratio * 5.f) , math::degrees(0.f) diff --git a/src/noggit/World.cpp b/src/noggit/World.cpp index fc9bf0ba..fc3e53ca 100755 --- a/src/noggit/World.cpp +++ b/src/noggit/World.cpp @@ -937,9 +937,11 @@ void World::rotate_selected_models(math::degrees rx, math::degrees ry, math::deg } else { - math::degrees::vec3& dir = obj->dir; - dir += dir_change; + // math::degrees::vec3& dir = obj->dir; + // dir += dir_change; } + math::degrees::vec3& dir = obj->dir; + dir += dir_change; obj->recalcExtents();