Browse Source

Offset support for blend.

magicbox-1.5.2
MagicBot 1 year ago
parent
commit
280bd61e2a
  1. 8
      src/engine/InterestManagement/Terrain.java
  2. 6
      src/engine/devcmd/cmds/GetHeightCmd.java
  3. 32
      src/engine/gameManager/ZoneManager.java

8
src/engine/InterestManagement/Terrain.java

@ -104,7 +104,7 @@ public class Terrain { @@ -104,7 +104,7 @@ public class Terrain {
// Transform world loc into zone space coordinate system
Vector2f terrainLoc = ZoneManager.worldToZoneSpace(worldLoc, terrainZone);
Vector2f terrainLoc = ZoneManager.worldToTerrainSpace(worldLoc, terrainZone);
// Interpolate height for this position in terrain
@ -178,12 +178,12 @@ public class Terrain { @@ -178,12 +178,12 @@ public class Terrain {
}
}
public float terrainBlend(Vector2f terrainLoc) {
public float terrainBlend(Vector2f zoneOffset) {
// Normalize terrain loc
Vector2f normalizedLoc = new Vector2f(terrainLoc.x / this.terrain_size.x,
terrainLoc.y / terrain_size.y);
Vector2f normalizedLoc = new Vector2f(zoneOffset.x / this.terrain_size.x,
zoneOffset.y / terrain_size.y);
float minp = this.zone.min_blend / this.zone.major_radius;
float maxp = this.zone.max_blend / this.zone.major_radius;

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

@ -38,8 +38,8 @@ public class GetHeightCmd extends AbstractDevCmd { @@ -38,8 +38,8 @@ public class GetHeightCmd extends AbstractDevCmd {
float currentHeight = Terrain.getWorldHeight(currentZone, playerCharacter.getLoc());
float parentHeight = Terrain.getWorldHeight(parentZone, playerCharacter.getLoc());
Vector2f zoneLoc = ZoneManager.worldToZoneSpace(playerCharacter.getLoc(), heightmapZone);
Vector2f zoneLoc = ZoneManager.worldToTerrainSpace(playerCharacter.getLoc(), heightmapZone);
Vector2f zoneOffset = ZoneManager.worldToZoneOffset(playerCharacter.getLoc(), heightmapZone);
Vector2f gridSquare = heightmapZone.terrain.getTerrainCell(zoneLoc);
this.throwbackInfo(playerCharacter, "Current Zone : " + currentZone.zoneName);
@ -47,7 +47,7 @@ public class GetHeightCmd extends AbstractDevCmd { @@ -47,7 +47,7 @@ public class GetHeightCmd extends AbstractDevCmd {
this.throwbackInfo(playerCharacter, "Global Height: " + heightmapZone.worldAltitude);
this.throwbackInfo(playerCharacter, "Sea Level: " + heightmapZone.seaLevel);
this.throwbackInfo(playerCharacter, "Grid : " + Math.floor(gridSquare.x) + "x" + Math.floor(gridSquare.y));
this.throwbackInfo(playerCharacter, "Blend: " + heightmapZone.terrain.terrainBlend(zoneLoc));
this.throwbackInfo(playerCharacter, "Blend: " + heightmapZone.terrain.terrainBlend(zoneOffset));
this.throwbackInfo(playerCharacter, "Height returned: " + Math.ceil(currentHeight));
this.throwbackInfo(playerCharacter, "------------");

32
src/engine/gameManager/ZoneManager.java

@ -288,8 +288,22 @@ public enum ZoneManager { @@ -288,8 +288,22 @@ public enum ZoneManager {
return localCoords;
}
public static Vector2f worldToZoneSpace(Vector3fImmutable worldVector,
Zone serverZone) {
public static Vector2f worldToZoneOffset(Vector3fImmutable worldLoc,
Zone serverZone) {
Vector2f localCoords;
Vector2f zoneOrigin;
zoneOrigin = new Vector2f(serverZone.getLoc().x, serverZone.getLoc().z);
localCoords = new Vector2f(worldLoc.x, worldLoc.z);
localCoords = localCoords.subtract(zoneOrigin);
return localCoords;
}
public static Vector2f worldToTerrainSpace(Vector3fImmutable worldLoc,
Zone serverZone) {
Vector2f localCoords;
Vector2f zoneOrigin;
@ -301,7 +315,7 @@ public enum ZoneManager { @@ -301,7 +315,7 @@ public enum ZoneManager {
// Local coordinate in world space translated to an offset from the calculated zone origin.
localCoords = new Vector2f(worldVector.x, worldVector.z);
localCoords = new Vector2f(worldLoc.x, worldLoc.z);
localCoords = localCoords.subtract(zoneOrigin);
// TODO : Make sure this value does not go outside the zone's bounds.
@ -311,18 +325,6 @@ public enum ZoneManager { @@ -311,18 +325,6 @@ public enum ZoneManager {
// Converts local zone coordinates to world coordinates
public static Vector3fImmutable localToWorld(Vector3fImmutable worldVector,
Zone serverZone) {
Vector3fImmutable worldCoords;
worldCoords = new Vector3fImmutable(worldVector.x + serverZone.absX,
worldVector.y + serverZone.absY, worldVector.z
+ serverZone.absZ);
return worldCoords;
}
/**
* Converts from local (relative to this building) to world.

Loading…
Cancel
Save