llwaterparamset.cpp

Go to the documentation of this file.
00001 
00032 #include "llviewerprecompiledheaders.h"
00033 
00034 #include "llwaterparamset.h"
00035 #include "llsd.h"
00036 
00037 #include "llfloaterwater.h"
00038 #include "llwaterparammanager.h"
00039 #include "lluictrlfactory.h"
00040 #include "llsliderctrl.h"
00041 #include "llviewerimagelist.h"
00042 #include "llviewercontrol.h"
00043 #include "lluuid.h"
00044 
00045 #include <llgl.h>
00046 
00047 #include <sstream>
00048 
00049 LLWaterParamSet::LLWaterParamSet(void) :
00050         mName("Unnamed Preset")
00051 {
00052         LLSD vec4;
00053         LLSD vec3;
00054         LLSD real(0.0f);
00055 
00056         vec4 = LLSD::emptyArray();
00057         vec4.append(22.f/255.f);
00058         vec4.append(43.f/255.f);
00059         vec4.append(54.f/255.f);
00060         vec4.append(0.f/255.f);
00061 
00062         vec3 = LLSD::emptyArray();
00063         vec3.append(2);
00064         vec3.append(2);
00065         vec3.append(2);
00066 
00067         LLSD wave1, wave2;
00068         wave1 = LLSD::emptyArray();
00069         wave2 = LLSD::emptyArray();
00070         wave1.append(0.5f);
00071         wave1.append(-.17f);
00072         wave2.append(0.58f);
00073         wave2.append(-.67f);
00074 
00075         mParamValues.insert("waterFogColor", vec4);
00076         mParamValues.insert("waterFogDensity", 16.0f);
00077         mParamValues.insert("underWaterFogMod", 0.25f);
00078         mParamValues.insert("normScale", vec3);
00079         mParamValues.insert("fresnelScale", 0.5f);
00080         mParamValues.insert("fresnelOffset", 0.4f);
00081         mParamValues.insert("scaleAbove", 0.025f);
00082         mParamValues.insert("scaleBelow", 0.2f);
00083         mParamValues.insert("blurMultiplier", 0.01f);
00084         mParamValues.insert("wave1Dir", wave1);
00085         mParamValues.insert("wave2Dir", wave2);
00086         mParamValues.insert("normalMap", DEFAULT_WATER_NORMAL);
00087 
00088 }
00089 
00090 void LLWaterParamSet::set(const char * paramName, float x) 
00091 {       
00092         // handle case where no array
00093         if(mParamValues[paramName].isReal()) 
00094         {
00095                 mParamValues[paramName] = x;
00096         } 
00097         
00098         // handle array
00099         else if(mParamValues[paramName].isArray() &&
00100                         mParamValues[paramName][0].isReal())
00101         {
00102                 mParamValues[paramName][0] = x;
00103         }
00104 }
00105 
00106 void LLWaterParamSet::set(const char * paramName, float x, float y) {
00107         mParamValues[paramName][0] = x;
00108         mParamValues[paramName][1] = y;
00109 }
00110 
00111 void LLWaterParamSet::set(const char * paramName, float x, float y, float z)
00112 {
00113         mParamValues[paramName][0] = x;
00114         mParamValues[paramName][1] = y;
00115         mParamValues[paramName][2] = z;
00116 }
00117 
00118 void LLWaterParamSet::set(const char * paramName, float x, float y, float z, float w) 
00119 {
00120         mParamValues[paramName][0] = x;
00121         mParamValues[paramName][1] = y;
00122         mParamValues[paramName][2] = z;
00123         mParamValues[paramName][3] = w;
00124 }
00125 
00126 void LLWaterParamSet::set(const char * paramName, const float * val) 
00127 {
00128         mParamValues[paramName][0] = val[0];
00129         mParamValues[paramName][1] = val[1];
00130         mParamValues[paramName][2] = val[2];
00131         mParamValues[paramName][3] = val[3];
00132 }
00133 
00134 void LLWaterParamSet::set(const char * paramName, const LLVector4 & val) 
00135 {
00136         mParamValues[paramName][0] = val.mV[0];
00137         mParamValues[paramName][1] = val.mV[1];
00138         mParamValues[paramName][2] = val.mV[2];
00139         mParamValues[paramName][3] = val.mV[3];
00140 }
00141 
00142 void LLWaterParamSet::set(const char * paramName, const LLColor4 & val) 
00143 {
00144         mParamValues[paramName][0] = val.mV[0];
00145         mParamValues[paramName][1] = val.mV[1];
00146         mParamValues[paramName][2] = val.mV[2];
00147         mParamValues[paramName][3] = val.mV[3];
00148 }
00149 
00150 LLVector4 LLWaterParamSet::getVector4(const char * paramName, bool& error) 
00151 {
00152         
00153         // test to see if right type
00154         LLSD cur_val = mParamValues.get(paramName);
00155         if (!cur_val.isArray() || cur_val.size() != 4) 
00156         {
00157                 error = true;
00158                 return LLVector4(0,0,0,0);
00159         }
00160         
00161         LLVector4 val;
00162         val.mV[0] = (F32) cur_val[0].asReal();
00163         val.mV[1] = (F32) cur_val[1].asReal();
00164         val.mV[2] = (F32) cur_val[2].asReal();
00165         val.mV[3] = (F32) cur_val[3].asReal();
00166         
00167         error = false;
00168         return val;
00169 }
00170 
00171 LLVector3 LLWaterParamSet::getVector3(const char * paramName, bool& error) 
00172 {
00173         
00174         // test to see if right type
00175         LLSD cur_val = mParamValues.get(paramName);
00176         if (!cur_val.isArray()|| cur_val.size() != 3) 
00177         {
00178                 error = true;
00179                 return LLVector3(0,0,0);
00180         }
00181         
00182         LLVector3 val;
00183         val.mV[0] = (F32) cur_val[0].asReal();
00184         val.mV[1] = (F32) cur_val[1].asReal();
00185         val.mV[2] = (F32) cur_val[2].asReal();
00186         
00187         error = false;
00188         return val;
00189 }
00190 
00191 LLVector2 LLWaterParamSet::getVector2(const char * paramName, bool& error) 
00192 {
00193         // test to see if right type
00194         int ttest;
00195         ttest = mParamValues.size();
00196         LLSD cur_val = mParamValues.get(paramName);
00197         if (!cur_val.isArray() || cur_val.size() != 2) 
00198         {
00199                 error = true;
00200                 return LLVector2(0,0);
00201         }
00202         
00203         LLVector2 val;
00204         val.mV[0] = (F32) cur_val[0].asReal();
00205         val.mV[1] = (F32) cur_val[1].asReal();
00206         
00207         error = false;
00208         return val;
00209 }
00210 
00211 F32 LLWaterParamSet::getFloat(const char * paramName, bool& error) 
00212 {
00213         
00214         // test to see if right type
00215         LLSD cur_val = mParamValues.get(paramName);
00216         if (cur_val.isArray() && cur_val.size() != 0)
00217         {
00218                 error = false;
00219                 return (F32) cur_val[0].asReal();       
00220         }
00221         
00222         if(cur_val.isReal())
00223         {
00224                 error = false;
00225                 return (F32) cur_val.asReal();
00226         }
00227         
00228         error = true;
00229         return 0;
00230 }
00231 

Generated on Fri May 16 08:34:24 2008 for SecondLife by  doxygen 1.5.5