Make NavMesh initialize earlier.
This commit is contained in:
@@ -105,10 +105,8 @@ void NavMesh::OnDataAssetLoaded()
|
|||||||
if (Data.Tiles.HasItems())
|
if (Data.Tiles.HasItems())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const bool isEnabled = IsDuringPlay() && IsActiveInHierarchy();
|
|
||||||
|
|
||||||
// Remove added tiles
|
// Remove added tiles
|
||||||
if (isEnabled)
|
if (_navMeshActive)
|
||||||
{
|
{
|
||||||
RemoveTiles();
|
RemoveTiles();
|
||||||
}
|
}
|
||||||
@@ -120,7 +118,7 @@ void NavMesh::OnDataAssetLoaded()
|
|||||||
IsDataDirty = false;
|
IsDataDirty = false;
|
||||||
|
|
||||||
// Add loaded tiles
|
// Add loaded tiles
|
||||||
if (isEnabled)
|
if (_navMeshActive)
|
||||||
{
|
{
|
||||||
AddTiles();
|
AddTiles();
|
||||||
}
|
}
|
||||||
@@ -156,15 +154,36 @@ void NavMesh::OnEnable()
|
|||||||
// Base
|
// Base
|
||||||
Actor::OnEnable();
|
Actor::OnEnable();
|
||||||
|
|
||||||
|
if (!_navMeshActive)
|
||||||
|
{
|
||||||
GetScene()->Navigation.Meshes.Add(this);
|
GetScene()->Navigation.Meshes.Add(this);
|
||||||
AddTiles();
|
AddTiles();
|
||||||
|
_navMeshActive = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavMesh::OnDisable()
|
void NavMesh::OnDisable()
|
||||||
|
{
|
||||||
|
if (_navMeshActive)
|
||||||
{
|
{
|
||||||
RemoveTiles();
|
RemoveTiles();
|
||||||
GetScene()->Navigation.Meshes.Remove(this);
|
GetScene()->Navigation.Meshes.Remove(this);
|
||||||
|
_navMeshActive = false;
|
||||||
|
}
|
||||||
|
|
||||||
// Base
|
// Base
|
||||||
Actor::OnDisable();
|
Actor::OnDisable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NavMesh::Initialize()
|
||||||
|
{
|
||||||
|
// Base
|
||||||
|
Actor::Initialize();
|
||||||
|
|
||||||
|
if (!_navMeshActive)
|
||||||
|
{
|
||||||
|
GetScene()->Navigation.Meshes.Add(this);
|
||||||
|
AddTiles();
|
||||||
|
_navMeshActive = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -68,6 +68,9 @@ private:
|
|||||||
void RemoveTiles();
|
void RemoveTiles();
|
||||||
void OnDataAssetLoaded();
|
void OnDataAssetLoaded();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool _navMeshActive = false;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// [Actor]
|
// [Actor]
|
||||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||||
@@ -77,4 +80,5 @@ protected:
|
|||||||
// [Actor]
|
// [Actor]
|
||||||
void OnEnable() override;
|
void OnEnable() override;
|
||||||
void OnDisable() override;
|
void OnDisable() override;
|
||||||
|
void Initialize() override;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user