From 07e7ab87ba2c8feb6201969494a433e0c355ce02 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Tue, 22 Apr 2014 00:29:53 +0200 Subject: [PATCH] Cleaned up LGG's beams code --- indra/newview/lggbeamcolormapfloater.cpp | 36 +-- indra/newview/lggbeammaps.cpp | 284 +++++++++-------------- indra/newview/lggbeammaps.h | 69 +++--- indra/newview/lggbeamscolors.cpp | 48 ++-- indra/newview/lggbeamscolors.h | 15 +- 5 files changed, 209 insertions(+), 243 deletions(-) diff --git a/indra/newview/lggbeamcolormapfloater.cpp b/indra/newview/lggbeamcolormapfloater.cpp index 4e4df34b87..d5fe729d2a 100644 --- a/indra/newview/lggbeamcolormapfloater.cpp +++ b/indra/newview/lggbeamcolormapfloater.cpp @@ -175,8 +175,8 @@ void lggBeamColorMapFloater::draw() //convertHueToX(i),237,output); } - S32 X1 = convertHueToX(myData.startHue) + CORRECTION_X; - S32 X2 = convertHueToX(myData.endHue) + CORRECTION_X; + S32 X1 = convertHueToX(myData.mStartHue) + CORRECTION_X; + S32 X2 = convertHueToX(myData.mEndHue) + CORRECTION_X; LLFontGL* font = LLFontGL::getFontSansSerifSmall(); gGL.color4fv(LLColor4::white.mV); @@ -269,15 +269,15 @@ BOOL lggBeamColorMapFloater::handleMouseDown(S32 x,S32 y,MASK mask) { if (x < (6 + CORRECTION_X)) { - myData.startHue=0.0f; + myData.mStartHue=0.0f; } else if (x > (402 + CORRECTION_X)) { - myData.endHue=720.0f; + myData.mEndHue=720.0f; } else { - myData.startHue = convertXToHue(x + CORRECTION_X); + myData.mStartHue = convertXToHue(x + CORRECTION_X); } fixOrder(); @@ -294,15 +294,15 @@ BOOL lggBeamColorMapFloater::handleRightMouseDown(S32 x,S32 y,MASK mask) { if (x < (6 + CORRECTION_X)) { - myData.startHue=0.0f; + myData.mStartHue=0.0f; } else if (x > (402 + CORRECTION_X)) { - myData.endHue=720.0f; + myData.mEndHue=720.0f; } else { - myData.endHue = convertXToHue(x + CORRECTION_X); + myData.mEndHue = convertXToHue(x + CORRECTION_X); } fixOrder(); @@ -314,14 +314,14 @@ BOOL lggBeamColorMapFloater::handleRightMouseDown(S32 x,S32 y,MASK mask) void lggBeamColorMapFloater::fixOrder() { - myData.rotateSpeed = mColorSlider->getValueF32(); - myData.rotateSpeed /= 100.0f; + myData.mRotateSpeed = mColorSlider->getValueF32(); + myData.mRotateSpeed /= 100.0f; - if(myData.endHue < myData.startHue) + if(myData.mEndHue < myData.mStartHue) { - F32 temp = myData.startHue; - myData.startHue = myData.endHue; - myData.endHue = temp; + F32 temp = myData.mStartHue; + myData.mStartHue = myData.mEndHue; + myData.mEndHue = temp; } } @@ -378,21 +378,21 @@ void lggBeamColorMapFloater::onClickSave() void lggBeamColorMapFloater::onClickCancel() { - closeFloater(); + closeFloater(); } void lggBeamColorMapFloater::onClickLoad() { LLFilePicker& picker = LLFilePicker::instance(); - if(!picker.getOpenFile(LLFilePicker::FFLOAD_XML)) + if (!picker.getOpenFile(LLFilePicker::FFLOAD_XML)) { - return; + return; } LLSD minedata; llifstream importer(picker.getFirstFile()); LLSDSerialize::fromXMLDocument(minedata, importer); myData = lggBeamsColors::fromLLSD(minedata); - childSetValue("BeamColor_Speed",/*self->*/myData.rotateSpeed*100); + childSetValue("BeamColor_Speed", myData.mRotateSpeed * 100); } diff --git a/indra/newview/lggbeammaps.cpp b/indra/newview/lggbeammaps.cpp index 35b028c788..e44956294b 100644 --- a/indra/newview/lggbeammaps.cpp +++ b/indra/newview/lggbeammaps.cpp @@ -22,11 +22,12 @@ #include "llviewercontrol.h" #include "llhudeffecttrail.h" #include "llhudmanager.h" -//using namespace std; #include "message.h" #include +static const std::string BEAMS_OFF = "===OFF==="; + lggBeamMaps gLggBeamMaps; F32 hueToRgb ( F32 val1In, F32 val2In, F32 valHUeIn ) { @@ -38,6 +39,17 @@ F32 hueToRgb ( F32 val1In, F32 val2In, F32 valHUeIn ) return ( val1In ); } +std::string unescape_name(const std::string& name) +{ + // bugfix for SL-46920: preventing filenames that break stuff. + char * curl_str = curl_unescape(name.c_str(), name.size()); + std::string unescaped_name(curl_str); + curl_free(curl_str); + curl_str = NULL; + + return unescaped_name; +} + void hslToRgb ( F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32& bValOut ) { if ( sValIn < 0.00001f ) @@ -52,9 +64,13 @@ void hslToRgb ( F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32 interVal2; if ( lValIn < 0.5f ) + { interVal2 = lValIn * ( 1.0f + sValIn ); + } else + { interVal2 = ( lValIn + sValIn ) - ( sValIn * lValIn ); + } interVal1 = 2.0f * lValIn - interVal2; @@ -64,30 +80,28 @@ void hslToRgb ( F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, } } - - -LLSD lggBeamMaps::getPic(std::string filename) +LLSD lggBeamMaps::getPic(const std::string& filename) { LLSD data; llifstream importer(filename); LLSDSerialize::fromXMLDocument(data, importer); return data; - } -LLColor4U lggBeamMaps::getCurrentColor(LLColor4U agentColor) + +LLColor4U lggBeamMaps::getCurrentColor(const LLColor4U& agentColor) { static LLCachedControl settingName(gSavedSettings, "FSBeamColorFile"); std::string setName(settingName); - if (setName == "===OFF===") + if (setName == BEAMS_OFF) { return agentColor; } - if (setName != lastColorFileName) + if (setName != mLastColorFileName) { - lastColorFileName = settingName; + mLastColorFileName = settingName; std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "beamsColors", "")); std::string path_name2(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS , "beamsColors", "")); @@ -101,24 +115,22 @@ LLColor4U lggBeamMaps::getCurrentColor(LLColor4U agentColor) } } - lastColorsData = lggBeamsColors::fromLLSD(getPic(filename)); + mLastColorsData = lggBeamsColors::fromLLSD(getPic(filename)); } - agentColor = beamColorFromData(lastColorsData); - return agentColor; + return beamColorFromData(mLastColorsData); } static LLFrameTimer timer; -LLColor4U lggBeamMaps::beamColorFromData(lggBeamsColors data) +LLColor4U lggBeamMaps::beamColorFromData(const lggBeamsColors& data) { - F32 r, g, b; LLColor4 output; LLColor4U toReturn; - F32 timeinc = timer.getElapsedTimeF32()*0.3f*((data.rotateSpeed+.01f)) * (360/(data.endHue-data.startHue)); + F32 timeinc = timer.getElapsedTimeF32() * 0.3f * ((data.mRotateSpeed + .01f)) * (360 / (data.mEndHue - data.mStartHue)); - S32 diference = llround(data.endHue - data.startHue); - if(diference == 360 || diference == 720) + S32 diference = llround(data.mEndHue - data.mStartHue); + if (diference == 360 || diference == 720) { //full rainbow //liner one @@ -126,37 +138,36 @@ LLColor4U lggBeamMaps::beamColorFromData(lggBeamsColors data) } else { - F32 variance = ((data.endHue/360.0f)-(data.startHue/360.0f))/2.0f; - hslToRgb((data.startHue/360.0f) + variance + (sinf(timeinc)*(variance)), 1.0f, 0.5f, r, g, b); + F32 variance = ((data.mEndHue / 360.0f) - (data.mStartHue / 360.0f)) / 2.0f; + hslToRgb((data.mStartHue / 360.0f) + variance + (sinf(timeinc) * variance), 1.0f, 0.5f, r, g, b); } output.set(r, g, b); toReturn.setVecScaleClamp(output); return toReturn; - } -void lggBeamMaps::fireCurrentBeams(LLPointer mBeam, LLColor4U rgb) + +void lggBeamMaps::fireCurrentBeams(LLPointer mBeam, const LLColor4U& rgb) { - if (scale == 0.0f) + if (mScale == 0.0f) { return; } static LLCachedControl colorf(gSavedSettings, "FSBeamColorFile"); - bool colorsDisabled = std::string(colorf) == "===OFF==="; + bool colorsDisabled = (colorf() == BEAMS_OFF); - for(int i = 0; i < (int)dots.size(); i++) + for (S32 i = 0; i < mDots.size(); ++i) { LLColor4U myColor = rgb; - if (colorsDisabled) myColor = dots[i].c; + if (colorsDisabled) myColor = mDots[i].c; - F32 distanceAdjust = dist_vec(mBeam->getPositionGlobal(),gAgent.getPositionGlobal()) ; - F32 pulse = (F32)(.75f+sinf(gFrameTimeSeconds*1.0f)*0.25f); - LLVector3d offset = dots[i].p; - offset.mdV[VY] *= -1; - offset *= pulse * scale * distanceAdjust * 0.1; + F32 distanceAdjust = dist_vec(mBeam->getPositionGlobal(), gAgent.getPositionGlobal()); + F32 pulse = (F32)(.75f + sinf(gFrameTimeSeconds * 1.0f) * 0.25f); + LLVector3d offset = mDots[i].p; + offset.mdV[VY] *= -1.f; + offset *= pulse * mScale * distanceAdjust * 0.1f; - //llinfos << "dist is " << distanceAdjust << "scale is " << scale << llendl; LLVector3 beamLine = LLVector3( mBeam->getPositionGlobal() - gAgent.getPositionGlobal()); LLVector3 beamLineFlat = beamLine; beamLineFlat.mV[VZ]= 0.0f; @@ -165,243 +176,183 @@ void lggBeamMaps::fireCurrentBeams(LLPointer mBeam, LLColor4U beamLine.normalize(); beamLineFlat.normalize(); LLQuaternion change; - change.shortestArc(newDirFlat,beamLineFlat); + change.shortestArc(newDirFlat, beamLineFlat); offset.rotVec(change); newDirFlat.rotVec(change); - change.shortestArc(newDirFlat,beamLine); + change.shortestArc(newDirFlat, beamLine); offset.rotVec(change); - LLPointer myBeam = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM); - myBeam->setPositionGlobal(mBeam->getPositionGlobal() + offset + (LLVector3d(beamLine) * sinf(gFrameTimeSeconds*2.0f) * 0.2f)); + LLPointer myBeam = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM); + myBeam->setPositionGlobal(mBeam->getPositionGlobal() + offset + (LLVector3d(beamLine) * sinf(gFrameTimeSeconds * 2.0f) * 0.2f)); myBeam->setColor(myColor); myBeam->setTargetObject(mBeam->getTargetObject()); myBeam->setSourceObject(mBeam->getSourceObject()); myBeam->setNeedsSendToSim(mBeam->getNeedsSendToSim()); - myBeam->setDuration(duration* 1.2f); + myBeam->setDuration(mDuration * 1.2f); } } void lggBeamMaps::forceUpdate() { - dots.clear(); - scale = 0.0f; - lastFileName=""; + mDots.clear(); + mScale = 0.0f; + mLastFileName = ""; } F32 lggBeamMaps::setUpAndGetDuration() { static LLCachedControl settingNameCached(gSavedSettings, "FSBeamShape"); std::string settingName(settingNameCached); - if(settingName != lastFileName) - { - lastFileName = settingName; - if( settingName != "===OFF===" && settingName != "") - { + if (settingName != mLastFileName) + { + mLastFileName = settingName; + if (settingName != BEAMS_OFF && settingName != "") + { std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "beams", "")); std::string path_name2(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS , "beams", "")); std::string filename = path_name + settingName + ".xml"; if (!gDirUtilp->fileExists(filename)) { - filename =path_name2 + settingName +".xml"; + filename = path_name2 + settingName + ".xml"; } + LLSD mydata = getPic(filename); - scale = (F32)mydata["scale"].asReal()/10.0f; - LLSD myPicture = mydata["data"]; - dots.clear(); - for (int i = 0; i < myPicture.size(); i++) + mScale = (F32)mydata["scale"].asReal() / 10.0f; + LLSD myPicture = mydata["data"]; + mDots.clear(); + for (S32 i = 0; i < myPicture.size(); ++i) { LLSD beamData = myPicture[i]; lggBeamData dot; dot.p = LLVector3d(beamData["offset"]); - // Attempt to speed up things a little - // dot.p *= (gSavedSettings.getF32("FSBeamShapeScale")*2.0f); static LLCachedControl FSBeamShapeScale(gSavedSettings, "FSBeamShapeScale"); - dot.p *= (FSBeamShapeScale*2.0f); - // + dot.p *= (FSBeamShapeScale * 2.0f); LLColor4 color = LLColor4(beamData["color"]); dot.c = LLColor4U(color); - dots.push_back(dot); + mDots.push_back(dot); } - // Attempt to speed up things a little - // F32 maxBPerQS = gSavedSettings.getF32("FSMaxBeamsPerSecond") / 4.0f; static LLCachedControl FSMaxBeamsPerSecond(gSavedSettings, "FSMaxBeamsPerSecond"); F32 maxBPerQS = FSMaxBeamsPerSecond / 4.0f; - // - duration = llceil((F32)(myPicture.size()) / maxBPerQS) * 0.25f; - llinfos << "reading it all now size is " << myPicture.size() << " and duration is " << duration << llendl; - + mDuration = llceil((F32)(myPicture.size()) / maxBPerQS) * 0.25f; + LL_INFOS("LGG_Beams") << "reading it all now size is " << myPicture.size() << " and duration is " << mDuration << LL_ENDL; } else { - dots.clear(); - scale = 0.0f;//used as a flag too - duration = 0.25f; + mDots.clear(); + mScale = 0.0f; //used as a flag too + mDuration = 0.25f; } - } - //llinfos << "sent final dur of " << duration << llendl; - - return duration; -} + return mDuration; +} std::vector lggBeamMaps::getFileNames() { - std::vector names; std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "beams", "")); - bool found = true; - while(found) + bool found = true; + + while (found) { std::string name; found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name); - if(found) + if (found) { - - name=name.erase(name.length()-4); - - // bugfix for SL-46920: preventing filenames that break stuff. - char * curl_str = curl_unescape(name.c_str(), name.size()); - std::string unescaped_name(curl_str); - curl_free(curl_str); - curl_str = NULL; - - names.push_back(name); - - //LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL; - //loadPreset(unescaped_name,FALSE); + name = name.erase(name.length() - 4); + names.push_back(unescape_name(name)); } } + std::string path_name2(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "beams", "")); - found = true; - while(found) + found = true; + while (found) { std::string name; found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name); - if(found) + if (found) { - - name=name.erase(name.length()-4); - - // bugfix for SL-46920: preventing filenames that break stuff. - char * curl_str = curl_unescape(name.c_str(), name.size()); - std::string unescaped_name(curl_str); - curl_free(curl_str); - curl_str = NULL; - - names.push_back(name); - - //LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL; - //loadPreset(unescaped_name,FALSE); + name = name.erase(name.length() - 4); + names.push_back(unescape_name(name)); } } return names; - - - } std::vector lggBeamMaps::getColorsFileNames() { - - std::vector names; + std::vector names; std::string path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "beamsColors", "")); - bool found = true; - while(found) + bool found = true; + + while (found) { std::string name; found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name); - if(found) + if (found) { - - name=name.erase(name.length()-4); - - // bugfix for SL-46920: preventing filenames that break stuff. - char * curl_str = curl_unescape(name.c_str(), name.size()); - std::string unescaped_name(curl_str); - curl_free(curl_str); - curl_str = NULL; - - names.push_back(name); - - //LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL; - //loadPreset(unescaped_name,FALSE); + name = name.erase(name.length() - 4); + names.push_back(unescape_name(name)); } } + std::string path_name2(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "beamsColors", "")); - found = true; - while(found) + found = true; + + while (found) { std::string name; found = gDirUtilp->getNextFileInDir(path_name2, "*.xml", name); - if(found) + if (found) { - - name=name.erase(name.length()-4); - - // bugfix for SL-46920: preventing filenames that break stuff. - char * curl_str = curl_unescape(name.c_str(), name.size()); - std::string unescaped_name(curl_str); - curl_free(curl_str); - curl_str = NULL; - - names.push_back(name); - - //LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL; - //loadPreset(unescaped_name,FALSE); + name = name.erase(name.length() - 4); + names.push_back(unescape_name(name)); } } return names; - - - } + void lggBeamMaps::stopBeamChat() { - // Attempt to speed up things a little - // if(gSavedSettings.getBOOL("FSParticleChat")) static LLCachedControl FSParticleChat(gSavedSettings, "FSParticleChat"); - if(FSParticleChat) - // + if (FSParticleChat) { - if(sPartsNow != FALSE) + if (mPartsNow) { - sPartsNow = FALSE; + mPartsNow = false; LLMessageSystem* msg = gMessageSystem; msg->newMessageFast(_PREHASH_ChatFromViewer); msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->addUUIDFast(_PREHASH_AgentID, gAgentID); + msg->addUUIDFast(_PREHASH_SessionID, gAgentSessionID); msg->nextBlockFast(_PREHASH_ChatData); msg->addStringFast(_PREHASH_Message, "stop"); msg->addU8Fast(_PREHASH_Type, 0); msg->addS32("Channel", 9000); gAgent.sendReliableMessage(); - sBeamLastAt = LLVector3d::zero; + mBeamLastAt = LLVector3d::zero; } } } -void lggBeamMaps::updateBeamChat(LLVector3d currentPos) + +void lggBeamMaps::updateBeamChat(const LLVector3d& currentPos) { - // Attempt to speed up things a little - // if(gSavedSettings.getBOOL("FSParticleChat")) static LLCachedControl FSParticleChat(gSavedSettings, "FSParticleChat"); - if(FSParticleChat) - // + if (FSParticleChat) { - if(sPartsNow != TRUE) + if (!mPartsNow) { - sPartsNow = TRUE; + mPartsNow = true; LLMessageSystem* msg = gMessageSystem; msg->newMessageFast(_PREHASH_ChatFromViewer); msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->addUUIDFast(_PREHASH_AgentID, gAgentID); + msg->addUUIDFast(_PREHASH_SessionID, gAgentSessionID); msg->nextBlockFast(_PREHASH_ChatData); msg->addStringFast(_PREHASH_Message, "start"); msg->addU8Fast(_PREHASH_Type, 0); @@ -409,26 +360,23 @@ void lggBeamMaps::updateBeamChat(LLVector3d currentPos) gAgent.sendReliableMessage(); } - //LLVector3d a = sBeamLastAt-gAgent.mPointAt->getPointAtPosGlobal(); - //if(a.length > 2) - if( (sBeamLastAt-currentPos).length() > .2) - //if(sBeamLastAt!=gAgent.mPointAt->getPointAtPosGlobal()) + + if ((mBeamLastAt - currentPos).length() > .2f) { - sBeamLastAt = currentPos; + mBeamLastAt = currentPos; LLMessageSystem* msg = gMessageSystem; msg->newMessageFast(_PREHASH_ChatFromViewer); msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->addUUIDFast(_PREHASH_AgentID, gAgentID); + msg->addUUIDFast(_PREHASH_SessionID, gAgentSessionID); msg->nextBlockFast(_PREHASH_ChatData); - msg->addStringFast(_PREHASH_Message, llformat("<%.6f, %.6f, %.6f>",(F32)(sBeamLastAt.mdV[VX]),(F32)(sBeamLastAt.mdV[VY]),(F32)(sBeamLastAt.mdV[VZ]))); + msg->addStringFast(_PREHASH_Message, llformat("<%.6f, %.6f, %.6f>",(F32)(mBeamLastAt.mdV[VX]), (F32)(mBeamLastAt.mdV[VY]), (F32)(mBeamLastAt.mdV[VZ]))); msg->addU8Fast(_PREHASH_Type, 0); msg->addS32("Channel", 9000); // *TODO: make configurable gAgent.sendReliableMessage(); } - } } diff --git a/indra/newview/lggbeammaps.h b/indra/newview/lggbeammaps.h index 5fa1414224..4135fbec95 100644 --- a/indra/newview/lggbeammaps.h +++ b/indra/newview/lggbeammaps.h @@ -18,40 +18,49 @@ #include "llviewerprecompiledheaders.h" #include "lggbeamscolors.h" #include "llframetimer.h" + class lggBeamData { - public: - LLVector3d p; - LLColor4U c; - -}; -class lggBeamMaps -{ - public: - lggBeamMaps():lastFileName(""),scale(0.0f),duration(0.25f),sPartsNow(FALSE),sBeamLastAt(LLVector3d::zero){} - ~lggBeamMaps() {} - public: - F32 setUpAndGetDuration(); - void fireCurrentBeams(LLPointer, LLColor4U rgb); - void forceUpdate(); - static LLColor4U beamColorFromData(lggBeamsColors data); - LLColor4U getCurrentColor(LLColor4U agentColor); - std::vector getFileNames(); - std::vector getColorsFileNames(); - void stopBeamChat(); - void updateBeamChat(LLVector3d currentPos); - private: - LLSD getPic(std::string filename); - std::string lastFileName; - std::string lastColorFileName; - BOOL sPartsNow; - LLVector3d sBeamLastAt; - lggBeamsColors lastColorsData; - F32 duration; - F32 scale; - std::vector dots; +public: + LLVector3d p; + LLColor4U c; }; +class lggBeamMaps +{ +public: + lggBeamMaps() : + mLastFileName(""), + mScale(0.0f), + mDuration(0.25f), + mPartsNow(false), + mBeamLastAt(LLVector3d::zero) + {} + ~lggBeamMaps() {} + + F32 setUpAndGetDuration(); + void fireCurrentBeams(LLPointer, const LLColor4U& rgb); + void forceUpdate(); + void stopBeamChat(); + void updateBeamChat(const LLVector3d& currentPos); + static LLColor4U beamColorFromData(const lggBeamsColors& data); + LLColor4U getCurrentColor(const LLColor4U& agentColor); + std::vector getFileNames(); + std::vector getColorsFileNames(); + +private: + LLSD getPic(const std::string& filename); + + std::string mLastFileName; + std::string mLastColorFileName; + lggBeamsColors mLastColorsData; + F32 mDuration; + F32 mScale; + bool mPartsNow; + LLVector3d mBeamLastAt; + + std::vector mDots; +}; extern lggBeamMaps gLggBeamMaps; diff --git a/indra/newview/lggbeamscolors.cpp b/indra/newview/lggbeamscolors.cpp index 5c65882d46..78513dd73e 100644 --- a/indra/newview/lggbeamscolors.cpp +++ b/indra/newview/lggbeamscolors.cpp @@ -18,44 +18,56 @@ #include "llviewerprecompiledheaders.h" #include "lggbeamscolors.h" -lggBeamsColors lggBeamsColors::fromLLSD(LLSD inputData) +lggBeamsColors lggBeamsColors::fromLLSD(const LLSD& inputData) { - lggBeamsColors toReturn; - if(inputData.has("startHue")) toReturn.startHue = (F32)inputData["startHue"].asReal(); - if(inputData.has("endHue")) toReturn.endHue = (F32)inputData["endHue"].asReal(); - if(inputData.has("rotateSpeed")) toReturn.rotateSpeed = (F32)inputData["rotateSpeed"].asReal(); + if (inputData.has("startHue")) + { + toReturn.mStartHue = (F32)inputData["startHue"].asReal(); + } + + if (inputData.has("endHue")) + { + toReturn.mEndHue = (F32)inputData["endHue"].asReal(); + } + + if (inputData.has("rotateSpeed")) + { + toReturn.mRotateSpeed = (F32)inputData["rotateSpeed"].asReal(); + } return toReturn; } + LLSD lggBeamsColors::toLLSD() { - LLSD out; - out["startHue"]=startHue; - out["endHue"]=endHue; - out["rotateSpeed"]=rotateSpeed; + out["startHue"] = mStartHue; + out["endHue"] = mEndHue; + out["rotateSpeed"] = mRotateSpeed; return out; } std::string lggBeamsColors::toString() { + return llformat("Start Hue %d\nEnd Hue is %d\nRotate Speed is %d", mStartHue, mEndHue, mRotateSpeed); +} - return llformat("Start Hue %d\nEnd Hue is %d\nRotate Speed is %d", - startHue,endHue,rotateSpeed - - ); -} -lggBeamsColors::lggBeamsColors(F32 istartHue, F32 iendHue, F32 irotateSpeed): -startHue(istartHue),endHue(iendHue),rotateSpeed(irotateSpeed) +lggBeamsColors::lggBeamsColors(F32 startHue, F32 endHue, F32 rotateSpeed) : + mStartHue(startHue), + mEndHue(endHue), + mRotateSpeed(rotateSpeed) { } + lggBeamsColors::lggBeamsColors(): -startHue(0.0f),endHue(360.0f),rotateSpeed(1.0f) + mStartHue(0.0f), + mEndHue(360.0f), + mRotateSpeed(1.0f) { } + lggBeamsColors::~lggBeamsColors() { - } diff --git a/indra/newview/lggbeamscolors.h b/indra/newview/lggbeamscolors.h index eedd82f501..e86a742ef9 100644 --- a/indra/newview/lggbeamscolors.h +++ b/indra/newview/lggbeamscolors.h @@ -22,20 +22,17 @@ class lggBeamsColors { public: - lggBeamsColors( - F32 istartHue, - F32 iendHue, - F32 irotateSpeed); + lggBeamsColors(F32 startHue, F32 endHue, F32 rotateSpeed); lggBeamsColors(); ~lggBeamsColors(); - F32 startHue; - F32 endHue; - F32 rotateSpeed; -public: + F32 mStartHue; + F32 mEndHue; + F32 mRotateSpeed; + LLSD toLLSD(); - static lggBeamsColors fromLLSD(LLSD inputData); + static lggBeamsColors fromLLSD(const LLSD& inputData); std::string toString(); // List sorted by name.