From 1127fd5fbcfde06a1408b2b4528deda62e428189 Mon Sep 17 00:00:00 2001 From: Garux Date: Sun, 20 Oct 2024 01:38:44 +0500 Subject: [PATCH] add RadiantSelectionSystem::AllTransformable interface --- radiant/selection.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/radiant/selection.cpp b/radiant/selection.cpp index 3166b9ba..ac1a67d6 100644 --- a/radiant/selection.cpp +++ b/radiant/selection.cpp @@ -455,6 +455,13 @@ public: } }; + +class AllTransformable +{ +public: + virtual void alltransform( const Transforms& transforms, const Vector3& world_pivot ) = 0; +}; + class TranslateFreeXY_Z : public Manipulatable { private: @@ -6702,6 +6709,7 @@ class RadiantSelectionSystem final : public Rotatable, public Scalable, public Skewable, + public AllTransformable, public TransformOriginTranslatable, public Renderable { @@ -7381,6 +7389,19 @@ public: } } + void alltransform( const Transforms& transforms, const Vector3& world_pivot ) override { + if ( !nothingSelected() ) { + if ( Mode() == eComponent ) { + GlobalSelectionSystem().foreachSelectedComponent( transform_component_selected( transforms, world_pivot ) ); + } + else + { + GlobalSelectionSystem().foreachSelected( transform_selected( transforms, world_pivot ) ); + } + SceneChangeNotify(); + } + } + void rotateSelected( const Quaternion& rotation, bool snapOrigin = false ){ if( snapOrigin && !m_pivotIsCustom ) vector3_snap( m_pivot2world.t().vec3(), GetSnapGridSize() ); @@ -7404,18 +7425,12 @@ public: Transforms m_repeatableTransforms; void repeatTransforms( const Callback& clone ){ - if ( countSelected() != 0 && !m_repeatableTransforms.isIdentity() ) { + if ( !nothingSelected() && !m_repeatableTransforms.isIdentity() ) { startMove(); UndoableCommand undo( "repeatTransforms" ); if( Mode() == ePrimitive ) clone(); - if ( Mode() == eComponent ) { - GlobalSelectionSystem().foreachSelectedComponent( transform_component_selected( m_repeatableTransforms, m_pivot2world.t().vec3() ) ); - } - else - { - GlobalSelectionSystem().foreachSelected( transform_selected( m_repeatableTransforms, m_pivot2world.t().vec3() ) ); - } + alltransform( m_repeatableTransforms, m_pivot2world.t().vec3() ); freezeTransforms(); } }