//////////////////////////////////////////////////////////////////////////////////// // Update - Changes wind when current target velocity expires //////////////////////////////////////////////////////////////////////////////////// void Update() { if (mTargetVelocityTimeRemaining==0) { if (FloatRand()<mChanceOfDeadTime) { mRDeadTime.Pick(mTargetVelocityTimeRemaining); mTargetVelocity.Clear(); } else { mRDuration.Pick(mTargetVelocityTimeRemaining); mRVelocity.Pick(mTargetVelocity); } } else if (mTargetVelocityTimeRemaining!=-1) { mTargetVelocityTimeRemaining--; CVec3 DeltaVelocity(mTargetVelocity - mCurrentVelocity); float DeltaVelocityLen = VectorNormalize(DeltaVelocity.v); if (DeltaVelocityLen > mMaxDeltaVelocityPerUpdate) { DeltaVelocityLen = mMaxDeltaVelocityPerUpdate; } DeltaVelocity *= (DeltaVelocityLen); mCurrentVelocity += DeltaVelocity; } }
//////////////////////////////////////////////////////////////////////////////////// // Initialize - Will setup default values for all data //////////////////////////////////////////////////////////////////////////////////// void Initialize() { mRBounds.Clear(); mGlobal = true; mRVelocity.mMins = -1500.0f; mRVelocity.mMins[2] = -10.0f; mRVelocity.mMaxs = 1500.0f; mRVelocity.mMaxs[2] = 10.0f; mMaxDeltaVelocityPerUpdate = 10.0f; mRDuration.mMin = 1000; mRDuration.mMax = 2000; mChanceOfDeadTime = 0.3f; mRDeadTime.mMin = 1000; mRDeadTime.mMax = 3000; mCurrentVelocity.Clear(); mTargetVelocity.Clear(); mTargetVelocityTimeRemaining = 0; }
inline void Clear() { mMins.Clear(); mMaxs.Clear(); }