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
+150
View File
@@ -0,0 +1,150 @@
/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* com.jme3.app.SimpleApplication
* com.jme3.app.state.AppState
* com.jme3.asset.plugins.ZipLocator
* com.jme3.bullet.BulletAppState
* com.jme3.bullet.collision.shapes.CapsuleCollisionShape
* com.jme3.bullet.collision.shapes.CollisionShape
* com.jme3.bullet.control.CharacterControl
* com.jme3.bullet.control.RigidBodyControl
* com.jme3.bullet.util.CollisionShapeFactory
* com.jme3.input.controls.ActionListener
* com.jme3.input.controls.InputListener
* com.jme3.input.controls.KeyTrigger
* com.jme3.input.controls.Trigger
* com.jme3.light.AmbientLight
* com.jme3.light.DirectionalLight
* com.jme3.light.Light
* com.jme3.math.ColorRGBA
* com.jme3.math.Vector3f
* com.jme3.scene.Node
* com.jme3.scene.Spatial
* com.jme3.scene.control.Control
*/
package jme3.hello;
import com.jme3.app.SimpleApplication;
import com.jme3.app.state.AppState;
import com.jme3.asset.plugins.ZipLocator;
import com.jme3.bullet.BulletAppState;
import com.jme3.bullet.collision.shapes.CapsuleCollisionShape;
import com.jme3.bullet.collision.shapes.CollisionShape;
import com.jme3.bullet.control.CharacterControl;
import com.jme3.bullet.control.RigidBodyControl;
import com.jme3.bullet.util.CollisionShapeFactory;
import com.jme3.input.controls.ActionListener;
import com.jme3.input.controls.InputListener;
import com.jme3.input.controls.KeyTrigger;
import com.jme3.input.controls.Trigger;
import com.jme3.light.AmbientLight;
import com.jme3.light.DirectionalLight;
import com.jme3.light.Light;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
import com.jme3.scene.control.Control;
public class HelloCollision
extends SimpleApplication
implements ActionListener {
private Spatial sceneModel;
private BulletAppState bulletAppState;
private RigidBodyControl landscape;
private CharacterControl player;
private Vector3f walkDirection = new Vector3f();
private boolean left = false;
private boolean right = false;
private boolean up = false;
private boolean down = false;
public static void main(String[] args) {
HelloCollision app = new HelloCollision();
app.start();
}
public void simpleInitApp() {
this.bulletAppState = new BulletAppState();
this.stateManager.attach((AppState)this.bulletAppState);
this.bulletAppState.getPhysicsSpace().enableDebug(this.assetManager);
this.viewPort.setBackgroundColor(new ColorRGBA(0.7f, 0.8f, 1.0f, 1.0f));
this.flyCam.setMoveSpeed(100.0f);
this.setUpKeys();
this.setUpLight();
this.assetManager.registerLocator("town.zip", ZipLocator.class);
this.sceneModel = this.assetManager.loadModel("main.scene");
this.sceneModel.setLocalScale(2.0f);
CollisionShape sceneShape = CollisionShapeFactory.createMeshShape((Spatial)((Node)this.sceneModel));
this.landscape = new RigidBodyControl(sceneShape, 0.0f);
this.sceneModel.addControl((Control)this.landscape);
CapsuleCollisionShape capsuleShape = new CapsuleCollisionShape(1.5f, 6.0f, 1);
this.player = new CharacterControl((CollisionShape)capsuleShape, 0.5f);
this.player.setJumpSpeed(20.0f);
this.player.setFallSpeed(30.0f);
this.player.setGravity(30.0f);
this.player.setPhysicsLocation(new Vector3f(0.0f, 10.0f, 0.0f));
this.rootNode.attachChild(this.sceneModel);
this.bulletAppState.getPhysicsSpace().add((Object)this.landscape);
this.bulletAppState.getPhysicsSpace().add((Object)this.player);
}
private void setUpLight() {
AmbientLight al = new AmbientLight();
al.setColor(ColorRGBA.White.mult(1.3f));
this.rootNode.addLight((Light)al);
DirectionalLight dl = new DirectionalLight();
dl.setColor(ColorRGBA.White);
dl.setDirection(new Vector3f(2.8f, -2.8f, -2.8f).normalizeLocal());
this.rootNode.addLight((Light)dl);
}
private void setUpKeys() {
this.inputManager.addMapping("Left", new Trigger[]{new KeyTrigger(30)});
this.inputManager.addMapping("Right", new Trigger[]{new KeyTrigger(32)});
this.inputManager.addMapping("Up", new Trigger[]{new KeyTrigger(17)});
this.inputManager.addMapping("Down", new Trigger[]{new KeyTrigger(31)});
this.inputManager.addMapping("Jump", new Trigger[]{new KeyTrigger(57)});
this.inputManager.addListener((InputListener)this, new String[]{"Left"});
this.inputManager.addListener((InputListener)this, new String[]{"Right"});
this.inputManager.addListener((InputListener)this, new String[]{"Up"});
this.inputManager.addListener((InputListener)this, new String[]{"Down"});
this.inputManager.addListener((InputListener)this, new String[]{"Jump"});
}
public void onAction(String binding, boolean value, float tpf) {
if (binding.equals("Left")) {
this.left = value;
} else if (binding.equals("Right")) {
this.right = value;
} else if (binding.equals("Up")) {
this.up = value;
} else if (binding.equals("Down")) {
this.down = value;
} else if (binding.equals("Jump")) {
this.player.jump();
}
}
public void simpleUpdate(float tpf) {
Vector3f camDir = this.cam.getDirection().clone().multLocal(0.6f);
Vector3f camLeft = this.cam.getLeft().clone().multLocal(0.4f);
this.walkDirection.set(0.0f, 0.0f, 0.0f);
if (this.left) {
this.walkDirection.addLocal(camLeft);
}
if (this.right) {
this.walkDirection.addLocal(camLeft.negate());
}
if (this.up) {
this.walkDirection.addLocal(camDir);
}
if (this.down) {
this.walkDirection.addLocal(camDir.negate());
}
this.player.setWalkDirection(this.walkDirection);
this.cam.setLocation(this.player.getPhysicsLocation());
}
}