package boids;
import static aspect.core.AspectLauncher.*;
import aspect.core.AspectRenderer;
import static aspect.core.AspectRenderer.*;
import aspect.entity.Entity;
import aspect.entity.behavior.Behavior;
import aspect.physics.RigidBody;
import aspect.physics.force.DynamicPointForce;
import aspect.physics.force.Force;
import aspect.physics.force.IntensityModel;
import static aspect.resources.Resources.*;
import aspect.world.ListWorld;
import java.util.LinkedList;
import static org.lwjgl.opengl.GL11.*;
public class Boids extends Behavior {
public static final float BOID_COHESION = 1.5e5f;
public static final float BOID_ALIGNMENT = 1e5f;
public static final float BOID_SEPARATION = 1e7f;
public static final int nBoids = 20;
public ListWorld boids;
public static void main(String[] args) {
createAnimation(800, 600, false, -1, new Boids());
printFPS(1000);
}
@Override
public void onAdd() {
boids = new ListWorld();
LinkedList<Force> forces = new LinkedList<>();
for (int i = 0; i < nBoids; i++) {
Boid b = new Boid();
boids.add(b);
forces.add(b.alignment);
forces.add(b.cohesion);
forces.add(b.separation);
}
for (Entity boid : boids) {
RigidBody rb = boid.rigidBody();
for (Force f : forces) {
rb.addForce(f);
}
}
}
@Override
public void update() {
boids.update();
}
@Override
public void render() {
AspectRenderer.setRenderMode(RenderMode.ORTHOGONAL);
boids.draw();
}
}