Cleanup of getWorldHeight()

This commit is contained in:
2023-09-16 13:18:36 -04:00
parent 1ac65dd9bd
commit 9aa5820ac2
+15 -12
View File
@@ -199,28 +199,31 @@ public class HeightMap {
public static float getWorldHeight(Zone currentZone, Vector3fImmutable worldLoc) { public static float getWorldHeight(Zone currentZone, Vector3fImmutable worldLoc) {
if (currentZone == null) Zone heightMapZone;
return 0;
currentZone = getNextZoneWithTerrain(currentZone); // Seafloor is rather flat.
if (currentZone == ZoneManager.getSeaFloor()) if (currentZone == ZoneManager.getSeaFloor())
return currentZone.getAbsY(); return currentZone.worldAltitude;
HeightMap heightMap = currentZone.getHeightMap(); // Retrieve the next zone with a heightmap attached.
// Zones without a heightmap use the next zone up the
// tree to calculate heights from.
if ((heightMap == null) || (currentZone == ZoneManager.getSeaFloor())) heightMapZone = getNextZoneWithTerrain(currentZone);
return currentZone.getAbsY();
Vector2f zoneLoc = ZoneManager.worldToZoneSpace(worldLoc, currentZone); // Transform world loc into zone space coordinate system
float interaltitude = currentZone.getHeightMap().getInterpolatedTerrainHeight(zoneLoc); Vector2f zoneLoc = ZoneManager.worldToZoneSpace(worldLoc, heightMapZone);
float worldAltitude = currentZone.worldAltitude; // Interpolate height for this position using pixel array.
float realWorldAltitude = interaltitude + worldAltitude; float interpolatedTerrainHeight = heightMapZone.getHeightMap().getInterpolatedTerrainHeight(zoneLoc);
// Position returned from Heightmap engine is relative to zone world height
return interpolatedTerrainHeight + heightMapZone.worldAltitude;
return realWorldAltitude;
} }
public static float getWorldHeight(Vector3fImmutable worldLoc) { public static float getWorldHeight(Vector3fImmutable worldLoc) {