diff options
| author | Andrew Meadows <andrew@lindenlab.com> | 2010-11-18 15:55:53 -0800 |
|---|---|---|
| committer | Andrew Meadows <andrew@lindenlab.com> | 2010-11-18 15:55:53 -0800 |
| commit | 424786d8d05093abd816a3decd86aace64816179 (patch) | |
| tree | 689b5bb532202c448fa9221d12aacfd482a0b14c /indra/newview/llviewerparceloverlay.cpp | |
| parent | 807007649a32c5276f31c5f73d6fade7d059ce07 (diff) | |
Added viewer-side "object overlaps parcel" check encroachment returnabilty UI
Reviewed with Falcon
Diffstat (limited to 'indra/newview/llviewerparceloverlay.cpp')
| -rw-r--r-- | indra/newview/llviewerparceloverlay.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp index eee653b0c1..58d9009c90 100644 --- a/indra/newview/llviewerparceloverlay.cpp +++ b/indra/newview/llviewerparceloverlay.cpp @@ -145,6 +145,30 @@ BOOL LLViewerParcelOverlay::isOwnedOther(const LLVector3& pos) const return (PARCEL_OWNED == overlay || PARCEL_FOR_SALE == overlay); } +bool LLViewerParcelOverlay::encroachesOwned(const LLBBox& bbox) const +{ + LLBBox bbox_aligned = bbox.getAxisAligned(); + + LLVector3 min = bbox_aligned.getMinAgent(); + LLVector3 max = bbox_aligned.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 + || PARCEL_GROUP == type ) + return true; + } + + return false; +} + BOOL LLViewerParcelOverlay::isSoundLocal(const LLVector3& pos) const { S32 row = S32(pos.mV[VY] / PARCEL_GRID_STEP_METERS); |
