From 7e7f5f0bd67df3ad03d5baf7bc299441ea96a6c0 Mon Sep 17 00:00:00 2001 From: "Michael Cook (mackal)" Date: Tue, 6 Mar 2018 23:02:49 -0500 Subject: [PATCH] Add Map::FindClosestLoS() This will return true if LOS failed and you should use the outloc --- zone/map.cpp | 8 ++++++++ zone/map.h | 1 + 2 files changed, 9 insertions(+) diff --git a/zone/map.cpp b/zone/map.cpp index 32c6564b4..f198dc1de 100644 --- a/zone/map.cpp +++ b/zone/map.cpp @@ -268,6 +268,14 @@ bool Map::CheckLoS(glm::vec3 myloc, glm::vec3 oloc) const { return !imp->rm->raycast((const RmReal*)&myloc, (const RmReal*)&oloc, nullptr, nullptr, nullptr); } +// returns true if outloc should be used +bool Map::FindClosestLoS(glm::vec3 myloc, glm::vec3 oloc, glm::vec3 &outloc) const { + if(!imp) + return false; + + return imp->rm->raycast((const RmReal*)&myloc, (const RmReal*)&oloc, (RmReal *)&outloc, nullptr, nullptr); +} + inline bool file_exists(const std::string& name) { std::ifstream f(name.c_str()); return f.good(); diff --git a/zone/map.h b/zone/map.h index 35b5baeda..162985a36 100644 --- a/zone/map.h +++ b/zone/map.h @@ -42,6 +42,7 @@ public: bool LineIntersectsZone(glm::vec3 start, glm::vec3 end, float step, glm::vec3 *result) const; bool LineIntersectsZoneNoZLeaps(glm::vec3 start, glm::vec3 end, float step_mag, glm::vec3 *result) const; bool CheckLoS(glm::vec3 myloc, glm::vec3 oloc) const; + bool FindClosestLoS(glm::vec3 myloc, glm::vec3 oloc, glm::vec3 &outloc) const; #ifdef USE_MAP_MMFS bool Load(std::string filename, bool force_mmf_overwrite = false);