Arbeiten aus dem URlaub

This commit is contained in:
2026-05-19 12:55:05 +02:00
parent b8a0234ad2
commit 4f48834e2c
403 changed files with 23402 additions and 6389 deletions

74
.gitignore vendored
View File

@@ -1,74 +1,8 @@
# ── Gradle ──────────────────────────────────────────────────────────────────
.gradle/
**/build/
gradle-app.setting
!gradle/wrapper/gradle-wrapper.jar
!**/gradle/wrapper/gradle-wrapper.jar
/.metadata/
/.gradle/
# ── Kompilate & Archive ──────────────────────────────────────────────────────
*.class
*.jar
!gradle/wrapper/gradle-wrapper.jar
!**/gradle/wrapper/gradle-wrapper.jar
# ── Laufzeit-Konfiguration (benutzerspezifisch, nicht ins Repo) ──────────────
/config/
/blight-game/config/
/blight-editor/config/
/blight-editor/editor-assets/
# ── JVM-Crashdumps & Logs ────────────────────────────────────────────────────
hs_err_pid*.log
replay_pid*.log
*.log
nohup.out
# ── Native Bibliotheken (werden beim Build extrahiert) ───────────────────────
*.so
*.dll
*.dylib
*.jnilib
# ── IntelliJ IDEA ────────────────────────────────────────────────────────────
.idea/
*.iml
*.ipr
*.iws
out/
# ── Eclipse ──────────────────────────────────────────────────────────────────
# Eclipse project files
.project
.classpath
.settings/
*.launch
.factorypath
# ── NetBeans ─────────────────────────────────────────────────────────────────
nbproject/
nbactions.xml
nb-configuration.xml
# ── VS Code ──────────────────────────────────────────────────────────────────
.vscode/
# ── macOS ────────────────────────────────────────────────────────────────────
.DS_Store
.AppleDouble
.LSOverride
# ── Windows ──────────────────────────────────────────────────────────────────
Thumbs.db
desktop.ini
ehthumbs.db
# ── Linux ────────────────────────────────────────────────────────────────────
*~
.fuse_hidden*
# ── Editor-Backup & Temporärdateien ─────────────────────────────────────────
*.swp
*.swo
*.tmp
*.temp
*.bak
*.orig
bin/

View File

@@ -1,5 +1,4 @@
#Thu May 07 06:27:32 CEST 2026
display=\:0
host=mario-mint
process-id=5833
user=mario
#Sun May 10 10:13:47 CEST 2026
host=BOOK-0F2PQ8OG21
process-id=27380
user=mario

View File

@@ -1,7 +1,7 @@
[ {
"version" : "9.5.1-20260506020515+0000",
"buildTime" : "20260506020515+0000",
"commitId" : "b040c334940608c621fdbb778381ebdae66606d4",
"version" : "9.5.1-20260510022507+0000",
"buildTime" : "20260510022507+0000",
"commitId" : "fd78213f09782e62ca4957f9cfd3d90c6c3f1767",
"current" : false,
"snapshot" : true,
"nightly" : false,
@@ -10,15 +10,15 @@
"rcFor" : "",
"milestoneFor" : "",
"broken" : false,
"downloadUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.5.1-20260506020515+0000-bin.zip",
"checksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.5.1-20260506020515+0000-bin.zip.sha256",
"checksum" : "ac52cb57303ce63a3131a7c079776ba70fc2b3e317dd311a27c092c96dc953f4",
"wrapperChecksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.5.1-20260506020515+0000-wrapper.jar.sha256",
"downloadUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.5.1-20260510022507+0000-bin.zip",
"checksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.5.1-20260510022507+0000-bin.zip.sha256",
"checksum" : "31ee63072850e69db0372d24655dbef7680aee3afaec2442d6395fc7ca672fd2",
"wrapperChecksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.5.1-20260510022507+0000-wrapper.jar.sha256",
"wrapperChecksum" : "497c8c2a7e5031f6aa847f88104aa80a93532ec32ee17bdb8d1d2f67a194a9c7"
}, {
"version" : "9.6.0-20260506005135+0000",
"buildTime" : "20260506005135+0000",
"commitId" : "44a190b8db5f6911020cba90f7a2642c02eba7bb",
"version" : "9.6.0-20260510003052+0000",
"buildTime" : "20260510003052+0000",
"commitId" : "62000451ad7b25de53fa89a155ef8ecb401621bb",
"current" : false,
"snapshot" : true,
"nightly" : true,
@@ -27,11 +27,28 @@
"rcFor" : "",
"milestoneFor" : "",
"broken" : false,
"downloadUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260506005135+0000-bin.zip",
"checksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260506005135+0000-bin.zip.sha256",
"checksum" : "b746b4a02191ca19a49a8d492e371328b65d251f5aa463d9f68f96349d969546",
"wrapperChecksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260506005135+0000-wrapper.jar.sha256",
"downloadUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260510003052+0000-bin.zip",
"checksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260510003052+0000-bin.zip.sha256",
"checksum" : "7dca215df18a26f56705b82a860eed7dde169117d0f298d4ed0a296778a3e1e4",
"wrapperChecksumUrl" : "https://services.gradle.org/distributions-snapshots/gradle-9.6.0-20260510003052+0000-wrapper.jar.sha256",
"wrapperChecksum" : "497c8c2a7e5031f6aa847f88104aa80a93532ec32ee17bdb8d1d2f67a194a9c7"
}, {
"version" : "8.14.5",
"buildTime" : "20260507110329+0000",
"commitId" : "62345becae08b13e793521816d585102fea66398",
"current" : false,
"snapshot" : false,
"nightly" : false,
"releaseNightly" : false,
"activeRc" : false,
"rcFor" : "",
"milestoneFor" : "",
"broken" : false,
"downloadUrl" : "https://services.gradle.org/distributions/gradle-8.14.5-bin.zip",
"checksumUrl" : "https://services.gradle.org/distributions/gradle-8.14.5-bin.zip.sha256",
"checksum" : "6f74b601422d6d6fc4e1f9a1ab6522f642c2fdcbc15ae33ebd30ba3d7198e854",
"wrapperChecksumUrl" : "https://services.gradle.org/distributions/gradle-8.14.5-wrapper.jar.sha256",
"wrapperChecksum" : "7d3a4ac4de1c32b59bc6a4eb8ecb8e612ccd0cf1ae1e99f66902da64df296172"
}, {
"version" : "9.5.0",
"buildTime" : "20260428120530+0000",

View File

@@ -1,14 +1,14 @@
/*******************************************************************************
* Copyright (c) 2023 Gradle Inc. and others
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
******************************************************************************/
initscript {
allprojects {
apply plugin: "eclipse"
}
/*******************************************************************************
* Copyright (c) 2023 Gradle Inc. and others
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
******************************************************************************/
initscript {
allprojects {
apply plugin: "eclipse"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<section name="org.eclipse.buildship.ui.wizard.project.import">
<item key="project_location" value="/home/mario/Workspaces/blight/blight-game"/>
<section name="ProjectImportWizard.dialogBounds">
<item key="DIALOG_X_ORIGIN" value="1018"/>
<item key="DIALOG_Y_ORIGIN" value="363"/>
<item key="DIALOG_WIDTH" value="525"/>
<item key="DIALOG_HEIGHT" value="761"/>
<item key="DIALOG_FONT_NAME" value="1|Ubuntu|10.0|0|GTK|1|"/>
</section>
</section>
</section>
<?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench">
<section name="org.eclipse.buildship.ui.wizard.project.import">
<item key="project_location" value="C:\Projekte\blight\blight"/>
<section name="ProjectImportWizard.dialogBounds">
<item key="DIALOG_X_ORIGIN" value="420"/>
<item key="DIALOG_Y_ORIGIN" value="102"/>
<item key="DIALOG_WIDTH" value="613"/>
<item key="DIALOG_HEIGHT" value="742"/>
<item key="DIALOG_FONT_NAME" value="1|Segoe UI|9.0|0|WINDOWS|1|-24|0|0|0|400|0|0|0|1|0|0|0|0|Segoe UI"/>
</section>
</section>
</section>

View File

@@ -1,12 +0,0 @@
arguments=
auto.sync=false
build.scans.enabled=false
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
eclipse.preferences.version=1
gradle.user.home=
java.home=
jvm.arguments=
offline.mode=false
override.workspace.settings=false
show.console.view=false
show.executions.view=false

View File

@@ -1,35 +0,0 @@
package de.blight.game;
import com.jme3.app.SimpleApplication;
import com.jme3.system.AppSettings;
import de.blight.game.scene.WorldScene;
public class BlightApp extends SimpleApplication {
public static void main(String[] args) {
BlightApp app = new BlightApp();
AppSettings settings = new AppSettings(true);
settings.setTitle("Blight");
settings.setResolution(1280, 720);
settings.setFrameRate(60);
settings.setVSync(true);
settings.setSamples(4);
app.setSettings(settings);
app.setShowSettings(false);
app.start();
}
@Override
public void simpleInitApp() {
// Standard-FlyCamera deaktivieren — wir steuern die Kamera selbst
flyCam.setEnabled(false);
stateManager.attach(new WorldScene());
}
@Override
public void simpleUpdate(float tpf) {
}
}

View File

@@ -1,34 +0,0 @@
package de.blight.game;
import com.jme3.app.SimpleApplication;
import com.jme3.system.AppSettings;
import de.blight.game.scene.WorldScene;
public class BlightApp extends SimpleApplication {
public static void main(String[] args) {
BlightApp app = new BlightApp();
AppSettings settings = new AppSettings(true);
settings.setTitle("Blight");
settings.setResolution(1280, 720);
settings.setVSync(true);
settings.setSamples(4);
app.setSettings(settings);
app.setShowSettings(false);
app.start();
}
@Override
public void simpleInitApp() {
// Standard-FlyCamera deaktivieren — wir steuern die Kamera selbst
flyCam.setEnabled(false);
stateManager.attach(new WorldScene());
}
@Override
public void simpleUpdate(float tpf) {
}
}

View File

@@ -1,307 +0,0 @@
package de.blight.game.config;
import com.jme3.app.Application;
import com.jme3.app.SimpleApplication;
import com.jme3.app.state.BaseAppState;
import com.jme3.font.BitmapFont;
import com.jme3.font.BitmapText;
import com.jme3.input.KeyInput;
import com.jme3.input.MouseInput;
import com.jme3.input.RawInputListener;
import com.jme3.input.controls.ActionListener;
import com.jme3.input.controls.MouseButtonTrigger;
import com.jme3.input.event.*;
import com.jme3.input.event.KeyInputEvent;
import com.jme3.input.event.MouseButtonEvent;
import com.jme3.input.event.MouseMotionEvent;
import com.jme3.input.event.JoyAxisEvent;
import com.jme3.input.event.JoyButtonEvent;
import com.jme3.input.event.TouchEvent;
import com.jme3.material.Material;
import com.jme3.material.RenderState;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector2f;
import com.jme3.renderer.queue.RenderQueue;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.shape.Quad;
import java.util.ArrayList;
import java.util.List;
/**
* Overlay-AppState der die Tastenbelegungs-Maske anzeigt.
*
* ESC → Schließen (ohne Speichern)
* Klick auf Row → wartet auf neue Taste
* ESC während Warten → bricht nur die Zuweisung ab
* Speichern → schreibt JSON, ruft onSave-Callback
*/
public class ConfigScreen extends BaseAppState implements RawInputListener {
// Farben
private static final ColorRGBA COL_BG = new ColorRGBA(0.05f, 0.05f, 0.08f, 0.88f);
private static final ColorRGBA COL_PANEL = new ColorRGBA(0.10f, 0.10f, 0.16f, 1.00f);
private static final ColorRGBA COL_ROW = new ColorRGBA(0.18f, 0.18f, 0.28f, 1.00f);
private static final ColorRGBA COL_ROW_HOVER = new ColorRGBA(0.25f, 0.25f, 0.40f, 1.00f);
private static final ColorRGBA COL_ROW_WAIT = new ColorRGBA(0.50f, 0.30f, 0.10f, 1.00f);
private static final ColorRGBA COL_BTN_SAVE = new ColorRGBA(0.15f, 0.40f, 0.15f, 1.00f);
private static final ColorRGBA COL_BTN_CANCEL = new ColorRGBA(0.40f, 0.15f, 0.15f, 1.00f);
private static final ColorRGBA COL_TEXT = ColorRGBA.White;
private static final ColorRGBA COL_TEXT_KEY = new ColorRGBA(0.85f, 0.85f, 0.50f, 1.00f);
// -----------------------------------------------------------------------
private SimpleApplication app;
private Node guiNode;
private BitmapFont font;
private KeyBindings liveBindings; // geteilt mit der ganzen App
private KeyBindings editCopy; // wird beim Öffnen geklont
private Runnable onSave; // Callback → PlayerInputControl.reloadBindings
private Node panel;
private List<Row> rows = new ArrayList<>();
private int waitingRow = -1; // -1 = keine Zuweisung aktiv
// UI-Elemente für Buttons (Bounds in Screen-Koordinaten)
private float saveBtnX, saveBtnY, saveBtnW, saveBtnH;
private float cancelBtnX, cancelBtnY;
// -----------------------------------------------------------------------
private static class Row {
String field;
String label;
BitmapText keyText;
Geometry bg;
float x, y, w, h; // Button-Bounds
}
// -----------------------------------------------------------------------
public ConfigScreen(KeyBindings liveBindings, Runnable onSave) {
this.liveBindings = liveBindings;
this.onSave = onSave;
}
public boolean isWaiting() { return waitingRow >= 0; }
// -----------------------------------------------------------------------
// Lifecycle
// -----------------------------------------------------------------------
@Override
protected void initialize(Application app) {
this.app = (SimpleApplication) app;
this.guiNode = this.app.getGuiNode();
this.font = app.getAssetManager().loadFont("Interface/Fonts/Default.fnt");
}
@Override
protected void onEnable() {
editCopy = liveBindings.copy();
waitingRow = -1;
buildUI();
app.getInputManager().setCursorVisible(true);
app.getInputManager().addRawInputListener(this);
app.getInputManager().addMapping("_CfgClick", new MouseButtonTrigger(MouseInput.BUTTON_LEFT));
app.getInputManager().addListener(clickListener, "_CfgClick");
}
@Override
protected void onDisable() {
if (panel != null) { guiNode.detachChild(panel); panel = null; }
rows.clear();
waitingRow = -1;
app.getInputManager().removeRawInputListener(this);
app.getInputManager().deleteMapping("_CfgClick");
app.getInputManager().setCursorVisible(false);
}
@Override protected void cleanup(Application app) {}
// -----------------------------------------------------------------------
// UI aufbauen
// -----------------------------------------------------------------------
private void buildUI() {
float sw = app.getCamera().getWidth();
float sh = app.getCamera().getHeight();
panel = new Node("cfg-panel");
// Halbdurchsichtiger Overlay über dem Spiel
addQuad(panel, 0, 0, sw, sh, COL_BG, -2);
float pw = 720, ph = 440;
float px = (sw - pw) / 2f, py = (sh - ph) / 2f;
addQuad(panel, px, py, pw, ph, COL_PANEL, -1);
// Titel
BitmapText title = text("TASTENBELEGUNG", 20, COL_TEXT);
centerText(title, px, py + ph - 40, pw);
panel.attachChild(title);
BitmapText hint = text("Klicke eine Taste um sie neu zu belegen", 14, new ColorRGBA(0.7f, 0.7f, 0.7f, 1f));
centerText(hint, px, py + ph - 70, pw);
panel.attachChild(hint);
// Reihen
float rowX = px + 30;
float keyX = px + pw - 220;
float rowW = 180;
float rowH = 36;
float startY = py + ph - 110;
float stepY = 48;
for (int i = 0; i < KeyBindings.ENTRIES.length; i++) {
String[] entry = KeyBindings.ENTRIES[i];
float ry = startY - i * stepY;
BitmapText lbl = text(entry[1], 16, COL_TEXT);
lbl.setLocalTranslation(rowX, ry + rowH - 8, 0);
panel.attachChild(lbl);
Geometry bg = addQuad(panel, keyX, ry, rowW, rowH, COL_ROW, 0);
BitmapText kt = text(KeyNames.of(editCopy.get(entry[0])), 16, COL_TEXT_KEY);
kt.setLocalTranslation(keyX + 10, ry + rowH - 8, 1);
panel.attachChild(kt);
Row row = new Row();
row.field = entry[0];
row.label = entry[1];
row.keyText = kt;
row.bg = bg;
row.x = keyX; row.y = ry; row.w = rowW; row.h = rowH;
rows.add(row);
}
// Buttons
float btnW = 160, btnH = 42;
float btnY = py + 25;
saveBtnX = px + pw / 2f - btnW - 15;
saveBtnY = btnY;
saveBtnW = btnW;
saveBtnH = btnH;
cancelBtnX = px + pw / 2f + 15;
cancelBtnY = btnY;
addQuad(panel, saveBtnX, saveBtnY, btnW, btnH, COL_BTN_SAVE, 0);
BitmapText saveLabel = text("Speichern", 16, COL_TEXT);
centerText(saveLabel, saveBtnX, saveBtnY + btnH - 10, btnW);
panel.attachChild(saveLabel);
addQuad(panel, cancelBtnX, cancelBtnY, btnW, btnH, COL_BTN_CANCEL, 0);
BitmapText cancelLabel = text("Abbrechen", 16, COL_TEXT);
centerText(cancelLabel, cancelBtnX, cancelBtnY + btnH - 10, btnW);
panel.attachChild(cancelLabel);
guiNode.attachChild(panel);
}
// -----------------------------------------------------------------------
// Mausklick
// -----------------------------------------------------------------------
private final ActionListener clickListener = (name, isPressed, tpf) -> {
if (!isPressed) return;
Vector2f cursor = app.getInputManager().getCursorPosition();
// Reihen prüfen
for (int i = 0; i < rows.size(); i++) {
Row r = rows.get(i);
if (hits(cursor, r.x, r.y, r.w, r.h)) {
waitingRow = i;
r.bg.getMaterial().setColor("Color", COL_ROW_WAIT);
r.keyText.setText("...");
return;
}
}
// Speichern
if (hits(cursor, saveBtnX, saveBtnY, saveBtnW, saveBtnH)) {
liveBindings.copyFrom(editCopy);
KeyBindingStore.save(liveBindings);
if (onSave != null) onSave.run();
setEnabled(false);
return;
}
// Abbrechen
if (hits(cursor, cancelBtnX, cancelBtnY, saveBtnW, saveBtnH)) {
setEnabled(false);
}
};
// -----------------------------------------------------------------------
// Tastendruck beim Warten auf Zuweisung (RawInputListener)
// -----------------------------------------------------------------------
@Override
public void onKeyEvent(KeyInputEvent evt) {
if (!evt.isPressed() || waitingRow < 0) return;
if (evt.getKeyCode() == KeyInput.KEY_ESCAPE) {
// Zuweisung abbrechen, Maske offen lassen
resetRowColor(waitingRow);
waitingRow = -1;
return;
}
Row r = rows.get(waitingRow);
editCopy.set(r.field, evt.getKeyCode());
r.keyText.setText(KeyNames.of(evt.getKeyCode()));
resetRowColor(waitingRow);
waitingRow = -1;
}
private void resetRowColor(int idx) {
rows.get(idx).bg.getMaterial().setColor("Color", COL_ROW);
}
// RawInputListener-Pflichtmethoden
@Override public void beginInput() {}
@Override public void endInput() {}
@Override public void onMouseMotionEvent(MouseMotionEvent evt) {}
@Override public void onMouseButtonEvent(MouseButtonEvent evt) {}
@Override public void onJoyAxisEvent(JoyAxisEvent evt) {}
@Override public void onJoyButtonEvent(JoyButtonEvent evt) {}
@Override public void onTouchEvent(TouchEvent evt) {}
// -----------------------------------------------------------------------
// Hilfsmethoden
// -----------------------------------------------------------------------
private Geometry addQuad(Node parent, float x, float y, float w, float h, ColorRGBA color, float z) {
Geometry geo = new Geometry("q", new Quad(w, h));
Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
mat.setColor("Color", color.clone());
if (color.a < 1f) {
mat.getAdditionalRenderState().setBlendMode(RenderState.BlendMode.Alpha);
geo.setQueueBucket(RenderQueue.Bucket.Transparent);
}
geo.setMaterial(mat);
geo.setLocalTranslation(x, y, z);
parent.attachChild(geo);
return geo;
}
private BitmapText text(String content, int size, ColorRGBA color) {
BitmapText t = new BitmapText(font, false);
t.setSize(size);
t.setColor(color);
t.setText(content);
return t;
}
private void centerText(BitmapText t, float x, float y, float width) {
t.setLocalTranslation(x + (width - t.getLineWidth()) / 2f, y, 1);
}
private boolean hits(Vector2f p, float x, float y, float w, float h) {
return p.x >= x && p.x <= x + w && p.y >= y && p.y <= y + h;
}
}

View File

@@ -1,90 +0,0 @@
package de.blight.game.control;
import com.jme3.input.InputManager;
import com.jme3.input.KeyInput;
import com.jme3.input.MouseInput;
import com.jme3.input.controls.*;
import com.jme3.math.*;
import com.jme3.renderer.Camera;
import com.jme3.scene.Spatial;
/**
* Bewegt einen Charakter relativ zur Kamera-Horizontal-Richtung
* und dreht ihn in Bewegungsrichtung.
*/
public class CharacterControl {
private static final float MOVE_SPEED = 8f;
private static final float ROTATE_SPEED = 5f;
private final InputManager inputManager;
private final Camera cam;
private Spatial character;
// Eingabezustand
private boolean forward, backward, left, right;
public CharacterControl(InputManager inputManager, Camera cam) {
this.inputManager = inputManager;
this.cam = cam;
registerMappings();
}
public void setCharacter(Spatial character) {
this.character = character;
}
// -----------------------------------------------------------------------
// Eingabe-Registrierung
// -----------------------------------------------------------------------
private void registerMappings() {
inputManager.addMapping("Forward", new KeyTrigger(KeyInput.KEY_W), new KeyTrigger(KeyInput.KEY_UP));
inputManager.addMapping("Backward", new KeyTrigger(KeyInput.KEY_S), new KeyTrigger(KeyInput.KEY_DOWN));
inputManager.addMapping("Left", new KeyTrigger(KeyInput.KEY_A), new KeyTrigger(KeyInput.KEY_LEFT));
inputManager.addMapping("Right", new KeyTrigger(KeyInput.KEY_D), new KeyTrigger(KeyInput.KEY_RIGHT));
ActionListener listener = (name, isPressed, tpf) -> {
switch (name) {
case "Forward" -> forward = isPressed;
case "Backward" -> backward = isPressed;
case "Left" -> left = isPressed;
case "Right" -> right = isPressed;
}
};
inputManager.addListener(listener, "Forward", "Backward", "Left", "Right");
}
// -----------------------------------------------------------------------
// Update pro Frame
// -----------------------------------------------------------------------
public void update(float tpf) {
if (character == null) return;
// Kamerahorizontale Vorwärtsrichtung (Y ignorieren)
Vector3f camDir = cam.getDirection().clone().setY(0).normalizeLocal();
Vector3f camLeft = cam.getLeft().clone().setY(0).normalizeLocal();
Vector3f moveDir = Vector3f.ZERO.clone();
if (forward) moveDir.addLocal(camDir);
if (backward) moveDir.subtractLocal(camDir);
if (left) moveDir.addLocal(camLeft);
if (right) moveDir.subtractLocal(camLeft);
if (moveDir.lengthSquared() > 0.001f) {
moveDir.normalizeLocal();
character.move(moveDir.mult(MOVE_SPEED * tpf));
// Charakter zur Bewegungsrichtung drehen
Quaternion targetRot = new Quaternion();
targetRot.lookAt(moveDir, Vector3f.UNIT_Y);
Quaternion current = character.getLocalRotation();
current.slerp(targetRot, ROTATE_SPEED * tpf);
character.setLocalRotation(current);
}
}
}

View File

@@ -1,33 +0,0 @@
package de.blight.game;
import com.jme3.app.SimpleApplication;
import com.jme3.system.AppSettings;
import de.blight.game.scene.WorldScene;
public class BlightApp extends SimpleApplication {
public static void main(String[] args) {
BlightApp app = new BlightApp();
AppSettings settings = new AppSettings(true);
settings.setTitle("Blight");
settings.setResolution(1280, 720);
settings.setSamples(4);
app.setSettings(settings);
app.setShowSettings(true);
app.start();
}
@Override
public void simpleInitApp() {
// Standard-FlyCamera deaktivieren — wir steuern die Kamera selbst
flyCam.setEnabled(false);
stateManager.attach(new WorldScene());
}
@Override
public void simpleUpdate(float tpf) {
}
}

View File

@@ -1,26 +0,0 @@
package de.blight.game;
import com.jme3.app.SimpleApplication;
import com.jme3.system.AppSettings;
import de.blight.game.scene.WorldScene;
public class BlightApp extends SimpleApplication {
public static void main(String[] args) {
BlightApp app = new BlightApp();
app.start();
}
@Override
public void simpleInitApp() {
// Standard-FlyCamera deaktivieren — wir steuern die Kamera selbst
flyCam.setEnabled(false);
stateManager.attach(new WorldScene());
}
@Override
public void simpleUpdate(float tpf) {
}
}

View File

@@ -1,33 +0,0 @@
package de.blight.game;
import com.jme3.app.SimpleApplication;
import com.jme3.system.AppSettings;
import de.blight.game.scene.WorldScene;
public class BlightApp extends SimpleApplication {
public static void main(String[] args) {
BlightApp app = new BlightApp();
AppSettings settings = new AppSettings(true);
settings.setTitle("Blight");
settings.setResolution(1280, 720);
settings.setSamples(4);
app.setSettings(settings);
app.setShowSettings(false);
app.start();
}
@Override
public void simpleInitApp() {
// Standard-FlyCamera deaktivieren — wir steuern die Kamera selbst
flyCam.setEnabled(false);
stateManager.attach(new WorldScene());
}
@Override
public void simpleUpdate(float tpf) {
}
}

View File

@@ -1,30 +1,35 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchHistory>
<launchGroup id="org.eclipse.debug.ui.launchGroup.debug">
<mruHistory>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;BlightApp&quot;/&gt;&#10;"/>
</mruHistory>
<favorites/>
</launchGroup>
<launchGroup id="org.eclipse.debug.ui.launchGroup.profile">
<mruHistory/>
<favorites/>
</launchGroup>
<launchGroup id="org.eclipse.eclemma.ui.launchGroup.coverage">
<mruHistory>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;BlightApp&quot;/&gt;&#10;"/>
</mruHistory>
<favorites/>
</launchGroup>
<launchGroup id="org.eclipse.ui.externaltools.launchGroup">
<mruHistory/>
<favorites/>
</launchGroup>
<launchGroup id="org.eclipse.debug.ui.launchGroup.run">
<mruHistory>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;BlightApp&quot;/&gt;&#10;"/>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;blight-game - eclipse&quot;/&gt;&#10;"/>
</mruHistory>
<favorites/>
</launchGroup>
</launchHistory>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchHistory>
<launchGroup id="org.eclipse.debug.ui.launchGroup.debug">
<mruHistory>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;EditorLauncher&quot;/&gt;&#13;&#10;"/>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;BlightApp&quot;/&gt;&#13;&#10;"/>
</mruHistory>
<favorites/>
</launchGroup>
<launchGroup id="org.eclipse.debug.ui.launchGroup.profile">
<mruHistory/>
<favorites/>
</launchGroup>
<launchGroup id="org.eclipse.eclemma.ui.launchGroup.coverage">
<mruHistory>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;EditorLauncher&quot;/&gt;&#13;&#10;"/>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;BlightApp&quot;/&gt;&#13;&#10;"/>
</mruHistory>
<favorites/>
</launchGroup>
<launchGroup id="org.eclipse.ui.externaltools.launchGroup">
<mruHistory/>
<favorites/>
</launchGroup>
<launchGroup id="org.eclipse.debug.ui.launchGroup.run">
<mruHistory>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;blight - cleanEclipse&quot;/&gt;&#13;&#10;"/>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;blight - eclipse&quot;/&gt;&#13;&#10;"/>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;EditorLauncher&quot;/&gt;&#13;&#10;"/>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;BlightApp&quot;/&gt;&#13;&#10;"/>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;blight-editor - eclipse&quot;/&gt;&#13;&#10;"/>
</mruHistory>
<favorites/>
</launchGroup>
</launchHistory>

File diff suppressed because one or more lines are too long

View File

@@ -1,58 +1,65 @@
INDEX VERSION 1.134+/home/mario/Workspaces/blight/.metadata/.plugins/org.eclipse.jdt.core
3190887717.index
3965639856.index
262304292.index
3534421922.index
1585095811.index
16257995.index
1350656539.index
1136998059.index
458837781.index
860469874.index
1305835383.index
4153997317.index
1550771283.index
900586112.index
3950534511.index
1462452114.index
3331268705.index
1989349782.index
2722916612.index
1738064530.index
1007707583.index
2497820567.index
734632761.index
INDEX VERSION 1.134+C:\Projekte\blight\.metadata\.plugins\org.eclipse.jdt.core
1730180473.index
1560896368.index
3434360348.index
463881636.index
2160052426.index
2563355238.index
280283746.index
4260524346.index
3103640776.index
342961285.index
1271954631.index
2357666455.index
52047090.index
2034054389.index
330211381.index
2878081145.index
842794024.index
3981805811.index
1210571632.index
3496211806.index
1110902487.index
274839682.index
563269584.index
1307459789.index
2565315493.index
447892417.index
746211526.index
1734210249.index
1531656712.index
2352162652.index
3278945159.index
1724804096.index
1680596161.index
1660620864.index
993751451.index
55438146.index
1228247778.index
770656589.index
1962463332.index
3147751859.index
1431966402.index
2109219904.index
1865797976.index
3591837599.index
2392911294.index
1490162601.index
1124510679.index
3011908894.index
2356684838.index
3390708485.index
436234689.index
2865784985.index
1545642898.index
24151692.index
1578672902.index
2783277246.index
606255621.index
797385254.index
3901683754.index
2696219173.index
2479985475.index
4255926859.index
1608883781.index
890886771.index
104128081.index
1703316476.index
3075372551.index
3791361740.index
1351491558.index
1317406562.index
3096076814.index
1309346846.index
3282007833.index
3432172071.index
2893713661.index
3040618168.index
1340110446.index
2032725075.index
2788838607.index
4079747914.index
3296889058.index
633025986.index
3697082729.index
2913097348.index
306663419.index
404070292.index
1839710279.index
3002461991.index
3721901883.index
3822973035.index
887038847.index
2999631420.index
2615701196.index
2049044952.index
3035175596.index
1639262426.index
13457938.index

View File

@@ -1,5 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<dirs>
<entry loc="/usr/lib/jvm/java-21-openjdk-amd64" stamp="1774283020812"/>
<entry loc="/home/mario/Programme/jdk-21" stamp="1774248849578"/>
</dirs>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<dirs>
<entry loc="C:\Users\mario\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_21.0.10.v20260205-0638" stamp="1773407513225"/>
<entry loc="C:\Program Files\java" stamp="1778310877210"/>
<entry loc="C:\Program Files\java\bin" stamp="1778310874823"/>
<entry loc="/usr/lib/jvm/java-21-openjdk-amd64" stamp="1774283020812"/>
<entry loc="/home/mario/Programme/jdk-21" stamp="1774248849578"/>
</dirs>

View File

@@ -1,5 +1,28 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<libraryInfos>
<libraryInfo home="/usr/lib/jvm/java-21-openjdk-amd64" version="21.0.10"/>
<libraryInfo home="/home/mario/Programme/jdk-21" version="21.0.6"/>
</libraryInfos>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<libraryInfos>
<libraryInfo home="C:\Users\mario\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_21.0.10.v20260205-0638" version="21.0.10">
<bootpath>
<entry path="null"/>
</bootpath>
<extensionDirs>
<entry path="null"/>
</extensionDirs>
<endorsedDirs>
<entry path="null"/>
</endorsedDirs>
</libraryInfo>
<libraryInfo home="C:\Program Files\java" version="26.0.1"/>
<libraryInfo home="C:\Program Files\java\bin" version="26.0.1">
<bootpath>
<entry path="null"/>
</bootpath>
<extensionDirs>
<entry path="null"/>
</extensionDirs>
<endorsedDirs>
<entry path="null"/>
</endorsedDirs>
</libraryInfo>
<libraryInfo home="/usr/lib/jvm/java-21-openjdk-amd64" version="21.0.10"/>
<libraryInfo home="/home/mario/Programme/jdk-21" version="21.0.6"/>
</libraryInfos>

View File

@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<typeInfoHistroy/>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<typeInfoHistroy/>

Some files were not shown because too many files have changed in this diff Show More