// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.objects; import engine.gameManager.DbManager; import engine.math.Vector3f; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; public class BuildingRegions { public static HashMap> _staticRegions = new HashMap<>(); private final boolean exitRegion; private final boolean stairs; public Vector3f center; private int buildingID; private int level; private int numVertex; private float vertex1X; private float vertex1Y; private float vertex1Z; private float vertex2X; private float vertex2Y; private float vertex2Z; private float vertex3X; private float vertex3Y; private float vertex3Z; private float vertex4X; private float vertex4Y; private float vertex4Z; private byte ground1; private byte ground2; private byte ground3; private byte ground4; private short contentBehavior; private boolean outside; private float centerX; private float centerZ; private int room = 0; private ArrayList regionPoints = new ArrayList<>(); /** * ResultSet Constructor */ public BuildingRegions(ResultSet rs) throws SQLException { buildingID = rs.getInt("buildingID"); level = rs.getInt("level"); room = rs.getInt("room"); numVertex = rs.getInt("numVertex"); vertex1X = rs.getFloat("vertex1X"); vertex1Y = rs.getFloat("vertex1Y"); vertex1Z = rs.getFloat("vertex1Z"); vertex2X = rs.getFloat("vertex2X"); vertex2Y = rs.getFloat("vertex2Y"); vertex2Z = rs.getFloat("vertex2Z"); vertex3X = rs.getFloat("vertex3X"); vertex3Y = rs.getFloat("vertex3Y"); vertex3Z = rs.getFloat("vertex3Z"); vertex4X = rs.getFloat("vertex4X"); vertex4Y = rs.getFloat("vertex4Y"); vertex4Z = rs.getFloat("vertex4Z"); regionPoints.add(new Vector3f(vertex1X, vertex1Y, vertex1Z)); regionPoints.add(new Vector3f(vertex2X, vertex2Y, vertex2Z)); regionPoints.add(new Vector3f(vertex3X, vertex3Y, vertex3Z)); if (numVertex == 4) regionPoints.add(new Vector3f(vertex4X, vertex4Y, vertex4Z)); this.contentBehavior = (rs.getShort("unknown_Order1")); short state = rs.getShort("unknown_Order2"); if (state == 2) this.outside = (true); else this.outside = (false); this.exitRegion = rs.getBoolean("colOrder1"); this.stairs = rs.getBoolean("colOrder2"); ground1 = rs.getByte("colOrder1"); ground2 = rs.getByte("colOrder2"); ground3 = rs.getByte("colOrder3"); ground4 = rs.getByte("colOrder4"); float centerY = rs.getFloat("unknown_VectorY"); centerX = rs.getFloat("unknown_VectorX"); centerZ = rs.getFloat("unknown_VectorZ"); this.center = new Vector3f(centerX, centerY, centerZ); } public static HashMap> get_staticRegions() { return _staticRegions; } public static void set_staticRegions(HashMap> _staticRegions) { BuildingRegions._staticRegions = _staticRegions; } public static void loadAllStaticColliders() { _staticRegions = DbManager.BuildingQueries.LOAD_BUILDING_REGIONS(); } public static ArrayList GetStaticCollidersForMeshID(int meshID) { return _staticRegions.get(meshID); } public int getBuildingID() { return buildingID; } public void setBuildingID(int buildingID) { this.buildingID = buildingID; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } public int getNumVertex() { return numVertex; } public void setNumVertex(int numVertex) { this.numVertex = numVertex; } public float getVertex1X() { return vertex1X; } public void setVertex1X(float vertex1x) { vertex1X = vertex1x; } public float getVertex1Y() { return vertex1Y; } public void setVertex1Y(float vertex1y) { vertex1Y = vertex1y; } public float getVertex1Z() { return vertex1Z; } public void setVertex1Z(float vertex1z) { vertex1Z = vertex1z; } public float getVertex2X() { return vertex2X; } public void setVertex2X(float vertex2x) { vertex2X = vertex2x; } public float getVertex2Y() { return vertex2Y; } public void setVertex2Y(float vertex2y) { vertex2Y = vertex2y; } public float getVertex2Z() { return vertex2Z; } public void setVertex2Z(float vertex2z) { vertex2Z = vertex2z; } public float getVertex3X() { return vertex3X; } public void setVertex3X(float vertex3x) { vertex3X = vertex3x; } public float getVertex3Y() { return vertex3Y; } public void setVertex3Y(float vertex3y) { vertex3Y = vertex3y; } public float getVertex3Z() { return vertex3Z; } public void setVertex3Z(float vertex3z) { vertex3Z = vertex3z; } public float getVertex4X() { return vertex4X; } public void setVertex4X(float vertex4x) { vertex4X = vertex4x; } public float getVertex4Y() { return vertex4Y; } public void setVertex4Y(float vertex4y) { vertex4Y = vertex4y; } public float getVertex4Z() { return vertex4Z; } public void setVertex4Z(float vertex4z) { vertex4Z = vertex4z; } public boolean isGroundLevel() { if (this.level > 0) return false; if (this.ground1 == 0) return true; if (this.ground2 == 0) return true; if (this.ground3 == 0) return true; return this.ground4 == 0; } public float getCenterX() { return centerX; } public void setCenterX(float centerX) { this.centerX = centerX; } public float getCenterY() { return centerZ; } public void setCenterY(float centerY) { this.centerZ = centerY; } public boolean isOutside() { return outside; } public short getContentBehavior() { return contentBehavior; } public int getRoom() { return room; } public ArrayList getRegionPoints() { return regionPoints; } public boolean isExitRegion() { return exitRegion; } public boolean isStairs() { return stairs; } }