diff --git a/Source/Editor/SceneGraph/Actors/BoxColliderNode.cs b/Source/Editor/SceneGraph/Actors/BoxColliderNode.cs
index 0f6670feb..cc3bcbe42 100644
--- a/Source/Editor/SceneGraph/Actors/BoxColliderNode.cs
+++ b/Source/Editor/SceneGraph/Actors/BoxColliderNode.cs
@@ -19,12 +19,16 @@ namespace FlaxEditor.SceneGraph.Actors
[CustomEditor(typeof(BoxCollider)), DefaultEditor]
public class BoxColliderEditor : ActorEditor
{
+ private bool _keepLocalOrientation = false;
///
public override void Initialize(LayoutElementsContainer layout)
{
base.Initialize(layout);
layout.Space(20f);
+ var checkbox = layout.Checkbox("Keep Local Orientation", "Keeps the local orientation when resizing.").CheckBox;
+ checkbox.Checked = _keepLocalOrientation;
+ checkbox.StateChanged += box => _keepLocalOrientation = box.Checked;
layout.Button("Resize to Fit", Editor.Instance.CodeDocs.GetTooltip(new ScriptMemberInfo(typeof(BoxCollider).GetMethod("AutoResize")))).Button.Clicked += OnResizeClicked;
}
@@ -33,7 +37,7 @@ namespace FlaxEditor.SceneGraph.Actors
foreach (var value in Values)
{
if (value is BoxCollider collider)
- collider.AutoResize();
+ collider.AutoResize(!_keepLocalOrientation);
}
}
}
@@ -76,7 +80,7 @@ namespace FlaxEditor.SceneGraph.Actors
return;
}
- ((BoxCollider)Actor).AutoResize();
+ ((BoxCollider)Actor).AutoResize(false);
}
}
}
diff --git a/Source/Engine/Physics/Colliders/BoxCollider.cpp b/Source/Engine/Physics/Colliders/BoxCollider.cpp
index d74b3efba..d82b94d28 100644
--- a/Source/Engine/Physics/Colliders/BoxCollider.cpp
+++ b/Source/Engine/Physics/Colliders/BoxCollider.cpp
@@ -20,7 +20,7 @@ void BoxCollider::SetSize(const Float3& value)
UpdateBounds();
}
-void BoxCollider::AutoResize()
+void BoxCollider::AutoResize(bool globalOrientation = true)
{
Actor* parent = GetParent();
if (Cast(parent))
@@ -43,7 +43,8 @@ void BoxCollider::AutoResize()
SetLocalPosition(Vector3::Zero);
SetSize(parentSize / parentScale);
SetCenter(parentCenter / parentScale);
- SetOrientation(GetOrientation() * Quaternion::Invert(GetOrientation()));
+ if (globalOrientation)
+ SetOrientation(GetOrientation() * Quaternion::Invert(GetOrientation()));
}
#if USE_EDITOR
diff --git a/Source/Engine/Physics/Colliders/BoxCollider.h b/Source/Engine/Physics/Colliders/BoxCollider.h
index 3c15ce640..3c6759ee9 100644
--- a/Source/Engine/Physics/Colliders/BoxCollider.h
+++ b/Source/Engine/Physics/Colliders/BoxCollider.h
@@ -46,7 +46,7 @@ public:
///
/// Resizes the collider based on the bounds of it's parent to contain it whole (including any siblings).
///
- API_FUNCTION() void AutoResize();
+ API_FUNCTION() void AutoResize(bool globalOrientation);
public:
// [Collider]