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

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

@ -60,7 +60,7 @@ public class GetHeightCmd extends AbstractDevCmd { @@ -60,7 +60,7 @@ public class GetHeightCmd extends AbstractDevCmd {
this.throwbackInfo(playerCharacter, "Grid : " + "[" + gridSquare.x + "]" + "[" + gridSquare.y + "]");
this.throwbackInfo(playerCharacter, "offset: " + "[" + childZoneOffset.x + "]" + "[" + childZoneOffset.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, "------------");

Loading…
Cancel
Save