An example of a mapped particle inner class (more like a struct though…):
protected static class MappedParticle extends MappedObject {
@MappedField(byteOffset = 0)
private float x;
@MappedField(byteOffset = 4)
private float y;
@MappedField(byteOffset = 8)
private byte r;
@MappedField(byteOffset = 9)
private byte g;
@MappedField(byteOffset = 10)
private byte b;
@MappedField(byteOffset = 11)
private byte a;
public void init(float x, float y, float r, float g, float b) {
this.x = x;
this.y = y;
this.r = (byte) (r * 255);
this.g = (byte) (g * 255);
this.b = (byte) (b * 255);
a = (byte) 255;
}
public void update(float xSpeed, float ySpeed) {
x += xSpeed;
y += ySpeed;
}
}
Starting the program with MappedObjects enabled (ParticleTest8 is my main class name):
public static void main(String[] args) {
MappedObjectTransformer.register(MappedParticle.class);
if (MappedObjectClassLoader.fork(ParticleTest8.class, args)) {
return;
}
//releaseInit();
new ParticleTest8().gameloop();
}
Creating and using individual objects:
ByteBuffer buffer = BufferUtils.createByteBuffer(particleByteSize * numParticles);
MappedParticle mappedParticleData = MappedParticle.map(buffer);
//OR (untested code):
//MappedParticle mappedParticleData = MappedParticle.malloc(numParticles);
//ByteBuffer buffer = mappedParticleData.backingByteBuffer();
for (int i = 0; i < numParticles; i++) {
mappedParticleData.view = i;
mappedParticleData.init(...);
}
This should get you started…