Update to blend logic.
This commit is contained in:
@@ -34,28 +34,23 @@ public class HeightMap {
|
||||
|
||||
// Class variables
|
||||
|
||||
public static float SCALEVALUE = 1.0f / 255;
|
||||
// Heightmap data for all zones.
|
||||
|
||||
public static final HashMap<Integer, HeightMap> heightmapByLoadNum = new HashMap<>();
|
||||
// Heightmap data for all zones.
|
||||
public static float SCALEVALUE = 1.0f / 255;
|
||||
|
||||
// Bootstrap Tracking
|
||||
|
||||
public static int heightMapsCreated = 0;
|
||||
public static HeightMap PlayerCityHeightMap;
|
||||
|
||||
// Heightmap data for this heightmap
|
||||
|
||||
public BufferedImage heightmapImage;
|
||||
|
||||
public final int heightMapID;
|
||||
public final int maxHeight;
|
||||
public final int fullExtentsX;
|
||||
public final int fullExtentsY;
|
||||
|
||||
public final int zoneLoadID;
|
||||
public BufferedImage heightmapImage;
|
||||
public float bucketWidthX;
|
||||
public float bucketWidthY;
|
||||
public final int zoneLoadID;
|
||||
public float seaLevel = 0;
|
||||
public int[][] pixelColorValues;
|
||||
|
||||
@@ -246,31 +241,21 @@ public class HeightMap {
|
||||
parentZone = HeightMap.getNextZoneWithTerrain(heightMapZone.getParent());
|
||||
interpolatedParentTerrainHeight = HeightMap.getWorldHeight(parentZone, worldLoc);
|
||||
|
||||
// Between maxBlend and minBlend distance from edge of zone we LERP between the two heights
|
||||
Bounds blendBounds = Bounds.borrow();
|
||||
zoneLoc.x = abs(zoneLoc.x);
|
||||
zoneLoc.y = abs(zoneLoc.x);
|
||||
|
||||
if (Bounds.collide(worldLoc, heightMapZone.minBlend) == true) {
|
||||
blendBounds.setBounds(new Vector2f(heightMapZone.absX, heightMapZone.absZ), zoneLoc, 0.0f);
|
||||
|
||||
Bounds blendBounds = Bounds.borrow();
|
||||
zoneLoc.x = abs(zoneLoc.x);
|
||||
zoneLoc.y = abs(zoneLoc.x);
|
||||
blendBounds.setBounds(new Vector2f(heightMapZone.absX, heightMapZone.absZ), zoneLoc, 0.0f);
|
||||
float currentArea = (blendBounds.getHalfExtents().x * 2) *
|
||||
(blendBounds.getHalfExtents().y * 2);
|
||||
float zoneArea = (heightMapZone.getBounds().getHalfExtents().x * 2) *
|
||||
(heightMapZone.getBounds().getHalfExtents().y * 2);
|
||||
|
||||
float childArea = (blendBounds.getHalfExtents().x * 2) *
|
||||
(blendBounds.getHalfExtents().y * 2);
|
||||
float parentArea = (parentZone.minBlend.getHalfExtents().x * 2) *
|
||||
(parentZone.minBlend.getHalfExtents().y * 2);
|
||||
float areaDelta = currentArea / zoneArea;
|
||||
|
||||
float areaDelta = childArea / parentArea;
|
||||
|
||||
interpolatedTerrainHeight = FastMath.LERP(areaDelta, interpolatedTerrainHeight, interpolatedParentTerrainHeight);
|
||||
return interpolatedTerrainHeight + heightMapZone.worldAltitude;
|
||||
|
||||
}
|
||||
|
||||
// Past min blend we just return the parent height.
|
||||
// This should never be reached
|
||||
|
||||
return interpolatedParentTerrainHeight + heightMapZone.worldAltitude;
|
||||
interpolatedTerrainHeight = FastMath.LERP(areaDelta, interpolatedTerrainHeight, interpolatedParentTerrainHeight);
|
||||
return interpolatedTerrainHeight + heightMapZone.worldAltitude;
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user