@ -11,6 +11,7 @@ package engine.net.client.handlers;
@@ -11,6 +11,7 @@ package engine.net.client.handlers;
import engine.InterestManagement.WorldGrid ;
import engine.exception.MsgSendException ;
import engine.gameManager.BuildingManager ;
import engine.gameManager.ChatManager ;
import engine.CollisionEngine.CollisionManager ;
import engine.gameManager.MovementManager ;
@ -43,16 +44,27 @@ public class MoveToPointHandler extends AbstractClientMsgHandler {
@@ -43,16 +44,27 @@ public class MoveToPointHandler extends AbstractClientMsgHandler {
Line2D travelLine = new Line2D . Float ( ) ;
Vector3fImmutable endLoc = new Vector3fImmutable ( msg . getEndLat ( ) , msg . getEndAlt ( ) , msg . getEndLon ( ) ) ;
travelLine . setLine ( pc . loc . x , pc . loc . z , endLoc . x , endLoc . z ) ;
HashSet < AbstractWorldObject > awoList = WorldGrid . getObjectsInRangePartial ( pc . loc , 1000 , MBServerStatics . MASK_BUILDING ) ;
for ( AbstractWorldObject awo : awoList ) {
Building building = ( Building ) awo ;
if ( CollisionManager . CollisionDetected ( building , travelLine , pc . getCharacterHeight ( ) , pc . loc . y ) ) {
ChatManager . chatSystemInfo ( pc , "Collision Detected" ) ;
if ( BuildingManager . getBuildingAtLocation ( pc . loc ) ! = null ) {
Building current = BuildingManager . getBuildingAtLocation ( pc . loc ) ;
if ( CollisionManager . CollisionDetected ( current , travelLine , pc . getCharacterHeight ( ) , pc . loc . y ) ) {
ChatManager . chatSystemInfo ( pc , "Collision Detected With : " + current . getName ( ) + " Rect: " + current . buildingRect ) ;
//msg.setEndCoord();
MovementManager . movement ( msg , pc ) ;
return true ;
}
}
HashSet < AbstractWorldObject > awoList = WorldGrid . getObjectsInRangePartial ( pc . loc , 1000 , MBServerStatics . MASK_BUILDING ) ;
for ( AbstractWorldObject awo : awoList ) {
Building building = ( Building ) awo ;
if ( travelLine . intersects ( building . buildingRect ) | | building . buildingRect . contains ( travelLine . getP1 ( ) ) | | building . buildingRect . contains ( travelLine . getP2 ( ) ) ) {
if ( CollisionManager . CollisionDetected ( building , travelLine , pc . getCharacterHeight ( ) , pc . loc . y ) ) {
ChatManager . chatSystemInfo ( pc , "Collision Detected With : " + building . getName ( ) + " Rect: " + building . buildingRect ) ;
//msg.setEndCoord();
MovementManager . movement ( msg , pc ) ;
return true ;
}
}
}
//ChatManager.chatSystemInfo(pc, "No Collision Detected");
MovementManager . movement ( msg , pc ) ;
return true ;