Esempio n. 1
0
  @Override
  protected void process(int entityId) {
    //		float scale = this.scale * swarmSize;
    Pos pos = mPos.get(entityId);
    Swarmer swarmer = mSwarmer.get(entityId);
    //		swarmer.age += world.delta;
    swarmer.angle -= world.delta * swarmer.angularSpeed / (scale * 10);
    if (swarmer.angle >= 360) swarmer.angle -= 360;
    if (swarmer.angle < 0) swarmer.angle += 360;
    if (pos.xy.dst2(sPos) <= sRadius2) {
      for (int i = 0; i < size; i++) {
        int eid = data[i];
        Bounds eb = mCircleBounds.get(eid);
        if (eb.b.contains(pos.xy)) {
          pos.set(eb.b.x, eb.b.y);
          pos.xy.add(
              MathUtils.randomTriangular(-eb.radius, eb.radius, 0),
              MathUtils.randomTriangular(-eb.radius, eb.radius, 0));
          return;
        }
      }
    }
    pos.xy.set(1, 0).setAngle(swarmer.angle).scl(swarmer.dst * dstScale).add(cs.xy);

    Tint tint = mTint.get(entityId);
    tint.set(1, 1 - (swarmer.clamp * scale), (swarmer.clamp * scale) / 5, 1);
  }