Fix snapping object to the group in Editor to skip trigger volumes
#522
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -194,6 +194,11 @@ namespace FlaxEditor.SceneGraph
|
||||
/// The skip editor primitives. Use it to ignore editor icons and primitives intersections detection.
|
||||
/// </summary>
|
||||
SkipEditorPrimitives = 2,
|
||||
|
||||
/// <summary>
|
||||
/// The skip trigger colliders flag. Use it to ignore physics trigger colliders intersections detection.
|
||||
/// </summary>
|
||||
SkipTriggers = 4,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user