farm plots place dirt
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2025-05-28 22:08:49 -04:00
parent 81f79232e1
commit c863365c26
5 changed files with 33 additions and 1 deletions

View File

@ -2043,6 +2043,7 @@ Rendering prism regions
Utilities for turning mesh gen algos into renderable entities Utilities for turning mesh gen algos into renderable entities
Back off farm plots from roads by road radius Back off farm plots from roads by road radius
Farm plots properly save/load to/from disk Farm plots properly save/load to/from disk
Farm plots place dirt

View File

@ -419,6 +419,7 @@ public class MacroData {
List<MacroAreaObject> blockers = new LinkedList<MacroAreaObject>(); List<MacroAreaObject> blockers = new LinkedList<MacroAreaObject>();
blockers.addAll(this.structures); blockers.addAll(this.structures);
blockers.addAll(this.roads); blockers.addAll(this.roads);
blockers.addAll(this.regions);
return blockers; return blockers;
} }

View File

@ -1,12 +1,16 @@
package electrosphere.server.macro.region; package electrosphere.server.macro.region;
import org.joml.AABBd;
import org.joml.Vector3d;
import electrosphere.server.macro.MacroData; import electrosphere.server.macro.MacroData;
import electrosphere.server.macro.spatial.MacroAreaObject;
import electrosphere.util.math.region.Region; import electrosphere.util.math.region.Region;
/** /**
* A macro data spatial region * A macro data spatial region
*/ */
public class MacroRegion { public class MacroRegion implements MacroAreaObject {
/** /**
@ -64,6 +68,21 @@ public class MacroRegion {
this.region = region; this.region = region;
} }
@Override
public Vector3d getPos() {
return new Vector3d(this.region.getAABB().minX,this.region.getAABB().minY,this.region.getAABB().minZ);
}
@Override
public void setPos(Vector3d pos) {
throw new UnsupportedOperationException("Unimplemented method 'setPos'");
}
@Override
public AABBd getAABB() {
return this.region.getAABB();
}
} }

View File

@ -14,6 +14,7 @@ import electrosphere.data.voxel.sampler.SamplerFile;
import electrosphere.engine.Globals; import electrosphere.engine.Globals;
import electrosphere.server.datacell.ServerWorldData; import electrosphere.server.datacell.ServerWorldData;
import electrosphere.server.macro.civilization.road.Road; import electrosphere.server.macro.civilization.road.Road;
import electrosphere.server.macro.region.MacroRegion;
import electrosphere.server.macro.spatial.MacroObject; import electrosphere.server.macro.spatial.MacroObject;
import electrosphere.server.macro.structure.VirtualStructure; import electrosphere.server.macro.structure.VirtualStructure;
import electrosphere.server.macro.town.Town; import electrosphere.server.macro.town.Town;
@ -307,6 +308,15 @@ public class ProceduralChunkGenerator implements ChunkGenerator {
} }
} }
} else if(object instanceof Town){ } else if(object instanceof Town){
} else if(object instanceof MacroRegion region){
if(region.getRegion().getAABB().testPoint(realPt)){
if(region.getRegion().intersects(realPt)){
if(voxel.type != ServerTerrainChunk.VOXEL_TYPE_AIR){
voxel.type = 1;
rVal = true;
}
}
}
} else { } else {
throw new Error("Unsupported object type " + object); throw new Error("Unsupported object type " + object);
} }

View File

@ -179,6 +179,7 @@ public class ChunkGenerationThread implements Runnable {
Town town = (Town)currObj; Town town = (Town)currObj;
List<VirtualStructure> structs = town.getStructures(macroData); List<VirtualStructure> structs = town.getStructures(macroData);
objects.addAll(structs); objects.addAll(structs);
objects.addAll(town.getFarmPlots(macroData));
} }
//filter to just objects that are within bounds of the chunk //filter to just objects that are within bounds of the chunk
AABBd chunkAABB = new AABBd(ServerWorldData.convertChunkToRealSpace(new Vector3i(worldX,worldY,worldZ)), ServerWorldData.convertChunkToRealSpace(new Vector3i(worldX+1,worldY+1,worldZ+1))); AABBd chunkAABB = new AABBd(ServerWorldData.convertChunkToRealSpace(new Vector3i(worldX,worldY,worldZ)), ServerWorldData.convertChunkToRealSpace(new Vector3i(worldX+1,worldY+1,worldZ+1)));