diff options
author | Graham Linden <graham@lindenlab.com> | 2018-06-22 00:41:19 +0100 |
---|---|---|
committer | Graham Linden <graham@lindenlab.com> | 2018-06-22 00:41:19 +0100 |
commit | a02b3500b9979c10336eb13674279b3c07367445 (patch) | |
tree | ff8b1d336efd7d64c4ab235dbbf3a8e5d2bf8606 /indra/llinventory/llsettingsdaycycle.cpp | |
parent | 52b946fd09196989e34afd7226a82060c4f8d831 (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.cpp | 67 |
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; } |