reload map when map was modified
This commit is contained in:
12
Source/Game/Level/LevelScript.cs
Normal file
12
Source/Game/Level/LevelScript.cs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
using System;
|
||||||
|
using FlaxEngine;
|
||||||
|
using FlaxEditor;
|
||||||
|
|
||||||
|
namespace Game
|
||||||
|
{
|
||||||
|
[ExecuteInEditMode]
|
||||||
|
public class LevelScript : Script
|
||||||
|
{
|
||||||
|
public DateTime MapTimestamp;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -335,11 +335,18 @@ namespace Game
|
|||||||
worldSpawnActor = Actor.FindActor("WorldSpawn");
|
worldSpawnActor = Actor.FindActor("WorldSpawn");
|
||||||
if (worldSpawnActor != null)
|
if (worldSpawnActor != null)
|
||||||
{
|
{
|
||||||
if (forceLoad)
|
#if FLAX_EDITOR
|
||||||
|
LevelScript levelScript = worldSpawnActor.GetScript<LevelScript>();
|
||||||
|
DateTime timestamp = File.GetLastWriteTime(mapPath);
|
||||||
|
if (timestamp != levelScript.MapTimestamp)
|
||||||
{
|
{
|
||||||
FlaxEngine.Debug.Log("Destroying children");
|
FlaxEngine.Debug.Log($"Map dirty, reloading. {timestamp.ToString()} != {levelScript.MapTimestamp.ToString()}");
|
||||||
worldSpawnActor.DestroyChildren();
|
forceLoad = true;
|
||||||
|
levelScript.MapTimestamp = timestamp;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
if (forceLoad)
|
||||||
|
worldSpawnActor.DestroyChildren();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FlaxEngine.Debug.Log("Map already loaded in the scene");
|
FlaxEngine.Debug.Log("Map already loaded in the scene");
|
||||||
@@ -348,7 +355,9 @@ namespace Game
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
FlaxEngine.Debug.Log("Loading map");
|
FlaxEngine.Debug.Log("No WorldSpawn, loading map");
|
||||||
|
|
||||||
|
FlaxEngine.Debug.Log("Loading map");
|
||||||
|
|
||||||
{
|
{
|
||||||
string matBasePath = Path.Combine(AssetManager.ContentPath, "Materials");
|
string matBasePath = Path.Combine(AssetManager.ContentPath, "Materials");
|
||||||
@@ -372,7 +381,13 @@ namespace Game
|
|||||||
{
|
{
|
||||||
worldSpawnActor = Actor.AddChild<Actor>();
|
worldSpawnActor = Actor.AddChild<Actor>();
|
||||||
worldSpawnActor.Name = "WorldSpawn";
|
worldSpawnActor.Name = "WorldSpawn";
|
||||||
worldSpawnActor.HideFlags |= HideFlags.DontSave;
|
|
||||||
|
LevelScript levelScript = worldSpawnActor.AddScript<LevelScript>();
|
||||||
|
#if FLAX_EDITOR
|
||||||
|
levelScript.MapTimestamp = File.GetLastWriteTime(mapPath);
|
||||||
|
#endif
|
||||||
|
worldSpawnActor.HideFlags &= ~HideFlags.DontSave;
|
||||||
|
//worldSpawnActor.HideFlags |= HideFlags.DontSave;
|
||||||
//worldSpawnActor.HideFlags |= HideFlags.DontSelect;
|
//worldSpawnActor.HideFlags |= HideFlags.DontSelect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user