Add game source, converter pipeline, and web port

This commit is contained in:
2026-08-12 18:59:06 +02:00
parent 3e6635eac6
commit bd13ad67cc
97 changed files with 8781 additions and 0 deletions
+181
View File
@@ -0,0 +1,181 @@
/*
* 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;
}
}