Renderer/src/main/java/electrosphere/client/script/ScriptClientVoxelUtils.java
austin 5fee2d06af
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
Fix terrain editing
2024-11-23 16:47:33 -05:00

43 lines
1.4 KiB
Java

package electrosphere.client.script;
import org.graalvm.polyglot.HostAccess.Export;
import org.joml.Vector3d;
import electrosphere.client.entity.camera.CameraEntityUtils;
import electrosphere.client.terrain.editing.TerrainEditing;
import electrosphere.collision.CollisionEngine;
import electrosphere.engine.Globals;
import electrosphere.entity.Entity;
/**
* Utilities for interacting with voxels from the client
*/
public class ScriptClientVoxelUtils {
/**
* Increment to edit terrain by
*/
static final float EDIT_INCREMENT = 0.1f;
/**
* Applies the current voxel palette where the player's cursor is looking
*/
@Export
public static void applyEdit(){
CollisionEngine collisionEngine = Globals.clientSceneWrapper.getCollisionEngine();
Entity camera = Globals.playerCamera;
if(
collisionEngine != null &&
camera != null
){
Vector3d eyePos = new Vector3d(CameraEntityUtils.getCameraEye(camera));
Vector3d centerPos = new Vector3d(CameraEntityUtils.getCameraCenter(camera));
Vector3d cursorPos = collisionEngine.rayCastPosition(new Vector3d(centerPos), new Vector3d(eyePos).mul(-1.0), CollisionEngine.DEFAULT_INTERACT_DISTANCE);
if(Globals.clientSelectedVoxelType != null){
TerrainEditing.editTerrain(cursorPos, 1.1f, Globals.clientSelectedVoxelType.getId(), EDIT_INCREMENT);
}
}
}
}