Added LLMaterialMgr::remove() to remove material information from a face

master
Kitty Barnett 2013-02-25 00:16:14 +01:00
parent 4d1446766a
commit fbf8e51c60
4 changed files with 40 additions and 14 deletions

View File

@ -55,11 +55,6 @@
* Materials constants
*/
const LLColor4U MATERIALS_DEFAULT_SPECULAR_COLOR = LLColor4U(255, 255, 255, 255);
const U8 MATERIALS_DEFAULT_SPECULAR_EXP = 128;
const U8 MATERIALS_DEFAULT_ENV_INTENSITY = 128;
const U8 MATERIALS_DEFAULT_DIFFUSE_ALPHA_MODE = 0;
const U8 MATERIALS_DEFAULT_ALPHA_MASK_CUTOFF = 128;
const F32 MATERIALS_MULTIPLIER = 10000.f;
/**
@ -94,11 +89,20 @@ template<> LLUUID getMaterialField(const LLSD& data, const std::string& field, c
const LLMaterial LLMaterial::null;
LLMaterial::LLMaterial()
: mSpecularLightColor(MATERIALS_DEFAULT_SPECULAR_COLOR)
, mSpecularLightExponent(MATERIALS_DEFAULT_SPECULAR_EXP)
, mEnvironmentIntensity(MATERIALS_DEFAULT_ENV_INTENSITY)
, mDiffuseAlphaMode(MATERIALS_DEFAULT_DIFFUSE_ALPHA_MODE)
, mAlphaMaskCutoff(MATERIALS_DEFAULT_ALPHA_MASK_CUTOFF)
: mNormalOffsetX(.0f)
, mNormalOffsetY(.0f)
, mNormalRepeatX(.0f)
, mNormalRepeatY(.0f)
, mNormalRotation(.0f)
, mSpecularOffsetX(.0f)
, mSpecularOffsetY(.0f)
, mSpecularRepeatX(.0f)
, mSpecularRepeatY(.0f)
, mSpecularRotation(.0f)
, mSpecularLightExponent(0)
, mEnvironmentIntensity(0)
, mDiffuseAlphaMode(0)
, mAlphaMaskCutoff(0)
{
}
@ -159,8 +163,21 @@ void LLMaterial::fromLLSD(const LLSD& material_data)
bool LLMaterial::isNull() const
{
// *TODO: find a better way of defining a 'null' material?
return
(mNormalID.isNull()) && (.0f == mNormalOffsetX) && (.0f == mNormalOffsetY) && (.0f == mNormalRepeatX) && (.0f == mNormalRepeatY) &&
(mSpecularID.isNull()) && (.0f == mSpecularOffsetX) && (.0f == mSpecularOffsetY) && (.0f == mSpecularRepeatX) && (.0f == mSpecularRepeatY);
return (*this == null);
}
bool LLMaterial::operator == (const LLMaterial& rhs) const
{
return
(mNormalID == rhs.mNormalID) && (mNormalOffsetX == rhs.mNormalOffsetX) && (mNormalOffsetY == rhs.mNormalOffsetY) &&
(mNormalRepeatX == rhs.mNormalRepeatX) && (mNormalRepeatY == rhs.mNormalRepeatY) && (mNormalRotation == rhs.mNormalRotation) &&
(mSpecularID == rhs.mSpecularID) && (mSpecularOffsetX == rhs.mSpecularOffsetX) && (mSpecularOffsetY == rhs.mSpecularOffsetY) &&
(mSpecularRepeatX == rhs.mSpecularRepeatX) && (mSpecularRepeatY == rhs.mSpecularRepeatY) && (mSpecularRotation == rhs.mSpecularRotation) &&
(mSpecularLightColor == rhs.mSpecularLightColor) && (mSpecularLightExponent == rhs.mSpecularLightExponent) &&
(mEnvironmentIntensity == rhs.mEnvironmentIntensity) && (mDiffuseAlphaMode == rhs.mDiffuseAlphaMode) && (mAlphaMaskCutoff == rhs.mAlphaMaskCutoff);
}
bool LLMaterial::operator != (const LLMaterial& rhs) const
{
return !(*this == rhs);
}

View File

@ -74,6 +74,9 @@ public:
bool isNull() const;
static const LLMaterial null;
bool operator == (const LLMaterial& rhs) const;
bool operator != (const LLMaterial& rhs) const;
protected:
LLUUID mNormalID;
F32 mNormalOffsetX;

View File

@ -246,6 +246,11 @@ void LLMaterialMgr::put(const LLUUID& object_id, const U8 te, const LLMaterial&
}
}
void LLMaterialMgr::remove(const LLUUID& object_id, const U8 te)
{
put(object_id, te, LLMaterial::null);
}
const LLMaterialPtr LLMaterialMgr::setMaterial(const LLUUID& region_id, const LLMaterialID& material_id, const LLSD& material_data)
{
LL_DEBUGS("Materials") << "region " << region_id << " material id " << material_id << LL_ENDL;

View File

@ -50,6 +50,7 @@ public:
void getAll(const LLUUID& region_id);
boost::signals2::connection getAll(const LLUUID& region_id, getall_callback_t::slot_type cb);
void put(const LLUUID& object_id, const U8 te, const LLMaterial& material);
void remove(const LLUUID& object_id, const U8 te);
protected:
void clearGetQueues(const LLUUID& region_id);