sent deployment requests to a centralized pipeline for interference testing; swapped out math.pow(a,2) for a * a

This commit is contained in:
Fate-JH 2024-04-02 12:49:43 -04:00
parent e97900cfb4
commit 52e5cb558b
3 changed files with 23 additions and 9 deletions

View file

@ -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
}
}
}

View file

@ -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 {

View file

@ -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 _ => ()
}
}