priority based foliage placement
This commit is contained in:
parent
bd5e7b562f
commit
3ca9cd1247
@ -86,7 +86,7 @@
|
|||||||
"regularity": 0.6,
|
"regularity": 0.6,
|
||||||
"threshold": 0.03,
|
"threshold": 0.03,
|
||||||
"scale": 0.5,
|
"scale": 0.5,
|
||||||
"priority": 1.0
|
"priority": 5.0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"entityIDs": [
|
"entityIDs": [
|
||||||
@ -95,14 +95,14 @@
|
|||||||
"regularity": 0.6,
|
"regularity": 0.6,
|
||||||
"threshold": 0.05,
|
"threshold": 0.05,
|
||||||
"scale": 0.5,
|
"scale": 0.5,
|
||||||
"priority": 1.0
|
"priority": 3.0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"entityIDs": [
|
"entityIDs": [
|
||||||
"rock_static"
|
"rock_static"
|
||||||
],
|
],
|
||||||
"regularity": 0.6,
|
"regularity": 0.6,
|
||||||
"threshold": 0.04,
|
"threshold": 0.06,
|
||||||
"scale": 0.5,
|
"scale": 0.5,
|
||||||
"priority": 1.0
|
"priority": 1.0
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1520,7 +1520,9 @@ Fix nav mesh construction params
|
|||||||
(04/24/2025)
|
(04/24/2025)
|
||||||
GriddedDataCellManager debugging tools
|
GriddedDataCellManager debugging tools
|
||||||
NavMesh bugfix
|
NavMesh bugfix
|
||||||
Fix jump tree not enabling physics body
|
Fix jump trees not enabling physics body
|
||||||
|
Priority based foliage content placement
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import electrosphere.client.ui.menu.WindowStrings;
|
|||||||
import electrosphere.client.ui.menu.WindowUtils;
|
import electrosphere.client.ui.menu.WindowUtils;
|
||||||
import electrosphere.engine.Globals;
|
import electrosphere.engine.Globals;
|
||||||
import electrosphere.engine.assetmanager.AssetDataStrings;
|
import electrosphere.engine.assetmanager.AssetDataStrings;
|
||||||
import electrosphere.engine.signal.Signal.SignalType;
|
|
||||||
import electrosphere.entity.state.inventory.InventoryUtils;
|
import electrosphere.entity.state.inventory.InventoryUtils;
|
||||||
import electrosphere.entity.types.item.ItemUtils;
|
import electrosphere.entity.types.item.ItemUtils;
|
||||||
import electrosphere.game.data.item.Item;
|
import electrosphere.game.data.item.Item;
|
||||||
|
|||||||
@ -66,14 +66,27 @@ public class ServerContentGenerator {
|
|||||||
realm.getServerWorldData().convertVoxelToRealSpace(0, worldPos.y) < height &&
|
realm.getServerWorldData().convertVoxelToRealSpace(0, worldPos.y) < height &&
|
||||||
realm.getServerWorldData().convertVoxelToRealSpace(ServerTerrainChunk.CHUNK_DIMENSION, worldPos.y) > height
|
realm.getServerWorldData().convertVoxelToRealSpace(ServerTerrainChunk.CHUNK_DIMENSION, worldPos.y) > height
|
||||||
){
|
){
|
||||||
|
BiomeFoliageDescription toPlace = null;
|
||||||
|
double foundPriority = -1;
|
||||||
|
double realX = realm.getServerWorldData().convertVoxelToRealSpace(x, worldPos.x);
|
||||||
|
double realZ = realm.getServerWorldData().convertVoxelToRealSpace(z, worldPos.z);
|
||||||
for(BiomeFoliageDescription foliageDescription : foliageDescriptions){
|
for(BiomeFoliageDescription foliageDescription : foliageDescriptions){
|
||||||
double scale = foliageDescription.getScale();
|
double scale = foliageDescription.getScale();
|
||||||
double regularity = foliageDescription.getRegularity();
|
double regularity = foliageDescription.getRegularity();
|
||||||
double threshold = foliageDescription.getThreshold();
|
double threshold = foliageDescription.getThreshold();
|
||||||
double realX = realm.getServerWorldData().convertVoxelToRealSpace(x, worldPos.x);
|
double value = NoiseUtils.relaxedPointGen(realX * scale, realZ * scale, regularity, threshold);
|
||||||
double realZ = realm.getServerWorldData().convertVoxelToRealSpace(z, worldPos.z);
|
if(value > 0){
|
||||||
if(NoiseUtils.relaxedPointGen(realX * scale, realZ * scale, regularity, threshold) > 0){
|
if(toPlace == null){
|
||||||
String type = foliageDescription.getEntityIDs().get(random.nextInt(0,foliageDescription.getEntityIDs().size()));
|
foundPriority = foliageDescription.getPriority();
|
||||||
|
toPlace = foliageDescription;
|
||||||
|
} else if(foliageDescription.getPriority() > foundPriority) {
|
||||||
|
foundPriority = foliageDescription.getPriority();
|
||||||
|
toPlace = foliageDescription;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(toPlace != null){
|
||||||
|
String type = toPlace.getEntityIDs().get(random.nextInt(0,toPlace.getEntityIDs().size()));
|
||||||
FoliageUtils.serverSpawnTreeFoliage(
|
FoliageUtils.serverSpawnTreeFoliage(
|
||||||
realm,
|
realm,
|
||||||
new Vector3d(
|
new Vector3d(
|
||||||
@ -89,7 +102,6 @@ public class ServerContentGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user