summaryrefslogtreecommitdiff
path: root/indra/llmath/llvolume.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llmath/llvolume.cpp')
-rwxr-xr-xindra/llmath/llvolume.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 41ee3941ac..82081ca853 100755
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -3178,6 +3178,16 @@ BOOL LLVolume::isFlat(S32 face)
}
+LLVolumeParams::LLVolumeParams( LLProfileParams &profile,
+ LLPathParams &path,
+ LLUUID sculpt_id,
+ U8 sculpt_type) :
+mProfileParams(profile),
+mPathParams(path)
+{
+ setSculptID(sculpt_id, sculpt_type);
+}
+
bool LLVolumeParams::isSculpt() const
{
return mSculptID.notNull();
@@ -3494,7 +3504,24 @@ bool LLVolumeParams::setSkew(const F32 skew_value)
bool LLVolumeParams::setSculptID(const LLUUID sculpt_id, U8 sculpt_type)
{
mSculptID = sculpt_id;
- mSculptType = sculpt_type;
+ // Check sculpt type value, it consist of type and flags
+ U8 type = sculpt_type & LL_SCULPT_TYPE_MASK;
+ U8 flags = sculpt_type & LL_SCULPT_FLAG_MASK;
+ if (sculpt_type != (type | flags) || type > LL_SCULPT_TYPE_MAX)
+ {
+ if (sculpt_id != LLUUID::null)
+ {
+ mSculptType = LL_SCULPT_TYPE_MESH;
+ }
+ else
+ {
+ mSculptType = LL_SCULPT_TYPE_SPHERE;
+ }
+ }
+ else
+ {
+ mSculptType = sculpt_type;
+ }
return true;
}