@Override
 protected void controlUpdate(float tpf) {
   light.setPosition(spatial.getWorldTranslation().add(0, 0, 32));
   flicker += 8 * tpf;
   float radius =
       FastMath.sin(FastMath.tan(FastMath.cos(flicker + (FastMath.rand.nextFloat() * 2)))) * 20
           + 200;
   light.setRadius(radius);
 }
示例#2
0
  @Override
  public void simpleInitApp() {

    setDisplayFps(false);
    setDisplayStatView(false);

    bap = new BulletAppState();
    stateManager.attach(bap);
    bap.getPhysicsSpace().setGravity(Vector3f.ZERO);
    bap.getPhysicsSpace().addCollisionListener(this);

    guiFont = assetManager.loadFont("Interface/Fonts/Default.fnt");
    showText = new BitmapText(guiFont, false);
    showText.setSize(50);
    showText.setColor(ColorRGBA.Red);
    showText.setLocalTranslation((settings.getWidth() / 2) - 200, settings.getHeight() / 2, 0);

    score = 0;
    scoreText = new BitmapText(guiFont, false);
    scoreText.setSize(guiFont.getCharSet().getRenderedSize());
    scoreText.setColor(ColorRGBA.White);
    scoreText.setText("Score: " + score);
    scoreText.setLocalTranslation(settings.getWidth() - 200, settings.getHeight() - 30, 0);
    guiNode.attachChild(scoreText);

    lives = 3;
    /*
    livespic = new Picture[lives];
    for(int i=0; i < lives; i++){
        livespic[i] = new Picture("Live "+i);
        livespic[i].setImage(assetManager, "Textures/LifeLogo.png", true);
        livespic[i].setWidth(50);
        livespic[i].setHeight(50);
        livespic[i].setPosition(i*50, settings.getHeight()-50);
        guiNode.attachChild(livespic[i]);
    }
     *
     */

    planets = new Planet[9];

    Material mat10 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat10.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Sun.jpg"));
    mat10.setTexture("GlowMap", assetManager.loadTexture("Textures/Sun.jpg"));
    mat10.setColor("Specular", ColorRGBA.White);
    mat10.setBoolean("UseAlpha", true);
    sun = new Planet("Sun", 5f, mat10);
    sun.registerPhysics(bap.getPhysicsSpace());
    rootNode.attachChild(sun);

    Material mat1 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat1.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Mercury.jpg"));
    mat1.setColor("Specular", ColorRGBA.White);
    mercury = new Planet("Mercury", 2f, mat1);
    mercury.setInitLocation(new Vector3f(16.0f, 0f, -6.0f));
    mercury.setRotationSpeed((float) Math.random());
    mercury.setTranslationSpeed(0.76f);
    mercury.registerPhysics(bap.getPhysicsSpace());
    planets[0] = mercury;
    rootNode.attachChild(mercury);

    Material mat2 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat2.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Venus.jpg"));
    mat2.setColor("Specular", ColorRGBA.White);
    venus = new Planet("Venus", 2.6f, mat2);
    venus.setInitLocation(new Vector3f(23.0f, 0f, -6.0f));
    venus.setRotationSpeed((float) Math.random());
    venus.setTranslationSpeed(0.65f);
    venus.registerPhysics(bap.getPhysicsSpace());
    planets[1] = venus;
    rootNode.attachChild(venus);

    Material mat3 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat3.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Earth/Color.jpg"));
    mat3.setTexture("ParallaxMap", assetManager.loadTexture("Textures/Earth/Bump.jpg"));
    mat3.setTexture("SpecularMap", assetManager.loadTexture("Textures/Earth/Specular.jpg"));
    earth = new Planet("Earth", 2.7f, mat3);
    earth.setInitLocation(new Vector3f(31.0f, 0f, -6.0f));
    earth.setRotationSpeed((float) Math.random());
    earth.setTranslationSpeed(0.6f);
    earth.registerPhysics(bap.getPhysicsSpace());
    planets[2] = earth;
    rootNode.attachChild(earth);

    Material mat4 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat4.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Mars.jpg"));
    mat4.setColor("Specular", ColorRGBA.White);
    mars = new Planet("Mars", 2.5f, mat4);
    mars.setInitLocation(new Vector3f(40.0f, 0f, -6.0f));
    mars.setRotationSpeed((float) Math.random());
    mars.setTranslationSpeed(0.56f);
    mars.registerPhysics(bap.getPhysicsSpace());
    planets[3] = mars;
    rootNode.attachChild(mars);

    Material mat5 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat5.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Jupiter.jpg"));
    mat5.setColor("Specular", ColorRGBA.White);
    jupiter = new Planet("Jupiter", 3.1f, mat5);
    jupiter.setInitLocation(new Vector3f(49.0f, 0f, -6.0f));
    jupiter.setRotationSpeed((float) Math.random());
    jupiter.setTranslationSpeed(0.5f);
    jupiter.registerPhysics(bap.getPhysicsSpace());
    planets[4] = jupiter;
    rootNode.attachChild(jupiter);

    Material mat6 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat6.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Saturn.jpg"));
    mat6.setColor("Specular", ColorRGBA.White);
    saturn = new Planet("Saturn", 2.9f, mat6);
    saturn.setInitLocation(new Vector3f(57.0f, 0f, -6.0f));
    saturn.setRotationSpeed((float) Math.random());
    saturn.setTranslationSpeed(0.44f);
    saturn.registerPhysics(bap.getPhysicsSpace());
    planets[5] = saturn;
    rootNode.attachChild(saturn);

    Material mat7 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat7.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Uranus.jpg"));
    mat7.setColor("Specular", ColorRGBA.White);
    uranus = new Planet("Uranus", 2.8f, mat7);
    uranus.setInitLocation(new Vector3f(65.0f, 0f, -6.0f));
    uranus.setRotationSpeed((float) Math.random());
    uranus.setTranslationSpeed(0.4f);
    uranus.registerPhysics(bap.getPhysicsSpace());
    planets[6] = uranus;
    rootNode.attachChild(uranus);

    Material mat8 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat8.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Neptune.jpg"));
    mat8.setColor("Specular", ColorRGBA.White);
    neptune = new Planet("Neptune", 2.65f, mat8);
    neptune.setInitLocation(new Vector3f(75.0f, 0f, -6.0f));
    neptune.setRotationSpeed((float) Math.random());
    neptune.setTranslationSpeed(0.34f);
    neptune.registerPhysics(bap.getPhysicsSpace());
    planets[7] = neptune;
    rootNode.attachChild(neptune);

    Material mat9 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    mat9.setTexture("DiffuseMap", assetManager.loadTexture("Textures/Pluto.jpg"));
    mat9.setColor("Specular", ColorRGBA.White);
    pluto = new Planet("Pluto", 1.5f, mat9);
    pluto.setInitLocation(new Vector3f(82.0f, 0f, -6.0f));
    pluto.setRotationSpeed((float) Math.random());
    pluto.setTranslationSpeed(0.2f);
    pluto.registerPhysics(bap.getPhysicsSpace());
    planets[8] = pluto;
    rootNode.attachChild(pluto);

    spaceship = new Spaceship("Spaceship", assetManager.loadModel("Models/X-WING/X-WING.j3o"));
    spaceship.addTurbines(
        new Material(assetManager, "Common/MatDefs/Misc/Particle.j3md"),
        assetManager.loadTexture("Effects/Explosion/flame.png"));
    spaceship.setLocalTranslation(0, 20, 40);
    spaceship.getModel().scale(0.1f);
    spaceship.registerPhysics(bap.getPhysicsSpace());

    rootNode.attachChild(spaceship);

    Material laserMaterial = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    laserMaterial.setColor("GlowColor", ColorRGBA.Green);
    laserMaterial.setColor("Ambient", ColorRGBA.Green);
    laserMaterial.setColor("Diffuse", ColorRGBA.Green);
    laserMaterial.setBoolean("UseMaterialColors", true);
    spaceship.setLaserMaterial(laserMaterial);

    lasers = new Node("Lasers");
    rootNode.attachChild(lasers);

    flyCam.setEnabled(false);

    cam.setLocation(spaceship.getRear().getWorldTranslation());
    cam.lookAt(spaceship.getFront().getWorldTranslation(), Vector3f.UNIT_Y);

    PointLight sunLight = new PointLight();
    sunLight.setColor(ColorRGBA.White);
    sunLight.setPosition(new Vector3f(0f, 0f, 0f));
    sunLight.setRadius(100f);
    rootNode.addLight(sunLight);

    AmbientLight ambient = new AmbientLight();
    rootNode.addLight(ambient);

    fpp = new FilterPostProcessor(assetManager);
    bloom = new BloomFilter(BloomFilter.GlowMode.Objects);
    bloom.setExposurePower(30f);
    bloom.setBloomIntensity(1f);
    fpp.addFilter(bloom);
    viewPort.addProcessor(fpp);

    rootNode.attachChild(SkyFactory.createSky(assetManager, "Textures/Stars5.jpeg", true));

    bloomDirection = 1;
    noComet = 1;
    moving = up = down = left = right = leftSide = rightSide = false;

    asteroids = new Node("Asteroids");
    rootNode.attachChild(asteroids);

    explosions = new Node("Explosions");
    rootNode.attachChild(explosions);

    initKeys();
    initAudio();
  }