|
@@ -37,10 +37,10 @@
|
|
|
namespace AtomicEditor
|
|
namespace AtomicEditor
|
|
|
{
|
|
{
|
|
|
|
|
|
|
|
-
|
|
|
|
|
- Gizmo3D::Gizmo3D(Context* context) : Object(context),
|
|
|
|
|
- dragging_(false),
|
|
|
|
|
- cloning_(false)
|
|
|
|
|
|
|
+Gizmo3D::Gizmo3D(Context* context) : Object(context),
|
|
|
|
|
+ dragging_(false),
|
|
|
|
|
+ cloning_(false),
|
|
|
|
|
+ startClone_(false)
|
|
|
{
|
|
{
|
|
|
ResourceCache* cache = GetSubsystem<ResourceCache>();
|
|
ResourceCache* cache = GetSubsystem<ResourceCache>();
|
|
|
|
|
|
|
@@ -185,10 +185,8 @@ void Gizmo3D::Use()
|
|
|
Ray cameraRay = view3D_->GetCameraRay();
|
|
Ray cameraRay = view3D_->GetCameraRay();
|
|
|
float scale = gizmoNode_->GetScale().x_;
|
|
float scale = gizmoNode_->GetScale().x_;
|
|
|
|
|
|
|
|
- // Clones an object when it's dragged while holding down Shift
|
|
|
|
|
- bool dragShift = input->GetMouseButtonDown(MOUSEB_LEFT) && input->GetKeyDown(KEY_SHIFT);
|
|
|
|
|
-
|
|
|
|
|
- if (dragShift && !cloning_)
|
|
|
|
|
|
|
+ // Clones an object when it's dragged/rotated/scaled while holding down Shift
|
|
|
|
|
+ if (startClone_ && !cloning_)
|
|
|
{
|
|
{
|
|
|
cloning_ = true;
|
|
cloning_ = true;
|
|
|
selection_->Copy();
|
|
selection_->Copy();
|
|
@@ -205,6 +203,7 @@ void Gizmo3D::Use()
|
|
|
dragging_ = false;
|
|
dragging_ = false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ startClone_ = false;
|
|
|
cloning_ = false;
|
|
cloning_ = false;
|
|
|
|
|
|
|
|
CalculateGizmoAxes();
|
|
CalculateGizmoAxes();
|
|
@@ -429,6 +428,16 @@ void Gizmo3D::Drag()
|
|
|
|
|
|
|
|
float scale = gizmoNode_->GetScale().x_;
|
|
float scale = gizmoNode_->GetScale().x_;
|
|
|
|
|
|
|
|
|
|
+ Input* input = GetSubsystem<Input>();
|
|
|
|
|
+
|
|
|
|
|
+ //Activates cloning when any of these modes is used while holding shift
|
|
|
|
|
+ if (editMode_ == EDIT_MOVE ||
|
|
|
|
|
+ editMode_ == EDIT_ROTATE ||
|
|
|
|
|
+ editMode_ == EDIT_SCALE)
|
|
|
|
|
+ {
|
|
|
|
|
+ startClone_ = input->GetKeyDown(KEY_SHIFT);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (editMode_ == EDIT_MOVE)
|
|
if (editMode_ == EDIT_MOVE)
|
|
|
{
|
|
{
|
|
|
Vector3 adjust(0, 0, 0);
|
|
Vector3 adjust(0, 0, 0);
|