Files
FlaxEngine/Source/Engine/Navigation/NavLink.cpp

72 lines
1.6 KiB
C++

// Copyright (c) 2012-2020 Wojciech Figat. All rights reserved.
#include "NavLink.h"
#include "Engine/Serialization/Serialization.h"
NavLink::NavLink(const SpawnParams& params)
: Actor(params)
, Start(Vector3::Zero)
, End(Vector3::Zero)
, Radius(30.0f)
, BiDirectional(true)
{
}
void NavLink::UpdateBounds()
{
const auto start = _transform.LocalToWorld(Start);
const auto end = _transform.LocalToWorld(End);
BoundingBox::FromPoints(start, end, _box);
BoundingSphere::FromBox(_box, _sphere);
}
#if USE_EDITOR
#include "Engine/Debug/DebugDraw.h"
void NavLink::OnDebugDrawSelected()
{
const auto start = _transform.LocalToWorld(Start);
const auto end = _transform.LocalToWorld(End);
DEBUG_DRAW_WIRE_SPHERE(BoundingSphere(start, 10.0f), Color::BlueViolet, 0, true);
DEBUG_DRAW_WIRE_SPHERE(BoundingSphere(end, 10.0f), Color::BlueViolet, 0, true);
DEBUG_DRAW_LINE(start, end, Color::BlueViolet, 0, true);
// Base
Actor::OnDebugDrawSelected();
}
#endif
void NavLink::Serialize(SerializeStream& stream, const void* otherObj)
{
// Base
Actor::Serialize(stream, otherObj);
SERIALIZE_GET_OTHER_OBJ(NavLink);
SERIALIZE(Start);
SERIALIZE(End);
SERIALIZE(Radius);
SERIALIZE(BiDirectional);
}
void NavLink::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
{
// Base
Actor::Deserialize(stream, modifier);
DESERIALIZE(Start);
DESERIALIZE(End);
DESERIALIZE(Radius);
DESERIALIZE(BiDirectional);
}
void NavLink::OnTransformChanged()
{
// Base
Actor::OnTransformChanged();
UpdateBounds();
}