22 container.second.clear();
35 const auto result =
insert(container->second, node->
getGUID(), node);
54 "VisualSensor error: Invalid node GUID specified for "
58 const NodeContainer::iterator nodeEntry = container->second.find(nodeGUID);
59 if (nodeEntry != std::end(container->second)) {
61 container->second.erase(nodeEntry);
63 const NodePositions::iterator it = positions.find(nodeGUID);
64 if (it != std::end(positions)) {
74 for (
const NodeContainer::value_type&
entry : container.second) {
90 I64 currentNearest = positions.begin()->first;
92 for (
const NodePositions::value_type&
entry : positions) {
94 if (temp < currentDistanceSq) {
95 currentDistanceSq = temp;
96 currentNearest =
entry.first;
99 if (currentNearest != 0) {
100 const NodeContainer::const_iterator nodeEntry =
101 container->second.find(currentNearest);
102 if (nodeEntry != std::end(container->second)) {
103 return nodeEntry->second;
115 "VisualSensor error: Invalid node GUID specified for distance request");
128 "VisualSensor error: Invalid node GUID specified for position request");
129 const NodeContainerMap::iterator container =
_nodeContainerMap.find(containerID);
132 const NodePositions::iterator it = positions.find(nodeGUID);
133 if (it != std::end(positions)) {
NPC * getUnitRef() const noexcept
VisualSensor(AIEntity *parentEntity)
NodePositionsMap _nodePositionsMap
SceneGraphNode * findClosestNode(U32 containerID)
vec3< F32 > getNodePosition(U32 containerID, I64 nodeGUID)
F32 getDistanceToNodeSq(U32 containerID, I64 nodeGUID)
NodeContainerMap _nodeContainerMap
void unfollowSceneGraphNode(U32 containerID, I64 nodeGUID)
void followSceneGraphNode(U32 containerID, SceneGraphNode *node)
void update(U64 deltaTimeUS) override
FORCE_INLINE I64 getGUID() const noexcept
NPC base class. Every character in the game is an NPC by default except the Player.
FORCE_INLINE T * get() const
Returns a pointer to a specific component. Returns null if the SGN does not have the component reques...
const vec3< F32 > & getCurrentPosition() const
T distanceSquared(const vec3 &v) const noexcept
compute the vector's squared distance to another specified vector
hashMap< I64, vec3< F32 > > NodePositions
SGN GUID, Last position.
Handle console commands that start with a forward slash.
void insert(eastl::vector< T, A1 > &target, const eastl::vector< T, A2 > &source)
Project const SceneEntry & entry
static NO_INLINE void errorfn(const char *format, T &&... args)