182 lines
8.1 KiB
Java
182 lines
8.1 KiB
Java
/*
|
|
* Decompiled with CFR 0.152.
|
|
*
|
|
* Could not load the following classes:
|
|
* com.jme3.asset.AssetManager
|
|
* com.jme3.audio.AudioNode
|
|
* com.jme3.bullet.collision.shapes.CapsuleCollisionShape
|
|
* com.jme3.bullet.collision.shapes.CollisionShape
|
|
* com.jme3.bullet.control.BetterCharacterControl
|
|
* com.jme3.bullet.control.GhostControl
|
|
* com.jme3.effect.ParticleEmitter
|
|
* com.jme3.effect.ParticleMesh$Type
|
|
* com.jme3.light.Light
|
|
* com.jme3.light.PointLight
|
|
* com.jme3.material.Material
|
|
* com.jme3.math.ColorRGBA
|
|
* com.jme3.math.Vector3f
|
|
* com.jme3.post.SceneProcessor
|
|
* com.jme3.scene.Node
|
|
* com.jme3.scene.Spatial
|
|
* com.jme3.scene.control.Control
|
|
* com.jme3.scene.control.LightControl
|
|
* com.jme3.shadow.EdgeFilteringMode
|
|
* com.jme3.shadow.PointLightShadowFilter
|
|
* com.jme3.shadow.PointLightShadowRenderer
|
|
*/
|
|
package mygame;
|
|
|
|
import com.jme3.asset.AssetManager;
|
|
import com.jme3.audio.AudioNode;
|
|
import com.jme3.bullet.collision.shapes.CapsuleCollisionShape;
|
|
import com.jme3.bullet.collision.shapes.CollisionShape;
|
|
import com.jme3.bullet.control.BetterCharacterControl;
|
|
import com.jme3.bullet.control.GhostControl;
|
|
import com.jme3.effect.ParticleEmitter;
|
|
import com.jme3.effect.ParticleMesh;
|
|
import com.jme3.light.Light;
|
|
import com.jme3.light.PointLight;
|
|
import com.jme3.material.Material;
|
|
import com.jme3.math.ColorRGBA;
|
|
import com.jme3.math.Vector3f;
|
|
import com.jme3.post.SceneProcessor;
|
|
import com.jme3.scene.Node;
|
|
import com.jme3.scene.Spatial;
|
|
import com.jme3.scene.control.Control;
|
|
import com.jme3.scene.control.LightControl;
|
|
import com.jme3.shadow.EdgeFilteringMode;
|
|
import com.jme3.shadow.PointLightShadowFilter;
|
|
import com.jme3.shadow.PointLightShadowRenderer;
|
|
import mygame.Exchange;
|
|
import mygame.FireballControl;
|
|
|
|
public class Fireball
|
|
extends Node {
|
|
ParticleEmitter fire;
|
|
PointLight light;
|
|
LightControl lightControl;
|
|
GhostControl collisionGhost;
|
|
GhostControl damageAreaGhost;
|
|
BetterCharacterControl bodyControl;
|
|
PointLightShadowRenderer dlsr;
|
|
PointLightShadowFilter dlsf;
|
|
FireballControl fireballControl;
|
|
private AssetManager assetManager;
|
|
Vector3f direction;
|
|
Exchange exchange;
|
|
boolean explode;
|
|
float timer;
|
|
float lifetime = 1.0f;
|
|
|
|
public Fireball(AssetManager assetManager, Vector3f finish, Vector3f start, Exchange ex) {
|
|
this.direction = finish;
|
|
this.exchange = ex;
|
|
assetManager = Exchange.assetManager;
|
|
this.setLocalTranslation(start.add(new Vector3f(1.0f, 1.0f, 1.0f)));
|
|
this.fire = new ParticleEmitter("Emitter", ParticleMesh.Type.Triangle, 30);
|
|
Material mat_red = new Material(assetManager, "Common/MatDefs/Misc/Particle.j3md");
|
|
mat_red.setTexture("Texture", assetManager.loadTexture("Effects/flame.png"));
|
|
this.fire.setMaterial(mat_red);
|
|
this.fire.setImagesX(2);
|
|
this.fire.setImagesY(2);
|
|
this.fire.setEndColor(new ColorRGBA(1.0f, 0.0f, 0.0f, 1.0f));
|
|
this.fire.setStartColor(new ColorRGBA(1.0f, 1.0f, 0.0f, 0.5f));
|
|
this.fire.getParticleInfluencer().setInitialVelocity(new Vector3f(0.0f, 2.0f, 0.0f));
|
|
this.fire.setStartSize(1.5f);
|
|
this.fire.setEndSize(0.1f);
|
|
this.fire.setGravity(0.0f, 0.0f, 0.0f);
|
|
this.fire.setLowLife(1.0f);
|
|
this.fire.setHighLife(3.0f);
|
|
this.fire.getParticleInfluencer().setVelocityVariation(0.3f);
|
|
this.attachChild((Spatial)this.fire);
|
|
this.light = new PointLight();
|
|
this.light.setColor(new ColorRGBA(1.0f, 0.5f, 0.0f, 1.0f));
|
|
this.light.setPosition(this.getLocalTranslation());
|
|
this.light.setRadius(100.0f);
|
|
Exchange.rootNode.addLight((Light)this.light);
|
|
this.dlsr = new PointLightShadowRenderer(assetManager, 128);
|
|
this.dlsr.setLight(this.light);
|
|
this.dlsr.setShadowIntensity(0.2f);
|
|
this.dlsr.setEdgeFilteringMode(EdgeFilteringMode.Dither);
|
|
Exchange.viewPort.addProcessor((SceneProcessor)this.dlsr);
|
|
this.dlsf = new PointLightShadowFilter(assetManager, 128);
|
|
this.dlsf.setLight(this.light);
|
|
this.dlsf.setShadowIntensity(0.2f);
|
|
this.dlsf.setEdgeFilteringMode(EdgeFilteringMode.Dither);
|
|
this.dlsf.setEnabled(false);
|
|
this.collisionGhost = new GhostControl((CollisionShape)new CapsuleCollisionShape(1.0f, 0.5f));
|
|
this.collisionGhost.setSpatial((Spatial)this);
|
|
this.collisionGhost.addCollideWithGroup(1);
|
|
this.addControl((Control)this.collisionGhost);
|
|
this.damageAreaGhost = new GhostControl((CollisionShape)new CapsuleCollisionShape(5.0f, 1.0f));
|
|
this.damageAreaGhost.addCollideWithGroup(1);
|
|
this.addControl((Control)this.damageAreaGhost);
|
|
this.bodyControl = new BetterCharacterControl(0.1f, 0.1f, 1.0f);
|
|
this.addControl((Control)this.bodyControl);
|
|
this.fireballControl = new FireballControl();
|
|
this.addControl((Control)this.fireballControl);
|
|
Exchange.rootNode.attachChild((Spatial)this);
|
|
Exchange.bulletAppState.getPhysicsSpace().add((Object)this.damageAreaGhost);
|
|
Exchange.bulletAppState.getPhysicsSpace().add((Object)this.collisionGhost);
|
|
Exchange.bulletAppState.getPhysicsSpace().add((Object)this.bodyControl);
|
|
AudioNode hit = new AudioNode(assetManager, "Sounds/Effects/fireball.ogg", false);
|
|
hit.setLooping(false);
|
|
hit.setPositional(true);
|
|
hit.setLocalTranslation(this.getLocalTranslation());
|
|
hit.setVolume(5.0f);
|
|
this.attachChild((Spatial)hit);
|
|
hit.play();
|
|
}
|
|
|
|
public void explode() {
|
|
ParticleEmitter xplosion = new ParticleEmitter("Emitter", ParticleMesh.Type.Triangle, 50);
|
|
Material mat_red = new Material(Exchange.assetManager, "Common/MatDefs/Misc/Particle.j3md");
|
|
mat_red.setTexture("Texture", Exchange.assetManager.loadTexture("Effects/flame.png"));
|
|
xplosion.setMaterial(mat_red);
|
|
xplosion.setImagesX(2);
|
|
xplosion.setParticlesPerSec(0.0f);
|
|
xplosion.setImagesY(2);
|
|
xplosion.setEndColor(new ColorRGBA(1.0f, 0.0f, 0.0f, 1.0f));
|
|
xplosion.setStartColor(new ColorRGBA(1.0f, 1.0f, 0.0f, 0.5f));
|
|
xplosion.getParticleInfluencer().setInitialVelocity(new Vector3f(0.5f, 0.5f, 0.5f));
|
|
xplosion.setStartSize(1.5f);
|
|
xplosion.setEndSize(2.0f);
|
|
xplosion.setGravity(0.0f, 1.0f, 0.0f);
|
|
xplosion.setLowLife(1.0f);
|
|
xplosion.setHighLife(2.0f);
|
|
xplosion.getParticleInfluencer().setVelocityVariation(2.0f);
|
|
this.attachChild((Spatial)xplosion);
|
|
xplosion.emitAllParticles();
|
|
ParticleEmitter stones = new ParticleEmitter("Emitter", ParticleMesh.Type.Triangle, 20);
|
|
Material mat_stones = new Material(Exchange.assetManager, "Common/MatDefs/Misc/Particle.j3md");
|
|
mat_stones.setTexture("Texture", Exchange.assetManager.loadTexture("Effects/stein.png"));
|
|
mat_stones.setTexture("GlowMap", Exchange.assetManager.loadTexture("Effects/stein.png"));
|
|
mat_stones.setTexture("DepthTexture", Exchange.assetManager.loadTexture("Effects/stein.png"));
|
|
stones.setMaterial(mat_stones);
|
|
stones.setImagesX(2);
|
|
stones.setParticlesPerSec(0.0f);
|
|
stones.setImagesY(2);
|
|
stones.setEndColor(new ColorRGBA(0.1f, 0.1f, 0.1f, 1.0f));
|
|
stones.setStartColor(new ColorRGBA(0.0f, 0.0f, 0.0f, 1.0f));
|
|
stones.getParticleInfluencer().setInitialVelocity(new Vector3f(2.0f, 0.0f, 2.0f));
|
|
stones.setStartSize(0.1f);
|
|
stones.setEndSize(0.5f);
|
|
stones.setGravity(2.0f, 0.0f, 2.0f);
|
|
stones.setLowLife(1.0f);
|
|
stones.setHighLife(1.0f);
|
|
stones.getParticleInfluencer().setVelocityVariation(5.0f);
|
|
this.attachChild((Spatial)stones);
|
|
stones.emitAllParticles();
|
|
AudioNode explode = new AudioNode(Exchange.assetManager, "Sounds/Effects/explosion.ogg", false);
|
|
explode.setLooping(false);
|
|
explode.setPositional(true);
|
|
explode.setLocalTranslation(this.getLocalTranslation());
|
|
explode.setVolume(5.0f);
|
|
this.attachChild((Spatial)explode);
|
|
explode.play();
|
|
this.explode = true;
|
|
this.fire.emitAllParticles();
|
|
this.timer = 0.1f;
|
|
}
|
|
}
|