randomPoint.set(parent.getRandomMod() * 2*( FastMath.nextRandomFloat() - .5f), 0.0f, parent.getRandomMod() * 2*( FastMath.nextRandomFloat() - .5f)); location.addLocal(randomPoint);
location.addLocal(parent.getRandomMod() * 2 * (FastMath.nextRandomFloat() - .5f), 0.0f, parent.getRandomMod() * 2 * (FastMath.nextRandomFloat() - .5f));
  public boolean updateAndCheck(float secondsPassed) {    if (status != ALIVE) {      return true;    }    currentAge += secondsPassed * 1000; // add 10ms to age//    halfAge = currentAge >> 1;    if (currentAge > lifeSpan) {      status = DEAD;      color.a = 0;      return true;    }//    location.x = currentAge * ((halfAge*parent.getGravityForce().x) + speed.x) + initialLocation.x;//    location.y = currentAge * ((halfAge*parent.getGravityForce().y) + speed.y) + initialLocation.y;//    location.z = currentAge * ((halfAge*parent.getGravityForce().z) + speed.z) + initialLocation.z;    speed.scaleAdd(secondsPassed*1000f, parent.getGravityForce(), speed);    location.scaleAdd(secondsPassed*1000f, speed, location);    if (parent.getRandomMod() != 0.0f) {      randomPoint.set(parent.getRandomMod() *                      2*( FastMath.nextRandomFloat() - .5f),                      0.0f,                      parent.getRandomMod() *                      2*( FastMath.nextRandomFloat() - .5f));      location.addLocal(randomPoint);    }    lifeRatio = currentAge / lifeSpan;    // update the size, currently, the size    // updates both the x and y values. So you always    // get a square    currentSize = parent.getStartSize();    currentSize -=        ( (currentSize - parent.getEndSize()) * lifeRatio);    // interpolate colors    color.set(parent.getStartColor());    color.r -=        ( (color.r - parent.getEndColor().r) * lifeRatio);    color.g -=        ( (color.g - parent.getEndColor().g) * lifeRatio);    color.b -=        ( (color.b - parent.getEndColor().b) * lifeRatio);    color.a -=        ( (color.a - parent.getEndColor().a) * lifeRatio);    updateVerts();    return false;  }