summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llcharacter/llheadrotmotion.cpp18
-rw-r--r--indra/llcommon/doublelinkedlist.h2
-rw-r--r--indra/llcommon/llptrskiplist.h2
-rw-r--r--indra/llcommon/llptrskipmap.h6
-rw-r--r--indra/llcommon/llskiplist.h2
-rw-r--r--indra/llmessage/llcachename.cpp2
-rw-r--r--indra/llmessage/llcircuit.cpp6
-rw-r--r--indra/llmessage/llpacketring.cpp4
-rw-r--r--indra/llmessage/llxfermanager.cpp2
-rw-r--r--indra/llvfs/lldir_linux.cpp8
-rw-r--r--indra/llvfs/lldir_mac.cpp4
-rw-r--r--indra/llvfs/lldir_win32.cpp6
-rw-r--r--indra/lscript/lscript_alloc.h70
-rw-r--r--indra/lscript/lscript_library/lscript_alloc.cpp59
-rw-r--r--indra/newview/llagent.cpp12
-rw-r--r--indra/newview/llcloud.cpp6
-rw-r--r--indra/newview/llhudeffectbeam.cpp6
-rw-r--r--indra/newview/llviewermessage.cpp2
-rw-r--r--indra/newview/llviewerpartsim.cpp6
-rw-r--r--indra/newview/llviewerpartsource.cpp20
-rw-r--r--indra/newview/llvoavatar.cpp2
-rw-r--r--indra/newview/llvograss.cpp14
-rw-r--r--indra/newview/llvopartgroup.cpp2
-rw-r--r--indra/newview/llvosky.cpp16
-rw-r--r--indra/newview/llvotreenew.h6
25 files changed, 136 insertions, 147 deletions
diff --git a/indra/llcharacter/llheadrotmotion.cpp b/indra/llcharacter/llheadrotmotion.cpp
index 4ff7e6b582..4d4f7ce738 100644
--- a/indra/llcharacter/llheadrotmotion.cpp
+++ b/indra/llcharacter/llheadrotmotion.cpp
@@ -332,31 +332,31 @@ BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask)
//calculate jitter
if (mEyeJitterTimer.getElapsedTimeF32() > mEyeJitterTime)
{
- mEyeJitterTime = EYE_JITTER_MIN_TIME + frand(EYE_JITTER_MAX_TIME - EYE_JITTER_MIN_TIME);
- mEyeJitterYaw = (frand(2.f) - 1.f) * EYE_JITTER_MAX_YAW;
- mEyeJitterPitch = (frand(2.f) - 1.f) * EYE_JITTER_MAX_PITCH;
+ mEyeJitterTime = EYE_JITTER_MIN_TIME + ll_frand(EYE_JITTER_MAX_TIME - EYE_JITTER_MIN_TIME);
+ mEyeJitterYaw = (ll_frand(2.f) - 1.f) * EYE_JITTER_MAX_YAW;
+ mEyeJitterPitch = (ll_frand(2.f) - 1.f) * EYE_JITTER_MAX_PITCH;
// make sure lookaway time count gets updated, because we're resetting the timer
mEyeLookAwayTime -= llmax(0.f, mEyeJitterTimer.getElapsedTimeF32());
mEyeJitterTimer.reset();
}
else if (mEyeJitterTimer.getElapsedTimeF32() > mEyeLookAwayTime)
{
- if (frand(1.f) > 0.1f)
+ if (ll_frand() > 0.1f)
{
// blink while moving eyes some percentage of the time
mEyeBlinkTime = mEyeBlinkTimer.getElapsedTimeF32();
}
if (mEyeLookAwayYaw == 0.f && mEyeLookAwayPitch == 0.f)
{
- mEyeLookAwayYaw = (frand(2.f) - 1.f) * EYE_LOOK_AWAY_MAX_YAW;
- mEyeLookAwayPitch = (frand(2.f) - 1.f) * EYE_LOOK_AWAY_MAX_PITCH;
- mEyeLookAwayTime = EYE_LOOK_BACK_MIN_TIME + frand(EYE_LOOK_BACK_MAX_TIME - EYE_LOOK_BACK_MIN_TIME);
+ mEyeLookAwayYaw = (ll_frand(2.f) - 1.f) * EYE_LOOK_AWAY_MAX_YAW;
+ mEyeLookAwayPitch = (ll_frand(2.f) - 1.f) * EYE_LOOK_AWAY_MAX_PITCH;
+ mEyeLookAwayTime = EYE_LOOK_BACK_MIN_TIME + ll_frand(EYE_LOOK_BACK_MAX_TIME - EYE_LOOK_BACK_MIN_TIME);
}
else
{
mEyeLookAwayYaw = 0.f;
mEyeLookAwayPitch = 0.f;
- mEyeLookAwayTime = EYE_LOOK_AWAY_MIN_TIME + frand(EYE_LOOK_AWAY_MAX_TIME - EYE_LOOK_AWAY_MIN_TIME);
+ mEyeLookAwayTime = EYE_LOOK_AWAY_MIN_TIME + ll_frand(EYE_LOOK_AWAY_MAX_TIME - EYE_LOOK_AWAY_MIN_TIME);
}
}
@@ -395,7 +395,7 @@ BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask)
if (rightEyeBlinkMorph == 0.f)
{
mEyesClosed = FALSE;
- mEyeBlinkTime = EYE_BLINK_MIN_TIME + frand(EYE_BLINK_MAX_TIME - EYE_BLINK_MIN_TIME);
+ mEyeBlinkTime = EYE_BLINK_MIN_TIME + ll_frand(EYE_BLINK_MAX_TIME - EYE_BLINK_MIN_TIME);
mEyeBlinkTimer.reset();
}
}
diff --git a/indra/llcommon/doublelinkedlist.h b/indra/llcommon/doublelinkedlist.h
index 2546d621d0..08c21a94cf 100644
--- a/indra/llcommon/doublelinkedlist.h
+++ b/indra/llcommon/doublelinkedlist.h
@@ -1343,7 +1343,7 @@ void LLDoubleLinkedList<DATA_TYPE>::scramble()
DATA_TYPE *datap = getFirstData();
while(datap)
{
- random_number = gLindenLabRandomNumber.llrand() % 5;
+ random_number = ll_rand(5);
if (0 == random_number)
{
diff --git a/indra/llcommon/llptrskiplist.h b/indra/llcommon/llptrskiplist.h
index fd4dcdf87b..d73428f88f 100644
--- a/indra/llcommon/llptrskiplist.h
+++ b/indra/llcommon/llptrskiplist.h
@@ -254,7 +254,7 @@ inline BOOL LLPtrSkipList<DATA_TYPE, BINARY_DEPTH>::addData(DATA_TYPE *data)
S32 newlevel;
for (newlevel = 1; newlevel <= mLevel && newlevel < BINARY_DEPTH; newlevel++)
{
- if (frand(1.f) < 0.5f)
+ if (ll_frand() < 0.5f)
break;
}
diff --git a/indra/llcommon/llptrskipmap.h b/indra/llcommon/llptrskipmap.h
index 63668c34fe..e99ea95263 100644
--- a/indra/llcommon/llptrskipmap.h
+++ b/indra/llcommon/llptrskipmap.h
@@ -324,7 +324,7 @@ inline DATA_T &LLPtrSkipMap<INDEX_T, DATA_T, BINARY_DEPTH>::addData(const INDEX_
S32 newlevel;
for (newlevel = 1; newlevel <= mLevel && newlevel < BINARY_DEPTH; newlevel++)
{
- if (frand(1.f) < 0.5f)
+ if (ll_frand() < 0.5f)
{
break;
}
@@ -392,7 +392,7 @@ inline DATA_T &LLPtrSkipMap<INDEX_T, DATA_T, BINARY_DEPTH>::addData(const INDEX_
S32 newlevel;
for (newlevel = 1; newlevel <= mLevel && newlevel < BINARY_DEPTH; newlevel++)
{
- if (frand(1.f) < 0.5f)
+ if (ll_frand() < 0.5f)
break;
}
@@ -470,7 +470,7 @@ inline DATA_T &LLPtrSkipMap<INDEX_T, DATA_T, BINARY_DEPTH>::getData(const INDEX_
S32 newlevel;
for (newlevel = 1; newlevel <= mLevel && newlevel < BINARY_DEPTH; newlevel++)
{
- if (frand(1.f) < 0.5f)
+ if (ll_frand() < 0.5f)
break;
}
diff --git a/indra/llcommon/llskiplist.h b/indra/llcommon/llskiplist.h
index a86eb05d46..ed1aa1f0aa 100644
--- a/indra/llcommon/llskiplist.h
+++ b/indra/llcommon/llskiplist.h
@@ -223,7 +223,7 @@ inline BOOL LLSkipList<DATA_TYPE, BINARY_DEPTH>::addData(const DATA_TYPE& data)
S32 newlevel;
for (newlevel = 1; newlevel <= mLevel && newlevel < BINARY_DEPTH; newlevel++)
{
- if (frand(1.f) < 0.5f)
+ if (ll_frand() < 0.5f)
break;
}
diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp
index 075f4f01cf..e5bc3814f6 100644
--- a/indra/llmessage/llcachename.cpp
+++ b/indra/llmessage/llcachename.cpp
@@ -390,7 +390,7 @@ BOOL LLCacheName::getName(const LLUUID& id, char* first, char* last)
{
//The function signature needs to change to pass in the
//length of first and last.
- strcpy(first,(frand(1.0f) < HIPPO_PROBABILITY)
+ strcpy(first,(ll_frand() < HIPPO_PROBABILITY)
? CN_HIPPOS
: CN_WAITING);
strcpy(last, "");
diff --git a/indra/llmessage/llcircuit.cpp b/indra/llmessage/llcircuit.cpp
index d3ef92e4a7..514fb10b4a 100644
--- a/indra/llmessage/llcircuit.cpp
+++ b/indra/llmessage/llcircuit.cpp
@@ -86,12 +86,12 @@ LLCircuitData::LLCircuitData(const LLHost &host, TPACKETID in_id)
// Need to guarantee that this time is up to date, we may be creating a circuit even though we haven't been
// running a message system loop.
F64 mt_sec = LLMessageSystem::getMessageTimeSeconds(TRUE);
- F32 distribution_offset = frand(1.0f);
+ F32 distribution_offset = ll_frand();
mPingTime = mt_sec;
mLastPingSendTime = mt_sec + PING_INTERVAL * distribution_offset;
mLastPingReceivedTime = mt_sec;
- mNextPingSendTime = mLastPingSendTime + 0.95*PING_INTERVAL + frand(0.1f*PING_INTERVAL);
+ mNextPingSendTime = mLastPingSendTime + 0.95*PING_INTERVAL + ll_frand(0.1f*PING_INTERVAL);
mPeriodTime = mt_sec;
mTimeoutCallback = NULL;
@@ -785,7 +785,7 @@ void LLCircuit::updateWatchDogTimers(LLMessageSystem *msgsys)
if (cdp->updateWatchDogTimers(msgsys))
{
// Randomize our pings a bit by doing some up to 5% early or late
- F64 dt = 0.95f*PING_INTERVAL + frand(0.1f*PING_INTERVAL);
+ F64 dt = 0.95f*PING_INTERVAL + ll_frand(0.1f*PING_INTERVAL);
// Remove it, and reinsert it with the new next ping time.
// Always remove before changing the sorting key.
diff --git a/indra/llmessage/llpacketring.cpp b/indra/llmessage/llpacketring.cpp
index 4f17d1ae5a..1bf72edfc1 100644
--- a/indra/llmessage/llpacketring.cpp
+++ b/indra/llmessage/llpacketring.cpp
@@ -147,7 +147,7 @@ S32 LLPacketRing::receivePacket (S32 socket, char *datap)
mActualBitsIn += packetp->getSize() * 8;
// Fake packet loss
- if (mDropPercentage && (frand(100.f) < mDropPercentage))
+ if (mDropPercentage && (ll_frand(100.f) < mDropPercentage))
{
mPacketsToDrop++;
}
@@ -202,7 +202,7 @@ S32 LLPacketRing::receivePacket (S32 socket, char *datap)
if (packet_size) // did we actually get a packet?
{
- if (mDropPercentage && (frand(100.f) < mDropPercentage))
+ if (mDropPercentage && (ll_frand(100.f) < mDropPercentage))
{
mPacketsToDrop++;
}
diff --git a/indra/llmessage/llxfermanager.cpp b/indra/llmessage/llxfermanager.cpp
index e2d8cd30b3..bafa783799 100644
--- a/indra/llmessage/llxfermanager.cpp
+++ b/indra/llmessage/llxfermanager.cpp
@@ -1089,7 +1089,7 @@ void process_request_xfer(LLMessageSystem *mesgsys, void **user_data)
void continue_file_receive(LLMessageSystem *mesgsys, void **user_data)
{
#if LL_TEST_XFER_REXMIT
- if (frand(1.f) > 0.05f)
+ if (ll_frand() > 0.05f)
{
#endif
gXferManager->processReceiveData(mesgsys,user_data);
diff --git a/indra/llvfs/lldir_linux.cpp b/indra/llvfs/lldir_linux.cpp
index c72587b9b5..f5573797c9 100644
--- a/indra/llvfs/lldir_linux.cpp
+++ b/indra/llvfs/lldir_linux.cpp
@@ -10,7 +10,7 @@
#include "lldir_linux.h"
#include "llerror.h"
-#include "llrand.h" // for gLindenLabRandomNumber
+#include "llrand.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
@@ -267,8 +267,8 @@ BOOL LLDir_Linux::getNextFileInDir(const std::string &dirname, const std::string
// automatically wrap if we've hit the end
void LLDir_Linux::getRandomFileInDir(const std::string &dirname, const std::string &mask, std::string &fname)
{
- U32 num_files;
- U32 which_file;
+ S32 num_files;
+ S32 which_file;
DIR *dirp;
dirent *entryp = NULL;
@@ -280,7 +280,7 @@ void LLDir_Linux::getRandomFileInDir(const std::string &dirname, const std::stri
return;
}
- which_file = gLindenLabRandomNumber.llrand() % num_files;
+ which_file = ll_rand(num_files);
// llinfos << "Random select file #" << which_file << llendl;
diff --git a/indra/llvfs/lldir_mac.cpp b/indra/llvfs/lldir_mac.cpp
index 591241478d..c056f982c4 100644
--- a/indra/llvfs/lldir_mac.cpp
+++ b/indra/llvfs/lldir_mac.cpp
@@ -268,7 +268,7 @@ BOOL LLDir_Mac::getNextFileInDir(const std::string &dirname, const std::string &
// get a random file in the directory
void LLDir_Mac::getRandomFileInDir(const std::string &dirname, const std::string &mask, std::string &fname)
{
- U32 which_file;
+ S32 which_file;
glob_t g;
fname = "";
@@ -281,7 +281,7 @@ void LLDir_Mac::getRandomFileInDir(const std::string &dirname, const std::string
if(g.gl_pathc > 0)
{
- which_file = gLindenLabRandomNumber.llrand() % g.gl_pathc;
+ which_file = ll_rand(g.gl_pathc);
// llinfos << "getRandomFileInDir: returning number " << which_file << ", path is " << g.gl_pathv[which_file] << llendl;
// The API wants just the filename, not the full path.
diff --git a/indra/llvfs/lldir_win32.cpp b/indra/llvfs/lldir_win32.cpp
index 0c5b0ecf19..8c2ed48813 100644
--- a/indra/llvfs/lldir_win32.cpp
+++ b/indra/llvfs/lldir_win32.cpp
@@ -266,8 +266,8 @@ BOOL LLDir_Win32::getNextFileInDir(const llutf16string &dirname, const std::stri
// automatically wrap if we've hit the end
void LLDir_Win32::getRandomFileInDir(const std::string &dirname, const std::string &mask, std::string &fname)
{
- U32 num_files;
- U32 which_file;
+ S32 num_files;
+ S32 which_file;
HANDLE random_search_h;
fname = "";
@@ -284,7 +284,7 @@ void LLDir_Win32::getRandomFileInDir(const std::string &dirname, const std::stri
return;
}
- which_file = gLindenLabRandomNumber.llrand() % num_files;
+ which_file = ll_rand(num_files);
// llinfos << "Random select mp3 #" << which_file << llendl;
diff --git a/indra/lscript/lscript_alloc.h b/indra/lscript/lscript_alloc.h
index 485a65061a..2870364a9c 100644
--- a/indra/lscript/lscript_alloc.h
+++ b/indra/lscript/lscript_alloc.h
@@ -271,74 +271,6 @@ inline LLScriptLibData *lsa_bubble_sort(LLScriptLibData *src, S32 stride, S32 as
}
-inline LLScriptLibData *lsa_randomize(LLScriptLibData *src, S32 stride)
-{
- S32 number = src->getListLength();
-
- if (number <= 0)
- {
- return NULL;
- }
-
- if (stride <= 0)
- {
- stride = 1;
- }
-
- if (number % stride)
- {
- LLScriptLibData *retval = src->mListp;
- src->mListp = NULL;
- return retval;
- }
-
- LLScriptLibData **sortarray = new LLScriptLibData*[number];
-
- LLScriptLibData *temp = src->mListp;
- S32 i = 0;
- while (temp)
- {
- sortarray[i] = temp;
- i++;
- temp = temp->mListp;
- }
-
- S32 k, j, s;
-
- for (k = 0; k < 20; k++)
- {
- for (i = 0; i < number; i += stride)
- {
- for (j = i; j < number; j += stride)
- {
- if (frand(1.f) > 0.5)
- {
- for (s = 0; s < stride; s++)
- {
- temp = sortarray[i + s];
- sortarray[i + s] = sortarray[j + s];
- sortarray[j + s] = temp;
- }
- }
- }
- }
- }
-
- i = 1;
- temp = sortarray[0];
- while (i < number)
- {
- temp->mListp = sortarray[i++];
- temp = temp->mListp;
- }
- temp->mListp = NULL;
-
- src->mListp = NULL;
-
- LLScriptLibData *ret_value = sortarray[0];
- delete [] sortarray;
-
- return ret_value;
-}
+LLScriptLibData* lsa_randomize(LLScriptLibData* src, S32 stride);
#endif
diff --git a/indra/lscript/lscript_library/lscript_alloc.cpp b/indra/lscript/lscript_library/lscript_alloc.cpp
index 8230d181ce..86c8729e9c 100644
--- a/indra/lscript/lscript_library/lscript_alloc.cpp
+++ b/indra/lscript/lscript_library/lscript_alloc.cpp
@@ -1100,3 +1100,62 @@ S32 lsa_postadd_lists(U8 *buffer, S32 offset1, LLScriptLibData *data, S32 heapsi
return lsa_heap_add_data(buffer, list1, heapsize, TRUE);
}
+
+LLScriptLibData* lsa_randomize(LLScriptLibData* src, S32 stride)
+{
+ S32 number = src->getListLength();
+ if (number <= 0)
+ {
+ return NULL;
+ }
+ if (stride <= 0)
+ {
+ stride = 1;
+ }
+ if(number % stride)
+ {
+ LLScriptLibData* retval = src->mListp;
+ src->mListp = NULL;
+ return retval;
+ }
+ S32 buckets = number / stride;
+
+ // Copy everything into a special vector for sorting;
+ std::vector<LLScriptLibData*> sort_array;
+ sort_array.reserve(number);
+ LLScriptLibData* temp = src->mListp;
+ while(temp)
+ {
+ sort_array.push_back(temp);
+ temp = temp->mListp;
+ }
+
+ // We cannot simply call random_shuffle or similar algorithm since
+ // we need to obey the stride. So, we iterate over what we have
+ // and swap each with a random other segment.
+ S32 index = 0;
+ S32 ii = 0;
+ for(; ii < number; ii += stride)
+ {
+ index = ll_rand(buckets) * stride;
+ for(S32 jj = 0; jj < stride; ++jj)
+ {
+ std::swap(sort_array[ii + jj], sort_array[index + jj]);
+ }
+ }
+
+ // copy the pointers back out
+ ii = 1;
+ temp = sort_array[0];
+ while (ii < number)
+ {
+ temp->mListp = sort_array[ii++];
+ temp = temp->mListp;
+ }
+ temp->mListp = NULL;
+
+ src->mListp = NULL;
+
+ LLScriptLibData* ret_value = sort_array[0];
+ return ret_value;
+}
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 5a08f94b71..ef4daf7fad 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -2096,11 +2096,11 @@ void LLAgent::updateWanderTarget()
F32 rand_x;
F32 rand_y;
- if (mWanderTimer.checkExpirationAndReset(frand(MAX_WANDER_TIME)))
+ if (mWanderTimer.checkExpirationAndReset(ll_frand(MAX_WANDER_TIME)))
{
// Pick a random spot to wander towards
num_regions = gWorldPointer->mActiveRegionList.getLength();
- S32 region_num = llround(frand(1.f) * num_regions);
+ S32 region_num = llround(ll_frand() * num_regions);
rand_region = gWorldPointer->mActiveRegionList.getFirstData();
S32 i = 0;
while (i < region_num)
@@ -2108,8 +2108,8 @@ void LLAgent::updateWanderTarget()
rand_region = gWorldPointer->mActiveRegionList.getNextData();
i++;
}
- rand_x = frand(rand_region->getWidth());
- rand_y = frand(rand_region->getWidth());
+ rand_x = ll_frand(rand_region->getWidth());
+ rand_y = ll_frand(rand_region->getWidth());
stopAutoPilot();
startAutoPilotGlobal(rand_region->getPosGlobalFromRegion(LLVector3(rand_x, rand_y, 0.f)));
@@ -5668,7 +5668,7 @@ void LLAgent::fidget()
// pick a random fidget anim here
S32 oldFidget = mCurrentFidget;
- mCurrentFidget = gLindenLabRandomNumber.llrand(NUM_AGENT_STAND_ANIMS);
+ mCurrentFidget = ll_rand(NUM_AGENT_STAND_ANIMS);
if (mCurrentFidget != oldFidget)
{
@@ -5700,7 +5700,7 @@ void LLAgent::fidget()
}
// calculate next fidget time
- mNextFidgetTime = curTime + gLindenLabRandomNumber.llfrand(MAX_FIDGET_TIME - MIN_FIDGET_TIME) + MIN_FIDGET_TIME;
+ mNextFidgetTime = curTime + ll_frand(MAX_FIDGET_TIME - MIN_FIDGET_TIME) + MIN_FIDGET_TIME;
}
}
}
diff --git a/indra/newview/llcloud.cpp b/indra/newview/llcloud.cpp
index c7e69a043f..cdba49c40d 100644
--- a/indra/newview/llcloud.cpp
+++ b/indra/newview/llcloud.cpp
@@ -174,9 +174,9 @@ void LLCloudGroup::updatePuffCount()
for (i = current_puff_count; i < target_puff_count; i++)
{
puff_pos_global = mVOCloudsp->getPositionGlobal();
- F32 x = frand(256.f/CLOUD_GROUPS_PER_EDGE) - 128.f/CLOUD_GROUPS_PER_EDGE;
- F32 y = frand(256.f/CLOUD_GROUPS_PER_EDGE) - 128.f/CLOUD_GROUPS_PER_EDGE;
- F32 z = frand(CLOUD_HEIGHT_RANGE) - 0.5f*CLOUD_HEIGHT_RANGE;
+ F32 x = ll_frand(256.f/CLOUD_GROUPS_PER_EDGE) - 128.f/CLOUD_GROUPS_PER_EDGE;
+ F32 y = ll_frand(256.f/CLOUD_GROUPS_PER_EDGE) - 128.f/CLOUD_GROUPS_PER_EDGE;
+ F32 z = ll_frand(CLOUD_HEIGHT_RANGE) - 0.5f*CLOUD_HEIGHT_RANGE;
puff_pos_global += LLVector3d(x, y, z);
mCloudPuffs[i].mPositionGlobal = puff_pos_global;
mCloudPuffs[i].mAlpha = 0.01f;
diff --git a/indra/newview/llhudeffectbeam.cpp b/indra/newview/llhudeffectbeam.cpp
index 069986eb77..2b9b07a9e3 100644
--- a/indra/newview/llhudeffectbeam.cpp
+++ b/indra/newview/llhudeffectbeam.cpp
@@ -350,9 +350,9 @@ void LLHUDEffectBeam::setupParticle(const S32 i)
// Generate a random offset for the target point.
const F32 SCALE = 0.5f;
F32 x, y, z;
- x = frand(SCALE) - 0.5f*SCALE;
- y = frand(SCALE) - 0.5f*SCALE;
- z = frand(SCALE) - 0.5f*SCALE;
+ x = ll_frand(SCALE) - 0.5f*SCALE;
+ y = ll_frand(SCALE) - 0.5f*SCALE;
+ z = ll_frand(SCALE) - 0.5f*SCALE;
LLVector3d target_pos_global(mTargetPos);
target_pos_global += LLVector3d(x, y, z);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index eabc81994f..dff2a6c9e0 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1980,7 +1980,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
&& chatter != gAgent.getAvatarObject())
{
gAgent.heardChat(chat);
- if (gLindenLabRandomNumber.llrand(2) == 0)
+ if (ll_rand(2) == 0)
{
gAgent.setLookAt(LOOKAT_TARGET_AUTO_LISTEN, chatter, LLVector3::zero);
}
diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp
index b67062e0a9..db18b74d1f 100644
--- a/indra/newview/llviewerpartsim.cpp
+++ b/indra/newview/llviewerpartsim.cpp
@@ -399,7 +399,7 @@ BOOL LLViewerPartSim::shouldAddPart()
F32 frac = (F32)sParticleCount/(F32)sMaxParticleCount;
frac -= 0.75;
frac *= 3.f;
- if (frand(1.f) < frac)
+ if (ll_frand() < frac)
{
// Skip...
return FALSE;
@@ -530,9 +530,9 @@ void LLViewerPartSim::updateSimulation()
// pain.
S32 i;
S32 count = mViewerPartSources.count();
- S32 start = (S32)frand((F32)count);
+ S32 start = (S32)ll_frand((F32)count);
S32 dir = 1;
- if (frand(1.0) > 0.5f)
+ if (ll_frand() > 0.5f)
{
dir = -1;
}
diff --git a/indra/newview/llviewerpartsource.cpp b/indra/newview/llviewerpartsource.cpp
index e73f77e463..981c5531c9 100644
--- a/indra/newview/llviewerpartsource.cpp
+++ b/indra/newview/llviewerpartsource.cpp
@@ -194,9 +194,9 @@ void LLViewerPartSourceScript::update(const F32 dt)
F32 mvs;
do
{
- part_dir_vector.mV[VX] = frand(2.f) - 1.f;
- part_dir_vector.mV[VY] = frand(2.f) - 1.f;
- part_dir_vector.mV[VZ] = frand(2.f) - 1.f;
+ part_dir_vector.mV[VX] = ll_frand(2.f) - 1.f;
+ part_dir_vector.mV[VY] = ll_frand(2.f) - 1.f;
+ part_dir_vector.mV[VZ] = ll_frand(2.f) - 1.f;
mvs = part_dir_vector.magVecSquared();
}
while ((mvs > 1.f) || (mvs < 0.01f));
@@ -204,7 +204,7 @@ void LLViewerPartSourceScript::update(const F32 dt)
part_dir_vector.normVec();
part.mPosAgent += mPartSysData.mBurstRadius*part_dir_vector;
part.mVelocity = part_dir_vector;
- F32 speed = mPartSysData.mBurstSpeedMin + frand(mPartSysData.mBurstSpeedMax - mPartSysData.mBurstSpeedMin);
+ F32 speed = mPartSysData.mBurstSpeedMin + ll_frand(mPartSysData.mBurstSpeedMax - mPartSysData.mBurstSpeedMin);
part.mVelocity *= speed;
}
else if (mPartSysData.mPattern & LLPartSysData::LL_PART_SRC_PATTERN_ANGLE
@@ -223,10 +223,10 @@ void LLViewerPartSourceScript::update(const F32 dt)
F32 outerAngle = mPartSysData.mOuterAngle;
// generate a random angle within the given space...
- F32 angle = innerAngle + frand(outerAngle - innerAngle);
+ F32 angle = innerAngle + ll_frand(outerAngle - innerAngle);
// split which side it will go on randomly...
- if (frand(1.0) < 0.5)
+ if (ll_frand() < 0.5)
{
angle = -angle;
}
@@ -237,7 +237,7 @@ void LLViewerPartSourceScript::update(const F32 dt)
// If this is a cone pattern, rotate again to create the cone.
if (mPartSysData.mPattern & LLPartSysData::LL_PART_SRC_PATTERN_ANGLE_CONE)
{
- part_dir_vector.rotVec(frand(4*F_PI), 0.0, 0.0, 1.0);
+ part_dir_vector.rotVec(ll_frand(4*F_PI), 0.0, 0.0, 1.0);
}
// Only apply this rotation if using the deprecated angles.
@@ -257,7 +257,7 @@ void LLViewerPartSourceScript::update(const F32 dt)
part.mVelocity = part_dir_vector;
- F32 speed = mPartSysData.mBurstSpeedMin + frand(mPartSysData.mBurstSpeedMax - mPartSysData.mBurstSpeedMin);
+ F32 speed = mPartSysData.mBurstSpeedMin + ll_frand(mPartSysData.mBurstSpeedMax - mPartSysData.mBurstSpeedMin);
part.mVelocity *= speed;
}
else
@@ -440,7 +440,7 @@ void LLViewerPartSourceSpiral::update(const F32 dt)
part.mLastUpdateTime = 0.f;
part.mScale.mV[0] = 0.25f;
part.mScale.mV[1] = 0.25f;
- part.mParameter = frand(F_TWO_PI);
+ part.mParameter = ll_frand(F_TWO_PI);
gWorldPointer->mPartSim.addPart(part);
}
@@ -701,7 +701,7 @@ void LLViewerPartSourceChat::update(const F32 dt)
part.mLastUpdateTime = 0.f;
part.mScale.mV[0] = 0.25f;
part.mScale.mV[1] = 0.25f;
- part.mParameter = frand(F_TWO_PI);
+ part.mParameter = ll_frand(F_TWO_PI);
gWorldPointer->mPartSim.addPart(part);
}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index d1bcacb5c4..b60e19ac93 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2363,7 +2363,7 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
static const F32 UPDATE_TIME = .5f;
if (mUpdateLODTimer.hasExpired())
{
- mUpdateLODTimer.setTimerExpirySec(UPDATE_TIME * (.75f + frand(0.5f)));
+ mUpdateLODTimer.setTimerExpirySec(UPDATE_TIME * (.75f + ll_frand(0.5f)));
updateJointLODs();
}
diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp
index a1bfe31f1e..692b757d9e 100644
--- a/indra/newview/llvograss.cpp
+++ b/indra/newview/llvograss.cpp
@@ -210,26 +210,26 @@ void LLVOGrass::initClass()
{
if (1) //(i%2 == 0) Uncomment for X blading
{
- F32 u = sqrt(-2.0f * log(frand(1.0)));
- F32 v = 2.0f * F_PI * frand(1.0);
+ F32 u = sqrt(-2.0f * log(ll_frand()));
+ F32 v = 2.0f * F_PI * ll_frand();
x = u * sin(v) * GRASS_DISTRIBUTION_SD;
y = u * cos(v) * GRASS_DISTRIBUTION_SD;
- rot = frand(F_PI);
+ rot = ll_frand(F_PI);
}
else
{
- rot += (F_PI*0.4f + frand(0.2f*F_PI));
+ rot += (F_PI*0.4f + ll_frand(0.2f*F_PI));
}
exp_x[i] = x;
exp_y[i] = y;
rot_x[i] = sin(rot);
rot_y[i] = cos(rot);
- dz_x[i] = frand(GRASS_BLADE_BASE * 0.25f);
- dz_y[i] = frand(GRASS_BLADE_BASE * 0.25f);
- w_mod[i] = 0.5f + frand(1.f); // Degree to which blade is moved by wind
+ dz_x[i] = ll_frand(GRASS_BLADE_BASE * 0.25f);
+ dz_y[i] = ll_frand(GRASS_BLADE_BASE * 0.25f);
+ w_mod[i] = 0.5f + ll_frand(); // Degree to which blade is moved by wind
}
}
diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp
index caba9e3aef..38db15c0c7 100644
--- a/indra/newview/llvopartgroup.cpp
+++ b/indra/newview/llvopartgroup.cpp
@@ -34,7 +34,7 @@ LLVOPartGroup::LLVOPartGroup(const LLUUID &id, const LLPCode pcode, LLViewerRegi
setNumTEs(1);
setTETexture(0, LLUUID::null);
mbCanSelect = FALSE; // users can't select particle systems
- mDebugColor = LLColor4(frand(1.f), frand(1.f), frand(1.f), 1.f);
+ mDebugColor = LLColor4(ll_frand(), ll_frand(), ll_frand(), 1.f);
}
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 5c76dc5a87..2f580ba5f7 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -645,20 +645,18 @@ void LLVOSky::restoreGL()
void LLVOSky::updateHaze()
{
- time_t timer;
- time(&timer);
- static LLRand WeatherRandomNumber(gmtime(&timer)->tm_mday);
+ static LLRandLagFib607 weather_generator(LLUUID::getRandomSeed());
if (gSavedSettings.getBOOL("FixedWeather"))
{
- WeatherRandomNumber.seed(8008135);
+ weather_generator.seed(8008135);
}
const F32 fo_upper_bound = 5;
const F32 sca_upper_bound = 6;
- const F32 fo = 1 + WeatherRandomNumber.llfrand(fo_upper_bound - 1);
+ const F32 fo = 1 + (F32)weather_generator() *(fo_upper_bound - 1);
const static F32 upper = 0.5f / gFastLn.ln(fo_upper_bound);
mHaze.setFalloff(fo);
- mHaze.setG(WeatherRandomNumber.llfrand(0.0f + upper * gFastLn.ln(fo)));
+ mHaze.setG((F32)weather_generator() * (0.0f + upper * gFastLn.ln(fo)));
LLColor3 sca;
const F32 cd = mCloudDensity * 3;
F32 min_r = cd - 1;
@@ -672,7 +670,7 @@ void LLVOSky::updateHaze()
max_r = sca_upper_bound;
}
- sca.mV[0] = min_r + WeatherRandomNumber.llfrand(max_r - min_r);//frand(6);
+ sca.mV[0] = min_r + (F32)weather_generator() * (max_r - min_r);
min_r = sca.mV[0] - 0.1f;
if (min_r < 0)
@@ -685,7 +683,7 @@ void LLVOSky::updateHaze()
max_r = sca_upper_bound;
}
- sca.mV[1] = min_r + WeatherRandomNumber.llfrand(max_r - min_r);
+ sca.mV[1] = min_r + (F32)weather_generator() * (max_r - min_r);
min_r = sca.mV[1];
if (min_r < 0)
@@ -698,7 +696,7 @@ void LLVOSky::updateHaze()
max_r = sca_upper_bound;
}
- sca.mV[2] = min_r + WeatherRandomNumber.llfrand(max_r - min_r);
+ sca.mV[2] = min_r + (F32)weather_generator() * (max_r - min_r);
sca = AIR_SCA_AVG * sca;
diff --git a/indra/newview/llvotreenew.h b/indra/newview/llvotreenew.h
index e027c3860a..202f526acb 100644
--- a/indra/newview/llvotreenew.h
+++ b/indra/newview/llvotreenew.h
@@ -59,7 +59,7 @@ public:
// return +- negPos
static S32 llrand_signed(S32 negPos)
{
- return (gLindenLabRandomNumber.llrand((U32)negPos * 2) - negPos);
+ return (ll_rand((U32)negPos * 2) - negPos);
};
static S32 llrand_signed(S32 negPos, U32 index)
@@ -75,7 +75,7 @@ public:
// return +- negPos
static F32 llfrand_signed(F32 negPos)
{
- return (gLindenLabRandomNumber.llfrand(negPos * 2.0f) - negPos);
+ return (ll_frand(negPos * 2.0f) - negPos);
};
static F32 llfrand_signed(F32 negPos, U32 index)
@@ -91,7 +91,7 @@ public:
// return between 0-pos
static F32 llfrand_unsigned(F32 pos)
{
- return gLindenLabRandomNumber.llfrand(pos);
+ return ll_frand(pos);
};
static void cleanupTextures() {}; // not needed anymore