Add NavMesh Modifier Volume actor type
This commit is contained in:
54
Source/Engine/Navigation/NavModifierVolume.cpp
Normal file
54
Source/Engine/Navigation/NavModifierVolume.cpp
Normal file
@@ -0,0 +1,54 @@
|
||||
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
||||
|
||||
#include "NavModifierVolume.h"
|
||||
#include "Engine/Level/Scene/Scene.h"
|
||||
#include "Engine/Serialization/Serialization.h"
|
||||
#if USE_EDITOR
|
||||
#include "Editor/Editor.h"
|
||||
#include "Editor/Managed/ManagedEditor.h"
|
||||
#include "NavMeshBuilder.h"
|
||||
#endif
|
||||
|
||||
NavModifierVolume::NavModifierVolume(const SpawnParams& params)
|
||||
: BoxVolume(params)
|
||||
{
|
||||
_size = 100.0f;
|
||||
}
|
||||
|
||||
void NavModifierVolume::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
// Base
|
||||
BoxVolume::Serialize(stream, otherObj);
|
||||
|
||||
SERIALIZE_GET_OTHER_OBJ(NavModifierVolume);
|
||||
|
||||
SERIALIZE_MEMBER(AgentsMask, AgentsMask.Mask);
|
||||
}
|
||||
|
||||
void NavModifierVolume::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
// Base
|
||||
BoxVolume::Deserialize(stream, modifier);
|
||||
|
||||
DESERIALIZE_MEMBER(AgentsMask, AgentsMask.Mask);
|
||||
}
|
||||
|
||||
#if USE_EDITOR
|
||||
|
||||
void NavModifierVolume::OnBoundsChanged(const BoundingBox& prevBounds)
|
||||
{
|
||||
// Auto-rebuild modified navmesh area
|
||||
if (IsDuringPlay() && IsActiveInHierarchy() && !Editor::IsPlayMode && Editor::Managed->CanAutoBuildNavMesh())
|
||||
{
|
||||
BoundingBox dirtyBounds;
|
||||
BoundingBox::Merge(prevBounds, _box, dirtyBounds);
|
||||
NavMeshBuilder::Build(GetScene(), dirtyBounds, ManagedEditor::ManagedEditorOptions.AutoRebuildNavMeshTimeoutMs);
|
||||
}
|
||||
}
|
||||
|
||||
Color NavModifierVolume::GetWiresColor()
|
||||
{
|
||||
return Color::Red;
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user