mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-01-19 18:44:45 +00:00
sent deployment requests to a centralized pipeline for interference testing; swapped out math.pow(a,2) for a * a
This commit is contained in:
parent
e97900cfb4
commit
52e5cb558b
|
|
@ -85,10 +85,10 @@ object Interference {
|
|||
val pDefinition = p.Definition
|
||||
val otherInterference = pDefinition.interference
|
||||
(otherInterference ne Interference.AllowAll) && {
|
||||
lazy val distanceSq = Vector3.DistanceSquared(position, p.Position).toDouble
|
||||
(pDefinition == objectDefinition && distanceSq < math.pow(otherInterference.main.toDouble, 2)) ||
|
||||
(inAGroup && sharedGroupId == otherInterference.sharedGroupId && distanceSq < math.pow(otherInterference.shared.toDouble, 2)) ||
|
||||
distanceSq < math.pow(otherInterference.deployables.toDouble, 2)
|
||||
lazy val distanceSq = Vector3.DistanceSquared(position, p.Position)
|
||||
(pDefinition == objectDefinition && distanceSq < otherInterference.main * otherInterference.main) ||
|
||||
(inAGroup && sharedGroupId == otherInterference.sharedGroupId && distanceSq < otherInterference.shared * otherInterference.shared) ||
|
||||
distanceSq < otherInterference.deployables * otherInterference.deployables
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1317,6 +1317,10 @@ object Zone {
|
|||
final case class CanNotSpawn(zone: Zone, vehicle: Vehicle, reason: String)
|
||||
|
||||
final case class CanNotDespawn(zone: Zone, vehicle: Vehicle, reason: String)
|
||||
|
||||
final case class TryDeploymentChange(vehicle: Vehicle, toDeployState: DriveState.Value)
|
||||
|
||||
final case class CanNotDeploy(zone: Zone, vehicle: Vehicle, toDeployState: DriveState.Value, reason: String)
|
||||
}
|
||||
|
||||
object HotSpot {
|
||||
|
|
|
|||
|
|
@ -3,9 +3,10 @@ package net.psforever.objects.zones
|
|||
|
||||
import akka.actor.Actor
|
||||
import net.psforever.actors.zone.ZoneActor
|
||||
import net.psforever.objects.serverobject.deploy.{Deployment, Interference}
|
||||
import net.psforever.objects.vital.InGameHistory
|
||||
import net.psforever.objects.{Default, Vehicle}
|
||||
import net.psforever.types.Vector3
|
||||
import net.psforever.types.{DriveState, Vector3}
|
||||
|
||||
import scala.annotation.tailrec
|
||||
import scala.collection.mutable
|
||||
|
|
@ -73,15 +74,24 @@ class ZoneVehicleActor(
|
|||
vehicle.ClearHistory()
|
||||
zone.actor ! ZoneActor.RemoveFromBlockMap(vehicle)
|
||||
sender() ! Zone.Vehicle.HasDespawned(zone, vehicle)
|
||||
case None => ;
|
||||
case None =>
|
||||
sender() ! Zone.Vehicle.CanNotDespawn(zone, vehicle, "can not find")
|
||||
}
|
||||
|
||||
case Zone.Vehicle.HasDespawned(_, _) => ;
|
||||
case Zone.Vehicle.TryDeploymentChange(vehicle, toDeployState)
|
||||
if toDeployState > DriveState.Undeploying && Interference.Test(zone, vehicle).nonEmpty =>
|
||||
sender() ! Zone.Vehicle.CanNotDeploy(zone, vehicle, toDeployState, "blocked by a nearby entity")
|
||||
|
||||
case Zone.Vehicle.CanNotDespawn(_, _, _) => ;
|
||||
case Zone.Vehicle.TryDeploymentChange(vehicle, toDeployState) =>
|
||||
vehicle.Actor.tell(Deployment.TryDeploymentChange(toDeployState), sender())
|
||||
|
||||
case _ => ;
|
||||
case Zone.Vehicle.HasDespawned(_, _) => ()
|
||||
|
||||
case Zone.Vehicle.CanNotDespawn(_, _, _) => ()
|
||||
|
||||
case Zone.Vehicle.CanNotDeploy(_, _, _, _) => ()
|
||||
|
||||
case _ => ()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue