diff --git a/src/world/Actor/Actor.cpp b/src/world/Actor/Actor.cpp index fa35c430..5d6dbd7c 100644 --- a/src/world/Actor/Actor.cpp +++ b/src/world/Actor/Actor.cpp @@ -54,6 +54,11 @@ Sapphire::Common::FFXIVARR_POSITION3& Sapphire::Entity::Actor::getPos() return m_pos; } +const Sapphire::Common::FFXIVARR_POSITION3& Sapphire::Entity::Actor::getPos() const +{ + return m_pos; +} + void Sapphire::Entity::Actor::setPos( float x, float y, float z, bool broadcastUpdate ) { m_pos.x = x; diff --git a/src/world/Actor/Actor.h b/src/world/Actor/Actor.h index 5d09de76..f251cbae 100644 --- a/src/world/Actor/Actor.h +++ b/src/world/Actor/Actor.h @@ -58,6 +58,7 @@ namespace Sapphire::Entity Common::ObjKind getObjKind() const; Common::FFXIVARR_POSITION3& getPos(); + const Common::FFXIVARR_POSITION3& getPos() const; void setPos( const Common::FFXIVARR_POSITION3& pos, bool broadcastUpdate = true ); diff --git a/src/world/CMakeLists.txt b/src/world/CMakeLists.txt index 7954ae70..66756f1d 100644 --- a/src/world/CMakeLists.txt +++ b/src/world/CMakeLists.txt @@ -20,6 +20,7 @@ file( GLOB SERVER_SOURCE_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} StatusEffect/*.c* Territory/*.c* Territory/Housing/*.c* + Util/*.c* Navi/*.c*) add_executable( world ${SERVER_SOURCE_FILES} ) diff --git a/src/world/Util/ActorFilter.h b/src/world/Util/ActorFilter.h index 8e7819ec..7109e16b 100644 --- a/src/world/Util/ActorFilter.h +++ b/src/world/Util/ActorFilter.h @@ -15,21 +15,18 @@ namespace Sapphire::World::Util public: ActorFilter() = default; virtual ~ActorFilter() = default; - virtual bool conditionApplies( const Entity::Actor& actor ); + virtual bool conditionApplies( const Entity::Actor& actor ) = 0; }; + ///////////////////////////////////////////////////////////////////////////// + class ActorFilterInRange : public ActorFilter { - FFXIVARR_POSITION3 m_startPos; + Common::FFXIVARR_POSITION3 m_startPos; float m_range; public: - ActorFilterInRange( FFXIVARR_POSITION3 startPos, float range ) : m_startPos( startPos ), m_range( range ); - - bool conditionApplies( const Entity::Actor& actor ) override - { - return Util::distance( m_startPos.x, m_startPos.y, m_startPos.z, - actor.getPos().x, actor.getPos().y, actor.getPos().z ) <= m_range; - } + ActorFilterInRange( Common::FFXIVARR_POSITION3 startPos, float range ); + bool conditionApplies( const Entity::Actor& actor ) override; }; // usage in psudocode @@ -44,4 +41,6 @@ namespace Sapphire::World::Util // } // return resultSet; // -} \ No newline at end of file +} + +#endif