Result of svn merge -r56700:56797 svn+ssh://svn/svn/linden/branches/more-random into release.

master
Aaron Brashears 2007-01-18 00:44:48 +00:00
parent 73f0b5029a
commit c189fc0b57
25 changed files with 136 additions and 147 deletions

View File

@ -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();
}
}

View File

@ -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)
{

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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, "");

View File

@ -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.

View File

@ -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++;
}

View File

@ -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);

View File

@ -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;

View File

@ -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.

View File

@ -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;

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}
}
}

View File

@ -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;

View File

@ -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);

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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();
}

View File

@ -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
}
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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