Add support for using NavAreas for navigation

This commit is contained in:
Wojtek Figat
2021-01-18 13:18:26 +01:00
parent ba050b9eaa
commit fdc8e371c4
10 changed files with 155 additions and 9 deletions

View File

@@ -1,6 +1,7 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
#include "NavModifierVolume.h"
#include "NavigationSettings.h"
#include "Engine/Level/Scene/Scene.h"
#include "Engine/Serialization/Serialization.h"
#if USE_EDITOR
@@ -15,6 +16,17 @@ NavModifierVolume::NavModifierVolume(const SpawnParams& params)
_size = 100.0f;
}
NavAreaProperties* NavModifierVolume::GetNavArea() const
{
auto settings = NavigationSettings::Get();
for (auto& navArea : settings->NavAreas)
{
if (navArea.Name == AreaName)
return &navArea;
}
return nullptr;
}
void NavModifierVolume::Serialize(SerializeStream& stream, const void* otherObj)
{
// Base
@@ -23,6 +35,7 @@ void NavModifierVolume::Serialize(SerializeStream& stream, const void* otherObj)
SERIALIZE_GET_OTHER_OBJ(NavModifierVolume);
SERIALIZE_MEMBER(AgentsMask, AgentsMask.Mask);
SERIALIZE(AreaName);
}
void NavModifierVolume::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
@@ -31,6 +44,7 @@ void NavModifierVolume::Deserialize(DeserializeStream& stream, ISerializeModifie
BoxVolume::Deserialize(stream, modifier);
DESERIALIZE_MEMBER(AgentsMask, AgentsMask.Mask);
DESERIALIZE(AreaName);
}
#if USE_EDITOR