projects
/
platform
/
core
/
uifw
/
dali-toolkit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix VD prevent issues
[platform/core/uifw/dali-toolkit.git]
/
dali-toolkit
/
internal
/
controls
/
bubble-effect
/
bubble-emitter-impl.cpp
diff --git
a/dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.cpp
b/dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.cpp
index
a9b9aa9
..
9fed7cc
100644
(file)
--- a/
dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.cpp
+++ b/
dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.cpp
@@
-48,11
+48,12
@@
struct Vertex
* Return a random value between the given interval.
* @param[in] f0 The low bound
* @param[in] f1 The up bound
* Return a random value between the given interval.
* @param[in] f0 The low bound
* @param[in] f1 The up bound
+ * @param[in] seed The seed to genergate random number
* @return A random value between the given interval
*/
* @return A random value between the given interval
*/
-float RandomRange(float f0, float f1)
+float RandomRange(float f0, float f1
, unsigned int& seed
)
{
{
- return f0 + (rand
(
) & 0xfff) * (f1-f0) * (1.0f/4095.0f);
+ return f0 + (rand
_r( &seed
) & 0xfff) * (f1-f0) * (1.0f/4095.0f);
}
}
}
}
@@
-76,6
+77,7
@@
BubbleEmitter::BubbleEmitter( const Vector2& movementArea,
mDensity( 5 ),
mTotalNumOfBubble( maximumNumberOfBubble ),
mCurrentBubble( 0 ),
mDensity( 5 ),
mTotalNumOfBubble( maximumNumberOfBubble ),
mCurrentBubble( 0 ),
+ mRandomSeed( 0 ),
mRenderTaskRunning(false)
{
// Calculate how many shaders are required
mRenderTaskRunning(false)
{
// Calculate how many shaders are required
@@
-95,6
+97,8
@@
BubbleEmitter::BubbleEmitter( const Vector2& movementArea,
mNumBubblePerActor = mTotalNumOfBubble;
mNumActor = 1;
}
mNumBubblePerActor = mTotalNumOfBubble;
mNumActor = 1;
}
+
+ mRandomSeed = time( NULL );
}
BubbleEmitter::~BubbleEmitter()
}
BubbleEmitter::~BubbleEmitter()
@@
-297,7
+301,7
@@
Geometry BubbleEmitter::CreateGeometry( unsigned int numOfPatch )
for(unsigned int i = 0; i < numOfPatch; i++)
{
for(unsigned int i = 0; i < numOfPatch; i++)
{
- float curSize = RandomRange(mBubbleSizeRange.x, mBubbleSizeRange.y);
+ float curSize = RandomRange(mBubbleSizeRange.x, mBubbleSizeRange.y
, mRandomSeed
);
float index = static_cast<float>( i );
vertexData.push_back( Vertex( index, Vector2(0.f,0.f), Vector2(0.f,0.f) ) );
float index = static_cast<float>( i );
vertexData.push_back( Vertex( index, Vector2(0.f,0.f), Vector2(0.f,0.f) ) );
@@
-340,7
+344,7
@@
void BubbleEmitter::SetBubbleParameter( BubbleActorPtr bubbleActor, unsigned int
int halfRange = displacement.x / 2;
// for the y coordinate, always negative, so bubbles always go upwards
int halfRange = displacement.x / 2;
// for the y coordinate, always negative, so bubbles always go upwards
- Vector2 randomVec(
rand()%static_cast<int>(displacement.x) - halfRange, -rand()%static_cast<int>(displacement.y)
);
+ Vector2 randomVec(
rand_r( &mRandomSeed ) % static_cast<int>(displacement.x) - halfRange, -rand_r( &mRandomSeed ) % static_cast<int>(displacement.y)
);
dir.Normalize();
randomVec.x -= dir.x*halfRange;
randomVec.y *= 1.0f - fabsf(dir.x)*0.33f;
dir.Normalize();
randomVec.x -= dir.x*halfRange;
randomVec.y *= 1.0f - fabsf(dir.x)*0.33f;