More poking at and refactoring of LGG's beams stuff
parent
df8c503828
commit
a443eb7bcb
|
|
@ -25,48 +25,12 @@
|
|||
|
||||
F32 convertXToHue(S32 place)
|
||||
{
|
||||
return ((place-6)/396.0f)*720.0f;
|
||||
return ((place - 6) / 396.0f) * 720.0f;
|
||||
}
|
||||
|
||||
S32 convertHueToX(F32 place)
|
||||
{
|
||||
return llround((place/720.0f)*396.0f)+6;
|
||||
}
|
||||
|
||||
F32 hueToRgb1 ( F32 val1In, F32 val2In, F32 valHUeIn )
|
||||
{
|
||||
if ( valHUeIn < 0.0f ) valHUeIn += 1.0f;
|
||||
if ( valHUeIn > 1.0f ) valHUeIn -= 1.0f;
|
||||
if ( ( 6.0f * valHUeIn ) < 1.0f ) return ( val1In + ( val2In - val1In ) * 6.0f * valHUeIn );
|
||||
if ( ( 2.0f * valHUeIn ) < 1.0f ) return ( val2In );
|
||||
if ( ( 3.0f * valHUeIn ) < 2.0f ) return ( val1In + ( val2In - val1In ) * ( ( 2.0f / 3.0f ) - valHUeIn ) * 6.0f );
|
||||
return ( val1In );
|
||||
}
|
||||
|
||||
void hslToRgb1 ( F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32& bValOut )
|
||||
{
|
||||
if ( sValIn < 0.00001f )
|
||||
{
|
||||
rValOut = lValIn;
|
||||
gValOut = lValIn;
|
||||
bValOut = lValIn;
|
||||
}
|
||||
else
|
||||
{
|
||||
F32 interVal1;
|
||||
F32 interVal2;
|
||||
|
||||
if ( lValIn < 0.5f )
|
||||
interVal2 = lValIn * ( 1.0f + sValIn );
|
||||
else
|
||||
interVal2 = ( lValIn + sValIn ) - ( sValIn * lValIn );
|
||||
|
||||
interVal1 = 2.0f * lValIn - interVal2;
|
||||
|
||||
rValOut = hueToRgb1 ( interVal1, interVal2, hValIn + ( 1.f / 3.f ) );
|
||||
gValOut = hueToRgb1 ( interVal1, interVal2, hValIn );
|
||||
bValOut = hueToRgb1 ( interVal1, interVal2, hValIn - ( 1.f / 3.f ) );
|
||||
}
|
||||
return llround((place / 720.0f) * 396.0f) + 6;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -89,9 +53,8 @@ void lggBeamColorMapFloater::draw()
|
|||
static const std::string end_hue_label = getString("end_hue");
|
||||
|
||||
//set the color of the preview thing
|
||||
LLColorSwatchCtrl* colorctrl = getChild<LLColorSwatchCtrl>("BeamColor_Preview");
|
||||
LLColor4 bColor = LLColor4(lggBeamMaps::beamColorFromData(myData));
|
||||
colorctrl->set(bColor, TRUE);
|
||||
mBeamColorPreview->set(bColor, TRUE);
|
||||
|
||||
//Try draw rectangle attach beam
|
||||
LLRect swatch_rect;
|
||||
|
|
@ -140,8 +103,8 @@ void lggBeamColorMapFloater::draw()
|
|||
gGL.end();
|
||||
}
|
||||
|
||||
F32 opacity = gSavedSettings.getF32("PickerContextOpacity");
|
||||
mContextConeOpacity = lerp(mContextConeOpacity, opacity, LLCriticalDamp::getInterpolant(CONTEXT_FADE_TIME));
|
||||
static LLCachedControl<F32> opacity(gSavedSettings, "PickerContextOpacity");
|
||||
mContextConeOpacity = lerp(mContextConeOpacity, opacity(), LLCriticalDamp::getInterpolant(CONTEXT_FADE_TIME));
|
||||
|
||||
//Draw Base Stuff
|
||||
LLFloater::draw();
|
||||
|
|
@ -153,16 +116,14 @@ void lggBeamColorMapFloater::draw()
|
|||
for (S32 i = 0; i <= 720; ++i)
|
||||
{
|
||||
S32 hi = i % 360;
|
||||
hslToRgb1((hi / 360.0f), 1.0f, 0.5f, r, g, b);
|
||||
hslToRgb((hi / 360.0f), 1.0f, 0.5f, r, g, b);
|
||||
output.set(r, g, b);
|
||||
|
||||
gl_line_2d(
|
||||
convertHueToX(i) + CORRECTION_X, 201 + CORRECTION_Y,
|
||||
convertHueToX(i) + CORRECTION_X, 277 + CORRECTION_Y, output);
|
||||
//convertHueToX(i),161,
|
||||
//convertHueToX(i),237,output);
|
||||
|
||||
}
|
||||
|
||||
S32 X1 = convertHueToX(myData.mStartHue) + CORRECTION_X;
|
||||
S32 X2 = convertHueToX(myData.mEndHue) + CORRECTION_X;
|
||||
LLFontGL* font = LLFontGL::getFontSansSerifSmall();
|
||||
|
|
@ -186,12 +147,11 @@ void lggBeamColorMapFloater::draw()
|
|||
|
||||
font->renderUTF8(
|
||||
start_hue_label, 0,
|
||||
X1 + CORRECTION_X,
|
||||
X1 + CORRECTION_X,
|
||||
212 + CORRECTION_Y,
|
||||
LLColor4::white, LLFontGL::HCENTER,
|
||||
LLFontGL::BASELINE, LLFontGL::DROP_SHADOW);
|
||||
|
||||
|
||||
gGL.color4fv(LLColor4::white.mV);
|
||||
gl_circle_2d(X2 + CORRECTION_X, 238 + CORRECTION_Y, 9.0f, 30, false);
|
||||
|
||||
|
|
@ -211,7 +171,7 @@ void lggBeamColorMapFloater::draw()
|
|||
|
||||
font->renderUTF8(
|
||||
end_hue_label, 0,
|
||||
X2 + CORRECTION_X,
|
||||
X2 + CORRECTION_X,
|
||||
212 + CORRECTION_Y,
|
||||
LLColor4::white, LLFontGL::HCENTER,
|
||||
LLFontGL::BASELINE, LLFontGL::DROP_SHADOW);
|
||||
|
|
@ -223,14 +183,14 @@ lggBeamColorMapFloater::~lggBeamColorMapFloater()
|
|||
{
|
||||
}
|
||||
|
||||
lggBeamColorMapFloater::lggBeamColorMapFloater(const LLSD& seed): LLFloater(seed),
|
||||
lggBeamColorMapFloater::lggBeamColorMapFloater(const LLSD& seed) : LLFloater(seed),
|
||||
mContextConeOpacity(0.0f)
|
||||
{
|
||||
}
|
||||
|
||||
BOOL lggBeamColorMapFloater::postBuild(void)
|
||||
BOOL lggBeamColorMapFloater::postBuild()
|
||||
{
|
||||
setCanMinimize(false);
|
||||
setCanMinimize(FALSE);
|
||||
|
||||
getChild<LLUICtrl>("BeamColor_Save")->setCommitCallback(boost::bind(&lggBeamColorMapFloater::onClickSave, this));
|
||||
getChild<LLUICtrl>("BeamColor_Load")->setCommitCallback(boost::bind(&lggBeamColorMapFloater::onClickLoad, this));
|
||||
|
|
@ -238,19 +198,16 @@ BOOL lggBeamColorMapFloater::postBuild(void)
|
|||
|
||||
mColorSlider = getChild<LLSliderCtrl>("BeamColor_Speed");
|
||||
mColorSlider->setCommitCallback(boost::bind(&lggBeamColorMapFloater::onClickSlider, this));
|
||||
|
||||
// Is this still needed???
|
||||
//mColorSlider->setCallbackUserData(this);
|
||||
|
||||
mBeamColorPreview = getChild<LLColorSwatchCtrl>("BeamColor_Preview");
|
||||
|
||||
fixOrder();
|
||||
|
||||
return true;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL lggBeamColorMapFloater::handleMouseDown(S32 x,S32 y,MASK mask)
|
||||
{
|
||||
//6, 277
|
||||
//402 201
|
||||
|
||||
if (y > (201 + CORRECTION_Y) && y < (277 + CORRECTION_Y))
|
||||
{
|
||||
if (x < (6 + CORRECTION_X))
|
||||
|
|
@ -269,7 +226,7 @@ BOOL lggBeamColorMapFloater::handleMouseDown(S32 x,S32 y,MASK mask)
|
|||
fixOrder();
|
||||
}
|
||||
|
||||
LL_INFOS() << "we got clicked at (" << x << ", " << y << " yay! " << LL_ENDL;
|
||||
LL_DEBUGS() << "we got clicked at (" << x << ", " << y << " yay! " << LL_ENDL;
|
||||
|
||||
return LLFloater::handleMouseDown(x, y, mask);
|
||||
}
|
||||
|
|
@ -293,7 +250,7 @@ BOOL lggBeamColorMapFloater::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
|||
|
||||
fixOrder();
|
||||
}
|
||||
LL_INFOS() << "we got right clicked at (" << x << ", " << y << " yay! " << LL_ENDL;
|
||||
LL_DEBUGS() << "we got right clicked at (" << x << ", " << y << " yay! " << LL_ENDL;
|
||||
|
||||
return LLFloater::handleRightMouseDown(x, y, mask);
|
||||
}
|
||||
|
|
@ -332,7 +289,7 @@ void lggBeamColorMapFloater::onClickSave()
|
|||
std::string path_name2(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "beamsColors", ""));
|
||||
|
||||
std::string filename=path_name2 + "myNewBeamColor.xml";
|
||||
if(!picker.getSaveFile( LLFilePicker::FFSAVE_BEAM, filename ) )
|
||||
if (!picker.getSaveFile(LLFilePicker::FFSAVE_BEAM, filename))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
#include "lggbeamscolors.h"
|
||||
|
||||
class FSPanelPrefs;
|
||||
class LLColorSwatchCtrl;
|
||||
class LLSliderCtrl;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -29,7 +30,7 @@ public:
|
|||
lggBeamColorMapFloater(const LLSD& seed);
|
||||
virtual ~lggBeamColorMapFloater();
|
||||
|
||||
BOOL postBuild(void);
|
||||
BOOL postBuild();
|
||||
BOOL handleMouseDown(S32 x,S32 y,MASK mask);
|
||||
BOOL handleRightMouseDown(S32 x,S32 y,MASK mask);
|
||||
|
||||
|
|
@ -47,10 +48,11 @@ protected:
|
|||
void fixOrder();
|
||||
LLSD getMyDataSerialized();
|
||||
|
||||
F32 mContextConeOpacity;
|
||||
FSPanelPrefs* mFSPanel;
|
||||
lggBeamsColors myData;
|
||||
LLSliderCtrl* mColorSlider;
|
||||
F32 mContextConeOpacity;
|
||||
FSPanelPrefs* mFSPanel;
|
||||
lggBeamsColors myData;
|
||||
LLSliderCtrl* mColorSlider;
|
||||
LLColorSwatchCtrl* mBeamColorPreview;
|
||||
};
|
||||
|
||||
#endif // LGG_BEAMCOLORMAPFLOATER_H
|
||||
|
|
|
|||
|
|
@ -76,12 +76,11 @@ void lggBeamMapFloater::draw()
|
|||
gGL.end();
|
||||
}
|
||||
|
||||
F32 opacity = gSavedSettings.getF32("PickerContextOpacity");
|
||||
mContextConeOpacity = lerp(mContextConeOpacity, opacity, LLCriticalDamp::getInterpolant(CONTEXT_FADE_TIME));
|
||||
static LLCachedControl<F32> opacity(gSavedSettings, "PickerContextOpacity");
|
||||
mContextConeOpacity = lerp(mContextConeOpacity, opacity(), LLCriticalDamp::getInterpolant(CONTEXT_FADE_TIME));
|
||||
|
||||
//getChild<LLPanel>("beamshape_draw")->setBackgroundColor(getChild<LLColorSwatchCtrl>("back_color_swatch")->get());
|
||||
LLFloater::draw();
|
||||
LLRect rec = getChild<LLPanel>("beamshape_draw")->getRect();
|
||||
LLRect rec = mBeamshapePanel->getRect();
|
||||
|
||||
gGL.pushMatrix();
|
||||
gGL.color4fv(LLColor4::white.mV);
|
||||
|
|
@ -115,14 +114,14 @@ lggBeamMapFloater::~lggBeamMapFloater()
|
|||
{
|
||||
}
|
||||
|
||||
lggBeamMapFloater::lggBeamMapFloater(const LLSD& seed): LLFloater(seed),
|
||||
lggBeamMapFloater::lggBeamMapFloater(const LLSD& seed) : LLFloater(seed),
|
||||
mContextConeOpacity(0.0f)
|
||||
{
|
||||
}
|
||||
|
||||
BOOL lggBeamMapFloater::postBuild(void)
|
||||
BOOL lggBeamMapFloater::postBuild()
|
||||
{
|
||||
setCanMinimize(false);
|
||||
setCanMinimize(FALSE);
|
||||
|
||||
getChild<LLUICtrl>("beamshape_save")->setCommitCallback(boost::bind(&lggBeamMapFloater::onClickSave, this));
|
||||
getChild<LLUICtrl>("beamshape_clear")->setCommitCallback(boost::bind(&lggBeamMapFloater::onClickClear, this));
|
||||
|
|
@ -131,23 +130,25 @@ BOOL lggBeamMapFloater::postBuild(void)
|
|||
getChild<LLColorSwatchCtrl>("back_color_swatch")->setCommitCallback(boost::bind(&lggBeamMapFloater::onBackgroundChange, this));
|
||||
getChild<LLColorSwatchCtrl>("beam_color_swatch")->setColor(LLColor4::red);
|
||||
|
||||
return true;
|
||||
mBeamshapePanel = getChild<LLPanel>("beamshape_draw");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL lggBeamMapFloater::handleMouseDown(S32 x,S32 y,MASK mask)
|
||||
BOOL lggBeamMapFloater::handleMouseDown(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
if (y > 39 && x > 16 && x < 394 && y < 317)
|
||||
{
|
||||
lggPoint a;
|
||||
a.x = x;
|
||||
a.y = y;
|
||||
a.c= getChild<LLColorSwatchCtrl>("beam_color_swatch")->get();
|
||||
a.c = getChild<LLColorSwatchCtrl>("beam_color_swatch")->get();
|
||||
mDots.push_back(a);
|
||||
|
||||
LL_INFOS() << "we got clicked at (" << x << ", " << y << " and color was " << a.c << LL_ENDL;
|
||||
LL_DEBUGS() << "we got clicked at (" << x << ", " << y << " and color was " << a.c << LL_ENDL;
|
||||
}
|
||||
|
||||
return LLFloater::handleMouseDown(x,y,mask);
|
||||
return LLFloater::handleMouseDown(x, y, mask);
|
||||
}
|
||||
|
||||
void lggBeamMapFloater::setData(void* data)
|
||||
|
|
@ -178,13 +179,13 @@ BOOL lggBeamMapFloater::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
|||
|
||||
void lggBeamMapFloater::onBackgroundChange()
|
||||
{
|
||||
getChild<LLPanel>("beamshape_draw")->setBackgroundColor(getChild<LLColorSwatchCtrl>("back_color_swatch")->get());
|
||||
mBeamshapePanel->setBackgroundColor(getChild<LLColorSwatchCtrl>("back_color_swatch")->get());
|
||||
}
|
||||
|
||||
LLSD lggBeamMapFloater::getMyDataSerialized()
|
||||
{
|
||||
LLSD out;
|
||||
LLRect r = getChild<LLPanel>("beamshape_draw")->getRect();
|
||||
LLRect r = mBeamshapePanel->getRect();
|
||||
for (S32 i = 0; i < mDots.size(); ++i)
|
||||
{
|
||||
LLSD point;
|
||||
|
|
@ -202,7 +203,7 @@ LLSD lggBeamMapFloater::getMyDataSerialized()
|
|||
|
||||
void lggBeamMapFloater::onClickSave()
|
||||
{
|
||||
LLRect r = getChild<LLPanel>("beamshape_draw")->getRect();
|
||||
LLRect r = mBeamshapePanel->getRect();
|
||||
LLFilePicker& picker = LLFilePicker::instance();
|
||||
|
||||
std::string path_name2(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS , "beams", ""));
|
||||
|
|
@ -252,7 +253,7 @@ void lggBeamMapFloater::onClickLoad()
|
|||
|
||||
for (LLSD::array_iterator it = myPicture.beginArray(); it != myPicture.endArray(); ++it)
|
||||
{
|
||||
LLRect rec = getChild<LLPanel>("beamshape_draw")->getRect();
|
||||
LLRect rec = mBeamshapePanel->getRect();
|
||||
|
||||
LLSD beamData = *it;
|
||||
lggPoint p;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
#include "llfloater.h"
|
||||
|
||||
class FSPanelPrefs;
|
||||
class LLPanel;
|
||||
|
||||
class lggPoint
|
||||
{
|
||||
|
|
@ -56,6 +57,7 @@ private:
|
|||
std::vector<lggPoint> mDots;
|
||||
F32 mContextConeOpacity;
|
||||
FSPanelPrefs* mFSPanel;
|
||||
LLPanel* mBeamshapePanel;
|
||||
};
|
||||
|
||||
#endif // LGG_BEAMMAPFLOATER_H
|
||||
|
|
|
|||
|
|
@ -26,15 +26,6 @@
|
|||
#include "message.h"
|
||||
|
||||
lggBeamMaps gLggBeamMaps;
|
||||
F32 hueToRgb ( F32 val1In, F32 val2In, F32 valHUeIn )
|
||||
{
|
||||
while ( valHUeIn < 0.0f ) valHUeIn += 1.0f;
|
||||
while ( valHUeIn > 1.0f ) valHUeIn -= 1.0f;
|
||||
if ( ( 6.0f * valHUeIn ) < 1.0f ) return ( val1In + ( val2In - val1In ) * 6.0f * valHUeIn );
|
||||
if ( ( 2.0f * valHUeIn ) < 1.0f ) return ( val2In );
|
||||
if ( ( 3.0f * valHUeIn ) < 2.0f ) return ( val1In + ( val2In - val1In ) * ( ( 2.0f / 3.0f ) - valHUeIn ) * 6.0f );
|
||||
return ( val1In );
|
||||
}
|
||||
|
||||
std::string unescape_name(const std::string& name)
|
||||
{
|
||||
|
|
@ -47,9 +38,19 @@ std::string unescape_name(const std::string& name)
|
|||
return unescaped_name;
|
||||
}
|
||||
|
||||
void hslToRgb ( F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32& bValOut )
|
||||
F32 hueToRgb(F32 val1In, F32 val2In, F32 valHUeIn)
|
||||
{
|
||||
if ( sValIn < 0.00001f )
|
||||
while (valHUeIn < 0.0f) valHUeIn += 1.0f;
|
||||
while (valHUeIn > 1.0f) valHUeIn -= 1.0f;
|
||||
if ((6.0f * valHUeIn) < 1.0f) return (val1In + (val2In - val1In) * 6.0f * valHUeIn);
|
||||
if ((2.0f * valHUeIn) < 1.0f) return (val2In);
|
||||
if ((3.0f * valHUeIn) < 2.0f) return (val1In + (val2In - val1In) * ((2.0f / 3.0f) - valHUeIn) * 6.0f);
|
||||
return val1In;
|
||||
}
|
||||
|
||||
void hslToRgb(F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32& bValOut)
|
||||
{
|
||||
if (sValIn < 0.00001f)
|
||||
{
|
||||
rValOut = lValIn;
|
||||
gValOut = lValIn;
|
||||
|
|
@ -60,20 +61,20 @@ void hslToRgb ( F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut,
|
|||
F32 interVal1;
|
||||
F32 interVal2;
|
||||
|
||||
if ( lValIn < 0.5f )
|
||||
if (lValIn < 0.5f)
|
||||
{
|
||||
interVal2 = lValIn * ( 1.0f + sValIn );
|
||||
interVal2 = lValIn * (1.0f + sValIn);
|
||||
}
|
||||
else
|
||||
{
|
||||
interVal2 = ( lValIn + sValIn ) - ( sValIn * lValIn );
|
||||
interVal2 = (lValIn + sValIn) - (sValIn * lValIn);
|
||||
}
|
||||
|
||||
interVal1 = 2.0f * lValIn - interVal2;
|
||||
|
||||
rValOut = hueToRgb ( interVal1, interVal2, hValIn + ( 1.f / 3.f ) );
|
||||
gValOut = hueToRgb ( interVal1, interVal2, hValIn );
|
||||
bValOut = hueToRgb ( interVal1, interVal2, hValIn - ( 1.f / 3.f ) );
|
||||
rValOut = hueToRgb(interVal1, interVal2, hValIn + (1.f / 3.f));
|
||||
gValOut = hueToRgb(interVal1, interVal2, hValIn);
|
||||
bValOut = hueToRgb(interVal1, interVal2, hValIn - (1.f / 3.f));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,9 +14,13 @@
|
|||
#ifndef LGG_BEAMMAPS_H
|
||||
#define LGG_BEAMMAPS_H
|
||||
|
||||
#include "llfontregistry.h"
|
||||
#include "llhudeffecttrail.h"
|
||||
#include "lggbeamscolors.h"
|
||||
|
||||
F32 hueToRgb(F32 val1In, F32 val2In, F32 valHUeIn);
|
||||
void hslToRgb(F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32& bValOut);
|
||||
|
||||
class lggBeamData
|
||||
{
|
||||
public:
|
||||
|
|
@ -43,8 +47,8 @@ public:
|
|||
void updateBeamChat(const LLVector3d& currentPos);
|
||||
static LLColor4U beamColorFromData(const lggBeamsColors& data);
|
||||
LLColor4U getCurrentColor(const LLColor4U& agentColor);
|
||||
std::vector<std::string> getFileNames();
|
||||
std::vector<std::string> getColorsFileNames();
|
||||
string_vec_t getFileNames();
|
||||
string_vec_t getColorsFileNames();
|
||||
|
||||
private:
|
||||
LLSD getPic(const std::string& filename);
|
||||
|
|
|
|||
Loading…
Reference in New Issue