summaryrefslogtreecommitdiff
path: root/indra/llinventory/llsettingsdaycycle.cpp
diff options
context:
space:
mode:
authorGraham Linden <graham@lindenlab.com>2018-06-22 00:41:19 +0100
committerGraham Linden <graham@lindenlab.com>2018-06-22 00:41:19 +0100
commita02b3500b9979c10336eb13674279b3c07367445 (patch)
treeff8b1d336efd7d64c4ab235dbbf3a8e5d2bf8606 /indra/llinventory/llsettingsdaycycle.cpp
parent52b946fd09196989e34afd7226a82060c4f8d831 (diff)
Make LLSettingsFoo::defaults() funcs only calculate the invariant values once (use static trick ala the validations).
Fix conversion of legacy settings w/ non-zero east angles to account for those values being CW radian angles.
Diffstat (limited to 'indra/llinventory/llsettingsdaycycle.cpp')
-rw-r--r--indra/llinventory/llsettingsdaycycle.cpp67
1 files changed, 33 insertions, 34 deletions
diff --git a/indra/llinventory/llsettingsdaycycle.cpp b/indra/llinventory/llsettingsdaycycle.cpp
index 7dc415e480..2c8bddee93 100644
--- a/indra/llinventory/llsettingsdaycycle.cpp
+++ b/indra/llinventory/llsettingsdaycycle.cpp
@@ -285,52 +285,51 @@ bool LLSettingsDay::initialize()
//=========================================================================
LLSD LLSettingsDay::defaults()
{
- LLSD dfltsetting;
+ static LLSD dfltsetting;
- dfltsetting[SETTING_NAME] = "_default_";
-
- LLSD frames(LLSD::emptyMap());
- LLSD waterTrack;
- LLSD skyTrack;
-
-
- const U32 FRAME_COUNT = 8;
- const F32 FRAME_STEP = 1.0f / F32(FRAME_COUNT);
- F32 time = 0.0f;
- for (U32 i = 0; i < FRAME_COUNT; i++)
+ if (dfltsetting.size() == 0)
{
- std::string name("_default_");
- name += ('a' + i);
-
- std::string water_frame_name("water:");
- std::string sky_frame_name("sky:");
+ dfltsetting[SETTING_NAME] = "_default_";
+ dfltsetting[SETTING_TYPE] = "daycycle";
- water_frame_name += name;
- sky_frame_name += name;
+ LLSD frames(LLSD::emptyMap());
+ LLSD waterTrack;
+ LLSD skyTrack;
- waterTrack[SETTING_KEYKFRAME] = time;
- waterTrack[SETTING_KEYNAME] = water_frame_name;
+
+ const U32 FRAME_COUNT = 8;
+ const F32 FRAME_STEP = 1.0f / F32(FRAME_COUNT);
+ F32 time = 0.0f;
+ for (U32 i = 0; i < FRAME_COUNT; i++)
+ {
+ std::string name("_default_");
+ name += ('a' + i);
- skyTrack[SETTING_KEYKFRAME] = time;
- skyTrack[SETTING_KEYNAME] = sky_frame_name;
+ std::string water_frame_name("water:");
+ std::string sky_frame_name("sky:");
- frames[water_frame_name] = LLSettingsWater::defaults(time);
- frames[sky_frame_name] = LLSettingsSky::defaults(time);
+ water_frame_name += name;
+ sky_frame_name += name;
- time += FRAME_STEP;
- }
+ waterTrack[SETTING_KEYKFRAME] = time;
+ waterTrack[SETTING_KEYNAME] = water_frame_name;
- LLSD tracks;
- tracks.append(LLSDArray(waterTrack));
- tracks.append(LLSDArray(skyTrack));
+ skyTrack[SETTING_KEYKFRAME] = time;
+ skyTrack[SETTING_KEYNAME] = sky_frame_name;
- dfltsetting[SETTING_TRACKS] = tracks;
+ frames[water_frame_name] = LLSettingsWater::defaults(time);
+ frames[sky_frame_name] = LLSettingsSky::defaults(time);
-
+ time += FRAME_STEP;
+ }
- dfltsetting[SETTING_FRAMES] = frames;
+ LLSD tracks;
+ tracks.append(LLSDArray(waterTrack));
+ tracks.append(LLSDArray(skyTrack));
- dfltsetting[SETTING_TYPE] = "daycycle";
+ dfltsetting[SETTING_TRACKS] = tracks;
+ dfltsetting[SETTING_FRAMES] = frames;
+ }
return dfltsetting;
}