use of net.drewke.tdme.engine.PointsParticleSystemEntity in project tdme by andreasdr.
the class EngineTest method init.
/*
* (non-Javadoc)
* @see com.jogamp.opengl.GLEventListener#init(com.jogamp.opengl.GLAutoDrawable)
*/
public void init(GLAutoDrawable drawable) {
engine.init(drawable);
if (osEngine == null) {
osEngine = Engine.createOffScreenInstance(drawable, 512, 512);
//
Light osLight0 = osEngine.getLightAt(0);
osLight0.getAmbient().set(1.0f, 1.0f, 1.0f, 1.0f);
osLight0.getDiffuse().set(1.0f, 1.0f, 1.0f, 1.0f);
osLight0.getPosition().set(0.0f, -4f, -4f, 1.0f);
osLight0.getSpotDirection().set(new Vector3(osLight0.getPosition().getArray())).sub(new Vector3(0f, 0f, 0f));
osLight0.setEnabled(true);
// cam
Camera osCam = osEngine.getCamera();
osCam.setZNear(0.10f);
osCam.setZFar(50.00f);
osCam.getLookFrom().set(0f, 4f, -4f);
osCam.getLookAt().set(0f, 0.50f, 0f);
osCam.computeUpVector(osCam.getLookFrom(), osCam.getLookAt(), osCam.getUpVector());
// scene color
osEngine.getSceneColor().set(0.5f, 0.0f, 0.0f, 1.0f);
}
// cam
Camera cam = engine.getCamera();
cam.setZNear(0.10f);
cam.setZFar(50.00f);
cam.getLookFrom().set(0f, 3f, -8f);
cam.getLookAt().set(0f, 0.50f, 0f);
cam.computeUpVector(cam.getLookFrom(), cam.getLookAt(), cam.getUpVector());
// lights
Light light0 = engine.getLightAt(0);
light0.getAmbient().set(1.0f, 1.0f, 1.0f, 1.0f);
light0.getDiffuse().set(0.5f, 0.5f, 0.5f, 1f);
light0.getSpecular().set(1f, 1f, 1f, 1f);
light0.getPosition().set(0f, 20000f, 0f, 1f);
light0.getSpotDirection().set(0f, 0f, 0f).sub(new Vector3(light0.getPosition().getArray()));
light0.setConstantAttenuation(0.5f);
light0.setLinearAttenuation(0f);
light0.setQuadraticAttenuation(0f);
light0.setSpotExponent(0f);
light0.setSpotCutOff(180f);
light0.setEnabled(true);
Light light1 = engine.getLightAt(1);
light1.getDiffuse().set(1.0f, 0.0f, 0.0f, 1.0f);
light1.getPosition().set(-4.0f, 5.0f, -5.0f, 1.0f);
light1.getSpotDirection().set(0f, 0f, 0f).sub(new Vector3(light1.getPosition().getArray()));
light1.setEnabled(true);
Light light2 = engine.getLightAt(2);
light2.getDiffuse().set(0.0f, 1.0f, 0.0f, 1.0f);
light2.getPosition().set(+4.0f, 5.0f, 0.0f, 1.0f);
light2.getSpotDirection().set(0f, 0f, 0f).sub(new Vector3(light2.getPosition().getArray()));
light2.setEnabled(true);
// scene
players = new ArrayList<Object3D>();
playersBoundingVolumeModel = new ArrayList<Object3D>();
playerBoundingVolumesTransformed = new ArrayList<BoundingVolume>();
try {
Model _barrel = DAEReader.read("resources/tests/models/barrel", "barrel.dae");
Object3D barrel = new Object3D("barrel", _barrel);
barrelBoundingVolume = new ConvexMesh(new Object3DModel(_barrel));
barrel.getTranslation().set(1.5f, 0.35f, -2f);
barrel.setDynamicShadowingEnabled(true);
barrel.setEnabled(true);
barrel.update();
barrelBoundingVolumeTransformed = barrelBoundingVolume.clone();
barrelBoundingVolumeTransformed.fromBoundingVolumeWithTransformations(barrelBoundingVolume, barrel);
engine.addEntity(barrel);
// wall
Model _farPlane = createWallModel();
Object3D farPlane = new Object3D("wall", _farPlane);
farPlane.bindDiffuseTexture("wall", "wall", osEngine.getFrameBuffer());
engine.addEntity(farPlane);
//
Model _grass = DAEReader.read("resources/tests/models/grass", "grass.dae");
Object3D grass = new Object3D("ground", _grass);
grass.setEnabled(true);
grass.getScale().set(8f, 1f, 8f);
grass.update();
engine.addEntity(grass);
// players
Model _player = DAEReader.read("resources/tests/models/dummy", "testDummy_textured.DAE");
_player.addAnimationSetup("still", 3, 3, true);
_player.addAnimationSetup("walk", 0, 18, true);
// player bounding volume
// playerBoundingVolume = Sphere.createBoundingVolume(new Vector3(0,90f/130f,0), 90f/130f);
playerBoundingVolume = Capsule.createBoundingVolume(new Vector3(0, 30f / 130f, 0), new Vector3(0, 230f / 130f, 0), 25 / 130f);
// playerBoundingVolume = BoundingBox.createBoundingVolume(new Vector3(-25f/130f, 0, -25f/130f), new Vector3(+25f/130f, 180f/130f, +25f/130f));
/*
playerBoundingVolume = OrientedBoundingBox.createBoundingVolume(
new Vector3(0f, 90f/130f, 0f),
new Vector3(1f, 0f, 0f),
new Vector3(0f, 1f, 0f),
new Vector3(0f, 0f, 1f),
new Vector3(25f/130f, 90f/130f, 25f/130f)
);
*/
playerBoundingVolumeModel = PrimitiveModel.createModel(playerBoundingVolume, "player_bv");
// add player 1
// player
Object3D player1 = new Object3D("player1", _player);
player1.getTranslation().add(new Vector3(-1.50f, 0f, 0f));
player1.setAnimation("still");
player1.getRotations().add(new Rotation(0f, new Vector3(0f, 1f, 0f)));
player1.update();
player1.setEnabled(true);
player1.setPickable(true);
player1.setDynamicShadowingEnabled(true);
engine.addEntity(player1);
// bounding volume transformed
BoundingVolume player1BoundingVolumeTransformed = playerBoundingVolume.clone();
player1BoundingVolumeTransformed.fromBoundingVolumeWithTransformations(playerBoundingVolume, player1);
playerBoundingVolumesTransformed.add(player1BoundingVolumeTransformed);
// add to engine
players.add(player1);
// bounding volume
Object3D player1BoundingVolume = new Object3D("player1_bv", playerBoundingVolumeModel);
player1BoundingVolume.fromTransformations(player1);
player1BoundingVolume.setEnabled(true);
playersBoundingVolumeModel.add(player1BoundingVolume);
// engine.addEntity(player1BoundingVolume);
// add player 2
// player
Object3D player2 = new Object3D("player2", _player);
player2.getTranslation().add(new Vector3(1.50f, 0f, 0f));
player2.setAnimation("still");
player2.getRotations().add(new Rotation(0f, new Vector3(0f, 1f, 0f)));
player2.update();
player2.setEnabled(true);
player2.setPickable(true);
player2.setDynamicShadowingEnabled(true);
players.add(player2);
// bounding volume transformed
BoundingVolume player2BoundingVolumeTransformed = playerBoundingVolume.clone();
player2BoundingVolumeTransformed.fromBoundingVolumeWithTransformations(playerBoundingVolume, player2);
playerBoundingVolumesTransformed.add(player2BoundingVolumeTransformed);
// add to engine
engine.addEntity(player2);
// bounding volume
Object3D player2BoundingVolume = new Object3D("player2_bv", playerBoundingVolumeModel);
player2BoundingVolume.fromTransformations(player2);
player2BoundingVolume.setEnabled(true);
playersBoundingVolumeModel.add(player2BoundingVolume);
// engine.addEntity(player2BoundingVolume);
// add cube
Model _cube = DAEReader.read("resources/tests/models/test", "cube.dae");
cube = new Object3D("cube", _cube);
cube.getTranslation().add(new Vector3(0f, 0f, 0f));
cube.getScale().set(2f, 2f, 2f);
cube.update();
cube.setPickable(true);
cube.setDynamicShadowingEnabled(true);
cube.setEnabled(true);
cubeBoundingVolume = cube.getBoundingBox();
cubeBoundingVolumeTransformed = cubeBoundingVolume.clone();
cubeBoundingVolumeTransformed.fromBoundingVolumeWithTransformations(cubeBoundingVolume, cube);
engine.addEntity(cube);
//
cubeBoundingVolumeModel = PrimitiveModel.createModel(cubeBoundingVolume, "cube_bv");
// bounding volume
Object3D cubeBoundingVolumeObject3D = new Object3D("cube_bv", cubeBoundingVolumeModel);
cubeBoundingVolumeObject3D.fromTransformations(cube);
cubeBoundingVolumeObject3D.setEnabled(true);
engine.addEntity(cubeBoundingVolumeObject3D);
// wall
Model _wall = DAEReader.read("resources/tests/models/wall", "wall.dae");
Object3D wall0 = new Object3D("wall0", _wall);
wall0.getTranslation().add(new Vector3(-1.00f, 0f, 3.00f));
wall0.update();
wall0.setPickable(true);
wall0.setEnabled(true);
engine.addEntity(wall0);
Object3D wall1 = new Object3D("wall1", _wall);
wall1.getTranslation().add(new Vector3(0f, 0f, 3.00f));
wall1.update();
wall1.setPickable(true);
wall1.setEnabled(true);
engine.addEntity(wall1);
// os engine test
Object3D osCube = new Object3D("cube", _cube);
osCube.getTranslation().add(new Vector3(0f, 0f, 0f));
osCube.getScale().set(2f, 2f, 2f);
osCube.update();
osEngine.addEntity(osCube);
//
circleTransformations = new Transformations();
engine.addEntity(new PointsParticleSystemEntity("circle", false, new CircleParticleEmitter(3000, 50, 50, new Vector3(1f, 0f, 0f), new Vector3(0f, 0f, 1f), new Vector3(0f, 0f, 0f), 0.4f, 0f, 0f, new Vector3(0f, 0.2f, 0f), new Vector3(0f, 0.2f, 0f), new Color4(1f, 1f, 1f, 0.3f), new Color4(1f, 1f, 1f, 0.3f)), 1000, true));
engine.getEntity("circle").setEnabled(true);
engine.addEntity(new PointsParticleSystemEntity("water", true, new SphereParticleEmitter(4000, 1000, 0, 0.1f, 0.0f, new Sphere(new Vector3(-1f, 1f, 0f), 0.05f), new Vector3(-4f, 0f, 1f), new Vector3(-1f, 0f, 0f), new Color4(0.8f, 0.8f, 1f, 0.25f), new Color4(0.8f, 0.8f, 1f, 0.25f)), 4000, true));
engine.getEntity("water").setEnabled(true);
engine.addEntity(new PointsParticleSystemEntity("snow", false, new BoundingBoxParticleEmitter(15, 15000, 1000, 0, 0, new OrientedBoundingBox(new Vector3(0f, 4f, 0f), new Vector3(1f, 0f, 0f), new Vector3(0f, 1f, 0f), new Vector3(0f, 0f, 1f), new Vector3(4f, 0f, 4f)), new Vector3(0f, -0.5f, 0f), new Vector3(0f, -0.1f, 0f), new Color4(0.8f, 0.8f, 1f, 0.5f), new Color4(0.8f, 0.8f, 1f, 0.5f)), 1024, true));
engine.getEntity("snow").setEnabled(true);
engine.addEntity(new PointsParticleSystemEntity("firebase", false, new SphereParticleEmitter(2048, 1024, 2048, 0, 0, new Sphere(new Vector3(2.5f, 0.2f, 0f), 0.2f), new Vector3(0f, 0.1f, 0f), new Vector3(0f, 0.1f, 0f), new Color4(0.0f, 0f, 0f, 0.5f), new Color4(0.4f, 0f, 0f, 0.5f)), 2048, true));
engine.getEntity("firebase").setEnabled(true);
//
engine.addEntity(new PointsParticleSystemEntity("firetop", false, new SphereParticleEmitter(2048, 1024, 2048, 0, 0, new Sphere(new Vector3(2.5f, 0.7f, 0f), 0.1f), new Vector3(0f, 0.06f, 0f), new Vector3(0f, 0.12f, 0f), new Color4(0.75f, 0.0f, 0f, 0.5f), new Color4(1f, 1f, 0f, 0.5f)), 2048, true));
engine.getEntity("firetop").setEnabled(true);
//
engine.addEntity(new PointsParticleSystemEntity("firesmoke", false, new SphereParticleEmitter(2048, 1024, 2048, 0, 0, new Sphere(new Vector3(2.5f, 0.7f, 0f), 0.1f), new Vector3(0f, 0.2f, 0f), new Vector3(0f, 0.4f, 0f), new Color4(0.8f, 0.8f, 0.8f, 0.1f), new Color4(0.8f, 0.8f, 0.8f, 0.1f)), 2048, true));
engine.getEntity("firesmoke").setEnabled(true);
((ParticleSystemEntity) engine.getEntity("circle")).setPickable(false);
((ParticleSystemEntity) engine.getEntity("snow")).setPickable(false);
((ParticleSystemEntity) engine.getEntity("firebase")).setPickable(true);
((ParticleSystemEntity) engine.getEntity("firetop")).setPickable(true);
((ParticleSystemEntity) engine.getEntity("firesmoke")).setPickable(true);
} catch (Exception exception) {
exception.printStackTrace();
System.out.println("Could not load object: " + exception.getMessage());
}
}
Aggregations