diff options
| author | Leyla Farazha <leyla@lindenlab.com> | 2011-08-12 14:53:25 -0700 |
|---|---|---|
| committer | Leyla Farazha <leyla@lindenlab.com> | 2011-08-12 14:53:25 -0700 |
| commit | 10ec0049125317d5c0bdd1bf89b96a54a9b2d873 (patch) | |
| tree | 97efa1a6731aef7e703e1a6ca2eaa4a01dbb6fa8 /indra/newview/llviewerparceloverlay.cpp | |
| parent | e69efc8369a65008d41155717761fbaec0e309c5 (diff) | |
| parent | 25f1653ca0a25c73b3c0649ee5bb7c65e5378eac (diff) | |
merge from viewer-experience
Diffstat (limited to 'indra/newview/llviewerparceloverlay.cpp')
| -rw-r--r-- | indra/newview/llviewerparceloverlay.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp index 26765bdd01..eff16b6a6e 100644 --- a/indra/newview/llviewerparceloverlay.cpp +++ b/indra/newview/llviewerparceloverlay.cpp @@ -173,6 +173,33 @@ bool LLViewerParcelOverlay::encroachesOwned(const std::vector<LLBBox>& boxes) co } return false; } +bool LLViewerParcelOverlay::encroachesOnUnowned(const std::vector<LLBBox>& boxes) const +{ + // boxes are expected to already be axis aligned + for (U32 i = 0; i < boxes.size(); ++i) + { + LLVector3 min = boxes[i].getMinAgent(); + LLVector3 max = boxes[i].getMaxAgent(); + + S32 left = S32(llclamp((min.mV[VX] / PARCEL_GRID_STEP_METERS), 0.f, REGION_WIDTH_METERS - 1)); + S32 right = S32(llclamp((max.mV[VX] / PARCEL_GRID_STEP_METERS), 0.f, REGION_WIDTH_METERS - 1)); + S32 top = S32(llclamp((min.mV[VY] / PARCEL_GRID_STEP_METERS), 0.f, REGION_WIDTH_METERS - 1)); + S32 bottom = S32(llclamp((max.mV[VY] / PARCEL_GRID_STEP_METERS), 0.f, REGION_WIDTH_METERS - 1)); + + for (S32 row = top; row <= bottom; row++) + { + for (S32 column = left; column <= right; column++) + { + U8 type = ownership(row, column); + if ((PARCEL_SELF != type)) + { + return true; + } + } + } + } + return false; +} BOOL LLViewerParcelOverlay::isSoundLocal(const LLVector3& pos) const { |
