Add automatic navmesh update when editing spline with navmesh-relevant collider

This commit is contained in:
Wojtek Figat
2021-02-12 11:27:13 +01:00
parent 0e78d13146
commit 17d0f40e1c

View File

@@ -46,6 +46,7 @@ namespace FlaxEditor.SceneGraph.Actors
{
var actor = (Spline)_node.Actor;
actor.SetSplineTransform(Index, value);
OnSplineEdited(actor);
}
}
@@ -111,6 +112,7 @@ namespace FlaxEditor.SceneGraph.Actors
{
var spline = Object.Find<Spline>(ref SplineId);
sceneModule.MarkSceneEdited(spline.Scene);
OnSplineEdited(spline);
}
}
@@ -142,6 +144,7 @@ namespace FlaxEditor.SceneGraph.Actors
undoAction = action;
var splineNode = (SplineNode)SceneGraphFactory.FindNode(action.SplineId);
splineNode.OnUpdate();
OnSplineEdited(actor);
return splineNode.ActorChildNodes[newIndex];
}
@@ -194,6 +197,7 @@ namespace FlaxEditor.SceneGraph.Actors
if (splineNode == null)
return null;
splineNode.OnUpdate();
OnSplineEdited(spline);
return splineNode.ActorChildNodes[data.Index];
}
}
@@ -333,6 +337,19 @@ namespace FlaxEditor.SceneGraph.Actors
Editor.Instance.SceneEditing.Spawn(actor, Actor);
}
private static void OnSplineEdited(Spline spline)
{
var collider = spline.GetChild<SplineCollider>();
if (collider && collider.Scene && collider.IsActiveInHierarchy && collider.HasStaticFlag(StaticFlags.Navigation) && !Editor.IsPlayMode)
{
var options = Editor.Instance.Options.Options.General;
if (options.AutoRebuildNavMesh)
{
Navigation.BuildNavMesh(collider.Scene, collider.Box, options.AutoRebuildNavMeshTimeoutMs);
}
}
}
/// <inheritdoc />
public override void OnDispose()
{