Browse Source

Configuration moved to constructor

magicbox-1.5.2
MagicBot 1 year ago
parent
commit
2cbe5f38cd
  1. 54
      src/engine/InterestManagement/Terrain.java
  2. 2
      src/engine/devcmd/cmds/GetHeightCmd.java

54
src/engine/InterestManagement/Terrain.java

@ -25,8 +25,7 @@ public class Terrain {
public Vector2f cell_size = new Vector2f(); public Vector2f cell_size = new Vector2f();
public Vector2f cell_count = new Vector2f(); public Vector2f cell_count = new Vector2f();
public float terrain_scale; public float terrain_scale;
public Vector2f major_blend = new Vector2f(); public Vector2f blend_ratio = new Vector2f();
public Vector2f minor_blend = new Vector2f();
public int heightmap; public int heightmap;
Zone zone; Zone zone;
@ -65,11 +64,21 @@ public class Terrain {
// Blending and height scaling configuration // Blending and height scaling configuration
this.major_blend.x = this.zone.max_blend / this.zone.major_radius; Vector2f major_blend = new Vector2f(this.zone.max_blend / this.zone.major_radius,
this.major_blend.y = this.zone.min_blend / this.zone.major_radius; this.zone.min_blend / this.zone.major_radius);
this.minor_blend.x = this.zone.max_blend / this.zone.minor_radius; Vector2f minor_blend = new Vector2f(this.zone.max_blend / this.zone.minor_radius,
this.minor_blend.y = this.zone.min_blend / this.zone.minor_radius; this.zone.min_blend / this.zone.minor_radius);
if (major_blend.y > 0.4f)
blend_ratio.x = major_blend.y;
else
blend_ratio.x = Math.min(major_blend.x, 0.4f);
if (minor_blend.y > 0.4f)
blend_ratio.y = minor_blend.y;
else
blend_ratio.y = Math.min(minor_blend.x, 0.4f);
this.terrain_scale = this.zone.terrain_max_y / 255f; this.terrain_scale = this.zone.terrain_max_y / 255f;
} }
@ -123,10 +132,10 @@ public class Terrain {
// Blend between terrains // Blend between terrains
float blendFactor = terrainZone.terrain.terrainBlend(terrainOffset); float blendCoefficient = terrainZone.terrain.getTerrainBlendCoefficient(terrainOffset);
float terrainHeight = interpolatedChildHeight * blendFactor; float terrainHeight = interpolatedChildHeight * blendCoefficient;
terrainHeight += interpolatedParentTerrainHeight * (1 - blendFactor); terrainHeight += interpolatedParentTerrainHeight * (1 - blendCoefficient);
return terrainHeight; return terrainHeight;
@ -136,9 +145,6 @@ public class Terrain {
Zone currentZone = ZoneManager.findSmallestZone(world_loc); Zone currentZone = ZoneManager.findSmallestZone(world_loc);
if (currentZone == null)
return 0;
return getWorldHeight(currentZone, world_loc); return getWorldHeight(currentZone, world_loc);
} }
@ -188,37 +194,23 @@ public class Terrain {
} }
public float terrainBlend(Vector2f zone_offset) { public float getTerrainBlendCoefficient(Vector2f zone_offset) {
// Normalize terrain offset // Normalize terrain offset
Vector2f normalizedOffset = new Vector2f(Math.abs(zone_offset.x) / this.zone.major_radius, Vector2f normalizedOffset = new Vector2f(Math.abs(zone_offset.x) / this.zone.major_radius,
Math.abs(zone_offset.y) / this.zone.minor_radius); Math.abs(zone_offset.y) / this.zone.minor_radius);
float xval;
if (this.major_blend.y > 0.4f)
xval = this.major_blend.y;
else
xval = Math.min(this.major_blend.x, 0.4f);
float yval;
if (this.minor_blend.y > 0.4f)
yval = this.minor_blend.y;
else
yval = Math.min(this.minor_blend.x, 0.4f);
float value; float value;
if (normalizedOffset.x <= 1 - xval || normalizedOffset.x <= normalizedOffset.y) { if (normalizedOffset.x <= 1 - blend_ratio.x || normalizedOffset.x <= normalizedOffset.y) {
if (normalizedOffset.y < 1 - yval) if (normalizedOffset.y < 1 - blend_ratio.y)
return 1; return 1;
value = (normalizedOffset.y - (1 - yval)) / yval; value = (normalizedOffset.y - (1 - blend_ratio.y)) / blend_ratio.y;
} else } else
value = (normalizedOffset.x - (1 - xval)) / xval; value = (normalizedOffset.x - (1 - blend_ratio.x)) / blend_ratio.x;
value = (float) Math.atan((0.5f - value) * PI); value = (float) Math.atan((0.5f - value) * PI);

2
src/engine/devcmd/cmds/GetHeightCmd.java

@ -60,7 +60,7 @@ public class GetHeightCmd extends AbstractDevCmd {
this.throwbackInfo(playerCharacter, "Grid : " + "[" + gridSquare.x + "]" + "[" + gridSquare.y + "]"); this.throwbackInfo(playerCharacter, "Grid : " + "[" + gridSquare.x + "]" + "[" + gridSquare.y + "]");
this.throwbackInfo(playerCharacter, "offset: " + "[" + childZoneOffset.x + "]" + "[" + childZoneOffset.y + "]"); this.throwbackInfo(playerCharacter, "offset: " + "[" + childZoneOffset.x + "]" + "[" + childZoneOffset.y + "]");
this.throwbackInfo(playerCharacter, "Normalized offset: " + "[" + normalizedOffset.x + "]" + "[" + normalizedOffset.y + "]"); this.throwbackInfo(playerCharacter, "Normalized offset: " + "[" + normalizedOffset.x + "]" + "[" + normalizedOffset.y + "]");
this.throwbackInfo(playerCharacter, "Blend: " + heightmapZone.terrain.terrainBlend(childZoneOffset)); this.throwbackInfo(playerCharacter, "Blend: " + heightmapZone.terrain.getTerrainBlendCoefficient(childZoneOffset));
this.throwbackInfo(playerCharacter, "------------"); this.throwbackInfo(playerCharacter, "------------");

Loading…
Cancel
Save