diff options
| author | Nay <dnpd.dd@gmail.com> | 2012-09-08 23:15:29 +0100 |
|---|---|---|
| committer | Nay <dnpd.dd@gmail.com> | 2012-09-08 23:16:35 +0100 |
| commit | b30aeb8d511861ed4674b5076ca11bce4cead01f (patch) | |
| tree | d0159188caa13dcf1baa0524f6a4dd782ca5143b /src/server/game/Grids/Notifiers | |
| parent | 7dbc20626e06d6f1d42bf4983f7f21c76b1eb787 (diff) | |
Core/Objects: Method to get nearest GO of type X, FindNearestGameObjectOfType
Thanks Subv for the idea
Diffstat (limited to 'src/server/game/Grids/Notifiers')
| -rwxr-xr-x | src/server/game/Grids/Notifiers/GridNotifiers.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index 072db578220..db4dc819557 100755 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -694,6 +694,30 @@ namespace Trinity NearestGameObjectEntryInObjectRangeCheck(NearestGameObjectEntryInObjectRangeCheck const&); }; + // Success at unit in range, range update for next check (this can be use with GameobjectLastSearcher to find nearest GO with a certain type) + class NearestGameObjectTypeInObjectRangeCheck + { + public: + NearestGameObjectTypeInObjectRangeCheck(WorldObject const& obj, GameobjectTypes type, float range) : i_obj(obj), i_type(type), i_range(range) {} + bool operator()(GameObject* go) + { + if (go->GetGoType() == i_type && i_obj.IsWithinDistInMap(go, i_range)) + { + i_range = i_obj.GetDistance(go); // use found GO range as new range limit for next check + return true; + } + return false; + } + float GetLastRange() const { return i_range; } + private: + WorldObject const& i_obj; + GameobjectTypes i_type; + float i_range; + + // prevent clone this object + NearestGameObjectTypeInObjectRangeCheck(NearestGameObjectTypeInObjectRangeCheck const&); + }; + class GameObjectWithDbGUIDCheck { public: |
