diff options
Diffstat (limited to 'src/JSystem/JParticle/JPAExtraShape.cpp')
| -rw-r--r-- | src/JSystem/JParticle/JPAExtraShape.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/JSystem/JParticle/JPAExtraShape.cpp b/src/JSystem/JParticle/JPAExtraShape.cpp index 09c6b45bb0..43244dbce6 100644 --- a/src/JSystem/JParticle/JPAExtraShape.cpp +++ b/src/JSystem/JParticle/JPAExtraShape.cpp @@ -35,7 +35,6 @@ void JPACalcScaleY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { } void JPACalcScaleCopy(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { - JPAExtraShape* esp = work->mpRes->getEsp(); ptcl->mParticleScaleY = ptcl->mParticleScaleX; } @@ -55,21 +54,21 @@ void JPACalcScaleAnmRepeatY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { void JPACalcScaleAnmReverseX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { JPAExtraShape* esp = work->mpRes->getEsp(); - s32 cycle = ptcl->mAge / esp->getScaleAnmCycleX(); + f32 cycle = ptcl->mAge / esp->getScaleAnmCycleX() & 1; f32 base = (ptcl->mAge % esp->getScaleAnmCycleX()) / (f32)esp->getScaleAnmCycleX(); - work->mScaleAnm = base + ((cycle & 1) * (1.0f - base * 2.0f)); + work->mScaleAnm = base + cycle * (1.0f - base * 2.0f); } void JPACalcScaleAnmReverseY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { JPAExtraShape* esp = work->mpRes->getEsp(); - s32 cycle = ptcl->mAge / esp->getScaleAnmCycleY(); + f32 cycle = ptcl->mAge / esp->getScaleAnmCycleY() & 1; f32 base = (ptcl->mAge % esp->getScaleAnmCycleY()) / (f32)esp->getScaleAnmCycleY(); - work->mScaleAnm = base + ((cycle & 1) * (1.0f - base * 2.0f)); + work->mScaleAnm = base + cycle * (1.0f - base * 2.0f); } void JPACalcAlphaAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { JPAExtraShape* esp = work->mpRes->getEsp(); - f32 alpha; + f32 alpha = 0.0f; if (ptcl->mTime < esp->getAlphaInTiming()) { alpha = 255.0f * (esp->getAlphaInValue() + esp->getAlphaIncRate() * ptcl->mTime); } else if (ptcl->mTime > esp->getAlphaOutTiming()) { @@ -83,7 +82,7 @@ void JPACalcAlphaAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { void JPACalcAlphaFlickAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { JPAExtraShape* esp = work->mpRes->getEsp(); - f32 alpha; + f32 alpha = 0.0f; if (ptcl->mTime < esp->getAlphaInTiming()) { alpha = (esp->getAlphaInValue() + esp->getAlphaIncRate() * ptcl->mTime); } else if (ptcl->mTime > esp->getAlphaOutTiming()) { @@ -92,8 +91,7 @@ void JPACalcAlphaFlickAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { } else { alpha = esp->getAlphaBaseValue(); } - s32 theta = ptcl->mAlphaWaveRandom * ptcl->mAge * 16384.0f * (1.0f - esp->getAlphaFreq()); - f32 wave = JMASSin(theta); + f32 wave = JMASSin(ptcl->mAlphaWaveRandom * ptcl->mAge * 16384.0f * (1.0f - esp->getAlphaFreq())); alpha *= (1.0f + esp->getAlphaAmp() * (wave - 1.0f) * 0.5f) * 255.0f; OSf32tou8(&alpha, &ptcl->mPrmColorAlphaAnm); } |
