Browse Source

building and region lookup completed

magicbox-1.5.2
FatBoy-DOTC 1 year ago
parent
commit
7886aa6041
  1. 14
      src/engine/devcmd/cmds/RegionCmd.java
  2. 6
      src/engine/gameManager/BuildingManager.java
  3. 2
      src/engine/objects/AbstractCharacter.java

14
src/engine/devcmd/cmds/RegionCmd.java

@ -26,11 +26,13 @@ public class RegionCmd extends AbstractDevCmd {
protected void _doCmd(PlayerCharacter pc, String[] words, protected void _doCmd(PlayerCharacter pc, String[] words,
AbstractGameObject target) { AbstractGameObject target) {
String newline = "\r\n ";
String output;
output = "Target Region Information:" + newline;
Building building = BuildingManager.getBuildingAtLocation(((AbstractCharacter) target).loc); Building building = BuildingManager.getBuildingAtLocation(((AbstractCharacter) target).loc);
if(building == null){ if(building == null){
this.throwbackInfo(pc, "No Building At This Location.") ; this.throwbackInfo(pc, "No Building At This Location.") ;
} else{
this.throwbackInfo(pc, "Building At Location: " + building.getName());
} }
Regions region = ((AbstractCharacter)target).region; Regions region = ((AbstractCharacter)target).region;
if (region == null) { if (region == null) {
@ -39,9 +41,11 @@ public class RegionCmd extends AbstractDevCmd {
} }
if(region != null) { if(region != null) {
this.throwbackInfo(pc, "Region Info: " + ((AbstractCharacter) target).getName()); output += "Player Info: " + ((AbstractCharacter) target).getName() + newline;
this.throwbackInfo(pc, "Region Name: " + region); output += "Region Building: " + building.getName() + newline;
this.throwbackInfo(pc, "Region Height: " + region.lerpY((AbstractCharacter)target)); output += "Region Height: " + region.lerpY((AbstractCharacter)target) + newline;
output += "is Stairs: " + region.stairs + newline;
this.throwbackInfo(pc, output);
} }
} }

6
src/engine/gameManager/BuildingManager.java

@ -949,7 +949,7 @@ public enum BuildingManager {
building.isDeranking.compareAndSet(true, false); building.isDeranking.compareAndSet(true, false);
} }
public static Building getBuildingAtLocation(Vector3fImmutable loc){ public static Building getBuildingAtLocation(Vector3fImmutable loc){
for(AbstractWorldObject awo : WorldGrid.getObjectsInRangePartial(loc,128,MBServerStatics.MASK_BUILDING)){ for(AbstractWorldObject awo : WorldGrid.getObjectsInRangePartial(loc,64,MBServerStatics.MASK_BUILDING)){
Building building = (Building)awo; Building building = (Building)awo;
if(building == null) if(building == null)
continue; continue;
@ -958,7 +958,9 @@ public enum BuildingManager {
float minZ = building.loc.z - building.getBounds().getHalfExtents().y; float minZ = building.loc.z - building.getBounds().getHalfExtents().y;
float maxZ = building.loc.z + building.getBounds().getHalfExtents().y; float maxZ = building.loc.z + building.getBounds().getHalfExtents().y;
if(loc.x > minX && loc.x < maxX && loc.z > minZ && loc.x < maxZ) boolean meetsX = loc.x > minX && loc.x < maxX;
boolean meetsY = loc.z > minZ && loc.z < maxZ;
if(meetsX && meetsY)
return building; return building;
} }

2
src/engine/objects/AbstractCharacter.java

@ -991,7 +991,7 @@ public abstract class AbstractCharacter extends AbstractWorldObject {
if(building != null){ if(building != null){
//look for region in the building we are in //look for region in the building we are in
for(Regions regionCycle : building.getBounds().getRegions()) for(Regions regionCycle : building.getBounds().getRegions())
if(regionCycle.isPointInPolygon(value)) if(regionCycle.isPointInPolygon(value) && Math.abs(regionCycle.highLerp.y - value.y) < 10)
region = regionCycle; region = regionCycle;
} }
float regionHeightOffset = 0; float regionHeightOffset = 0;

Loading…
Cancel
Save