diff --git a/Source/Editor/Gizmo/TransformGizmo.cs b/Source/Editor/Gizmo/TransformGizmo.cs
index 601467313..3bd0ded44 100644
--- a/Source/Editor/Gizmo/TransformGizmo.cs
+++ b/Source/Editor/Gizmo/TransformGizmo.cs
@@ -100,7 +100,7 @@ namespace FlaxEditor.Gizmo
while (true)
{
var view = new Ray(Owner.ViewPosition, Owner.ViewDirection);
- var rayCastFlags = SceneGraphNode.RayCastData.FlagTypes.SkipEditorPrimitives;
+ var rayCastFlags = SceneGraphNode.RayCastData.FlagTypes.SkipEditorPrimitives | SceneGraphNode.RayCastData.FlagTypes.SkipTriggers;
var hit = Owner.SceneGraphRoot.RayCast(ref ray, ref view, out var distance, out _, rayCastFlags);
if (hit != null)
{
@@ -130,10 +130,12 @@ namespace FlaxEditor.Gizmo
var newPosition = ray.GetPoint(distance) + new Vector3(0, bottomToCenter, 0);
// Snap
- StartTransforming();
var translationDelta = newPosition - Position;
var rotationDelta = Quaternion.Identity;
var scaleDelta = Vector3.Zero;
+ if (translationDelta.IsZero)
+ break;
+ StartTransforming();
OnApplyTransformation(ref translationDelta, ref rotationDelta, ref scaleDelta);
EndTransforming();
}
diff --git a/Source/Editor/SceneGraph/Actors/ColliderNode.cs b/Source/Editor/SceneGraph/Actors/ColliderNode.cs
index 2cde4809f..9ce047d67 100644
--- a/Source/Editor/SceneGraph/Actors/ColliderNode.cs
+++ b/Source/Editor/SceneGraph/Actors/ColliderNode.cs
@@ -31,7 +31,8 @@ namespace FlaxEditor.SceneGraph
public override bool RayCastSelf(ref RayCastData ray, out Real distance, out Vector3 normal)
{
// Check if skip raycasts
- if ((ray.Flags & RayCastData.FlagTypes.SkipColliders) == RayCastData.FlagTypes.SkipColliders)
+ if (((ray.Flags & RayCastData.FlagTypes.SkipColliders) == RayCastData.FlagTypes.SkipColliders) ||
+ (((ray.Flags & RayCastData.FlagTypes.SkipTriggers) == RayCastData.FlagTypes.SkipTriggers) && ((Collider)Actor).IsTrigger))
{
distance = 0;
normal = Vector3.Up;
diff --git a/Source/Editor/SceneGraph/SceneGraphNode.cs b/Source/Editor/SceneGraph/SceneGraphNode.cs
index b48d84db2..8588f1a1e 100644
--- a/Source/Editor/SceneGraph/SceneGraphNode.cs
+++ b/Source/Editor/SceneGraph/SceneGraphNode.cs
@@ -194,6 +194,11 @@ namespace FlaxEditor.SceneGraph
/// The skip editor primitives. Use it to ignore editor icons and primitives intersections detection.
///
SkipEditorPrimitives = 2,
+
+ ///
+ /// The skip trigger colliders flag. Use it to ignore physics trigger colliders intersections detection.
+ ///
+ SkipTriggers = 4,
}
///
diff --git a/Source/Editor/Tools/Foliage/EditFoliageGizmo.cs b/Source/Editor/Tools/Foliage/EditFoliageGizmo.cs
index 687854b89..1951f6520 100644
--- a/Source/Editor/Tools/Foliage/EditFoliageGizmo.cs
+++ b/Source/Editor/Tools/Foliage/EditFoliageGizmo.cs
@@ -250,10 +250,12 @@ namespace FlaxEditor.Tools.Foliage
if (Physics.RayCast(Position, Vector3.Down, out var hit, float.MaxValue, uint.MaxValue, false))
{
// Snap
- StartTransforming();
var translationDelta = hit.Point - Position;
var rotationDelta = Quaternion.Identity;
var scaleDelta = Vector3.Zero;
+ if (translationDelta.IsZero)
+ return;
+ StartTransforming();
OnApplyTransformation(ref translationDelta, ref rotationDelta, ref scaleDelta);
EndTransforming();
}