@Override public void update () { for (int i = 0, l = ParticleChannels.LifePercentOffset, s = 0, c = i + controller.particles.size * rotationalVelocity2dChannel.strideSize; i < c; s += strengthChannel.strideSize, i += rotationalVelocity2dChannel.strideSize, l += lifeChannel.strideSize) { rotationalVelocity2dChannel.data[i] += strengthChannel.data[s + ParticleChannels.VelocityStrengthStartOffset] + strengthChannel.data[s + ParticleChannels.VelocityStrengthDiffOffset] * strengthValue.getScale(lifeChannel.data[l]); } }
@Override public void update () { for (int i = 0, a = 0, l = ParticleChannels.LifePercentOffset, c = i + controller.particles.size * valueChannel.strideSize; i < c; i += valueChannel.strideSize, a += interpolationChannel.strideSize, l += lifeChannel.strideSize) { valueChannel.data[i] = interpolationChannel.data[a + ParticleChannels.InterpolationStartOffset] + interpolationChannel.data[a + ParticleChannels.InterpolationDiffOffset] * value.getScale(lifeChannel.data[l]); } }
@Override public void spawnAux (Vector3 vector, float percent) { vector.x = spawnWidth + (spawnWidthDiff * spawnWidthValue.getScale(percent)); vector.y = spawnHeight + (spawnHeightDiff * spawnHeightValue.getScale(percent)); vector.z = spawnDepth + (spawnDepthDiff * spawnDepthValue.getScale(percent)); }
@Override public void update () { for (int i = 0, a = 0, l = ParticleChannels.LifePercentOffset, c = i + controller.particles.size * valueChannel.strideSize; i < c; i += valueChannel.strideSize, a += interpolationChannel.strideSize, l += lifeChannel.strideSize) { valueChannel.data[i] = interpolationChannel.data[a + ParticleChannels.InterpolationStartOffset] + interpolationChannel.data[a + ParticleChannels.InterpolationDiffOffset] * value.getScale(lifeChannel.data[l]); } }
@Override public void update () { for (int i = 0, l = ParticleChannels.LifePercentOffset, s = 0, c = i + controller.particles.size * rotationalVelocity2dChannel.strideSize; i < c; s += strengthChannel.strideSize, i += rotationalVelocity2dChannel.strideSize, l += lifeChannel.strideSize) { rotationalVelocity2dChannel.data[i] += strengthChannel.data[s + ParticleChannels.VelocityStrengthStartOffset] + strengthChannel.data[s + ParticleChannels.VelocityStrengthDiffOffset] * strengthValue.getScale(lifeChannel.data[l]); } }
@Override public void spawnAux (Vector3 vector, float percent) { vector.x = spawnWidth + (spawnWidthDiff * spawnWidthValue.getScale(percent)); vector.y = spawnHeight + (spawnHeightDiff * spawnHeightValue.getScale(percent)); vector.z = spawnDepth + (spawnDepthDiff * spawnDepthValue.getScale(percent)); }
public void activateParticles (int startIndex, int count) { int currentTotaLife = life + (int)(lifeDiff * lifeValue.getScale(percent)), currentLife = currentTotaLife; int offsetTime = (int)(lifeOffset + lifeOffsetDiff * lifeOffsetValue.getScale(percent)); if (offsetTime > 0) { if (offsetTime >= currentLife) offsetTime = currentLife - 1; currentLife -= offsetTime; } float lifePercent = 1 - currentLife / (float)currentTotaLife; for (int i = startIndex * lifeChannel.strideSize, c = i + count * lifeChannel.strideSize; i < c; i += lifeChannel.strideSize) { lifeChannel.data[i + ParticleChannels.CurrentLifeOffset] = currentLife; lifeChannel.data[i + ParticleChannels.TotalLifeOffset] = currentTotaLife; lifeChannel.data[i + ParticleChannels.LifePercentOffset] = lifePercent; } }
public void activateParticles (int startIndex, int count) { int currentTotaLife = life + (int)(lifeDiff * lifeValue.getScale(percent)), currentLife = currentTotaLife; int offsetTime = (int)(lifeOffset + lifeOffsetDiff * lifeOffsetValue.getScale(percent)); if (offsetTime > 0) { if (offsetTime >= currentLife) offsetTime = currentLife - 1; currentLife -= offsetTime; } float lifePercent = 1 - currentLife / (float)currentTotaLife; for (int i = startIndex * lifeChannel.strideSize, c = i + count * lifeChannel.strideSize; i < c; i += lifeChannel.strideSize) { lifeChannel.data[i + ParticleChannels.CurrentLifeOffset] = currentLife; lifeChannel.data[i + ParticleChannels.TotalLifeOffset] = currentTotaLife; lifeChannel.data[i + ParticleChannels.LifePercentOffset] = lifePercent; } }
@Override public void spawnAux (Vector3 vector, float percent) { float width = spawnWidth + (spawnWidthDiff * spawnWidthValue.getScale(percent)); float height = spawnHeight + (spawnHeightDiff * spawnHeightValue.getScale(percent)); float depth = spawnDepth + (spawnDepthDiff * spawnDepthValue.getScale(percent)); float a = MathUtils.random(); vector.x = a * width; vector.y = a * height; vector.z = a * depth; }
@Override public void spawnAux (Vector3 vector, float percent) { float width = spawnWidth + (spawnWidthDiff * spawnWidthValue.getScale(percent)); float height = spawnHeight + (spawnHeightDiff * spawnHeightValue.getScale(percent)); float depth = spawnDepth + (spawnDepthDiff * spawnDepthValue.getScale(percent)); float a = MathUtils.random(); vector.x = a * width; vector.y = a * height; vector.z = a * depth; }
@Override public void update () { for (int i = 0, a = 0, l = ParticleChannels.LifePercentOffset, c = i + controller.particles.size * colorChannel.strideSize; i < c; i += colorChannel.strideSize, a += alphaInterpolationChannel.strideSize, l += lifeChannel.strideSize) { float lifePercent = lifeChannel.data[l]; colorValue.getColor(lifePercent, colorChannel.data, i); colorChannel.data[i + ParticleChannels.AlphaOffset] = alphaInterpolationChannel.data[a + ParticleChannels.InterpolationStartOffset] + alphaInterpolationChannel.data[a + ParticleChannels.InterpolationDiffOffset] * alphaValue.getScale(lifePercent); } }
@Override public void update () { for (int i = 0, a = 0, l = ParticleChannels.LifePercentOffset, c = i + controller.particles.size * colorChannel.strideSize; i < c; i += colorChannel.strideSize, a += alphaInterpolationChannel.strideSize, l += lifeChannel.strideSize) { float lifePercent = lifeChannel.data[l]; colorValue.getColor(lifePercent, colorChannel.data, i); colorChannel.data[i + ParticleChannels.AlphaOffset] = alphaInterpolationChannel.data[a + ParticleChannels.InterpolationStartOffset] + alphaInterpolationChannel.data[a + ParticleChannels.InterpolationDiffOffset] * alphaValue.getScale(lifePercent); } }
@Override public void update () { for (int i = 0, l = ParticleChannels.LifePercentOffset, s = 0, a = 0, c = i + controller.particles.size * directionalVelocityChannel.strideSize; i < c; s += strengthChannel.strideSize, i += directionalVelocityChannel.strideSize, a += angularChannel.strideSize, l += lifeChannel.strideSize) { float lifePercent = lifeChannel.data[l], strength = strengthChannel.data[s + ParticleChannels.VelocityStrengthStartOffset] + strengthChannel.data[s + ParticleChannels.VelocityStrengthDiffOffset] * strengthValue.getScale(lifePercent), phi = angularChannel.data[a + ParticleChannels.VelocityPhiStartOffset] + angularChannel.data[a + ParticleChannels.VelocityPhiDiffOffset] * phiValue.getScale(lifePercent), theta = angularChannel.data[a + ParticleChannels.VelocityThetaStartOffset] + angularChannel.data[a + ParticleChannels.VelocityThetaDiffOffset] * thetaValue.getScale(lifePercent); float cosTheta = MathUtils.cosDeg(theta), sinTheta = MathUtils.sinDeg(theta), cosPhi = MathUtils.cosDeg(phi), sinPhi = MathUtils .sinDeg(phi); TMP_V3.set(cosTheta * sinPhi, cosPhi, sinTheta * sinPhi).nor().scl(strength); directionalVelocityChannel.data[i + ParticleChannels.XOffset] += TMP_V3.x; directionalVelocityChannel.data[i + ParticleChannels.YOffset] += TMP_V3.y; directionalVelocityChannel.data[i + ParticleChannels.ZOffset] += TMP_V3.z; } }
@Override public void activateParticles (int startIndex, int count) { for (int i = startIndex * colorChannel.strideSize, a = startIndex * alphaInterpolationChannel.strideSize, l = startIndex * lifeChannel.strideSize + ParticleChannels.LifePercentOffset, c = i + count * colorChannel.strideSize; i < c; i += colorChannel.strideSize, a += alphaInterpolationChannel.strideSize, l += lifeChannel.strideSize) { float alphaStart = alphaValue.newLowValue(); float alphaDiff = alphaValue.newHighValue() - alphaStart; colorValue.getColor(0, colorChannel.data, i); colorChannel.data[i + ParticleChannels.AlphaOffset] = alphaStart + alphaDiff * alphaValue.getScale(lifeChannel.data[l]); alphaInterpolationChannel.data[a + ParticleChannels.InterpolationStartOffset] = alphaStart; alphaInterpolationChannel.data[a + ParticleChannels.InterpolationDiffOffset] = alphaDiff; } }
@Override public void update () { for (int i = 0, l = ParticleChannels.LifePercentOffset, s = 0, a = 0, c = i + controller.particles.size * directionalVelocityChannel.strideSize; i < c; s += strengthChannel.strideSize, i += directionalVelocityChannel.strideSize, a += angularChannel.strideSize, l += lifeChannel.strideSize) { float lifePercent = lifeChannel.data[l], strength = strengthChannel.data[s + ParticleChannels.VelocityStrengthStartOffset] + strengthChannel.data[s + ParticleChannels.VelocityStrengthDiffOffset] * strengthValue.getScale(lifePercent), phi = angularChannel.data[a + ParticleChannels.VelocityPhiStartOffset] + angularChannel.data[a + ParticleChannels.VelocityPhiDiffOffset] * phiValue.getScale(lifePercent), theta = angularChannel.data[a + ParticleChannels.VelocityThetaStartOffset] + angularChannel.data[a + ParticleChannels.VelocityThetaDiffOffset] * thetaValue.getScale(lifePercent); float cosTheta = MathUtils.cosDeg(theta), sinTheta = MathUtils.sinDeg(theta), cosPhi = MathUtils.cosDeg(phi), sinPhi = MathUtils .sinDeg(phi); TMP_V3.set(cosTheta * sinPhi, cosPhi, sinTheta * sinPhi).nor().scl(strength); directionalVelocityChannel.data[i + ParticleChannels.XOffset] += TMP_V3.x; directionalVelocityChannel.data[i + ParticleChannels.YOffset] += TMP_V3.y; directionalVelocityChannel.data[i + ParticleChannels.ZOffset] += TMP_V3.z; } }
@Override public void activateParticles (int startIndex, int count) { for (int i = startIndex * colorChannel.strideSize, a = startIndex * alphaInterpolationChannel.strideSize, l = startIndex * lifeChannel.strideSize + ParticleChannels.LifePercentOffset, c = i + count * colorChannel.strideSize; i < c; i += colorChannel.strideSize, a += alphaInterpolationChannel.strideSize, l += lifeChannel.strideSize) { float alphaStart = alphaValue.newLowValue(); float alphaDiff = alphaValue.newHighValue() - alphaStart; colorValue.getColor(0, colorChannel.data, i); colorChannel.data[i + ParticleChannels.AlphaOffset] = alphaStart + alphaDiff * alphaValue.getScale(lifeChannel.data[l]); alphaInterpolationChannel.data[a + ParticleChannels.InterpolationStartOffset] = alphaStart; alphaInterpolationChannel.data[a + ParticleChannels.InterpolationDiffOffset] = alphaDiff; } }
@Override public void activateParticles (int startIndex, int count) { if (!value.isRelative()) { for (int i = startIndex * valueChannel.strideSize, a = startIndex * interpolationChannel.strideSize, c = i + count * valueChannel.strideSize; i < c; i += valueChannel.strideSize, a += interpolationChannel.strideSize) { float start = value.newLowValue(); float diff = value.newHighValue() - start; interpolationChannel.data[a + ParticleChannels.InterpolationStartOffset] = start; interpolationChannel.data[a + ParticleChannels.InterpolationDiffOffset] = diff; valueChannel.data[i] = start + diff * value.getScale(0); } } else { for (int i = startIndex * valueChannel.strideSize, a = startIndex * interpolationChannel.strideSize, c = i + count * valueChannel.strideSize; i < c; i += valueChannel.strideSize, a += interpolationChannel.strideSize) { float start = value.newLowValue(); float diff = value.newHighValue(); interpolationChannel.data[a + ParticleChannels.InterpolationStartOffset] = start; interpolationChannel.data[a + ParticleChannels.InterpolationDiffOffset] = diff; valueChannel.data[i] = start + diff * value.getScale(0); } } }
@Override public void activateParticles (int startIndex, int count) { if (value.isRelative()) { for (int i = startIndex * valueChannel.strideSize, a = startIndex * interpolationChannel.strideSize, c = i + count * valueChannel.strideSize; i < c; i += valueChannel.strideSize, a += interpolationChannel.strideSize) { float start = value.newLowValue() * controller.scale.x; float diff = value.newHighValue() * controller.scale.x; interpolationChannel.data[a + ParticleChannels.InterpolationStartOffset] = start; interpolationChannel.data[a + ParticleChannels.InterpolationDiffOffset] = diff; valueChannel.data[i] = start + diff * value.getScale(0); } } else { for (int i = startIndex * valueChannel.strideSize, a = startIndex * interpolationChannel.strideSize, c = i + count * valueChannel.strideSize; i < c; i += valueChannel.strideSize, a += interpolationChannel.strideSize) { float start = value.newLowValue() * controller.scale.x; float diff = value.newHighValue() * controller.scale.x - start; interpolationChannel.data[a + ParticleChannels.InterpolationStartOffset] = start; interpolationChannel.data[a + ParticleChannels.InterpolationDiffOffset] = diff; valueChannel.data[i] = start + diff * value.getScale(0); } } }
@Override public void update () { int lifeOffset = ParticleChannels.LifePercentOffset, strengthOffset = 0, forceOffset = 0; for (int i = 0, c = controller.particles.size; i < c; ++i, strengthOffset += strengthChannel.strideSize, forceOffset += accelerationChannel.strideSize, lifeOffset += lifeChannel.strideSize) { float strength = strengthChannel.data[strengthOffset + ParticleChannels.VelocityStrengthStartOffset] + strengthChannel.data[strengthOffset + ParticleChannels.VelocityStrengthDiffOffset] * strengthValue.getScale(lifeChannel.data[lifeOffset]); TMP_V3.set(MathUtils.random(-1, 1f), MathUtils.random(-1, 1f), MathUtils.random(-1, 1f)).nor().scl(strength); accelerationChannel.data[forceOffset + ParticleChannels.XOffset] += TMP_V3.x; accelerationChannel.data[forceOffset + ParticleChannels.YOffset] += TMP_V3.y; accelerationChannel.data[forceOffset + ParticleChannels.ZOffset] += TMP_V3.z; } }
@Override public void update () { int lifeOffset = ParticleChannels.LifePercentOffset, strengthOffset = 0, forceOffset = 0; for (int i = 0, c = controller.particles.size; i < c; ++i, strengthOffset += strengthChannel.strideSize, forceOffset += accelerationChannel.strideSize, lifeOffset += lifeChannel.strideSize) { float strength = strengthChannel.data[strengthOffset + ParticleChannels.VelocityStrengthStartOffset] + strengthChannel.data[strengthOffset + ParticleChannels.VelocityStrengthDiffOffset] * strengthValue.getScale(lifeChannel.data[lifeOffset]); TMP_V3.set(MathUtils.random(-1, 1f), MathUtils.random(-1, 1f), MathUtils.random(-1, 1f)).nor().scl(strength); accelerationChannel.data[forceOffset + ParticleChannels.XOffset] += TMP_V3.x; accelerationChannel.data[forceOffset + ParticleChannels.YOffset] += TMP_V3.y; accelerationChannel.data[forceOffset + ParticleChannels.ZOffset] += TMP_V3.z; } }