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 pDefinition = p.Definition
val otherInterference = pDefinition.interference val otherInterference = pDefinition.interference
(otherInterference ne Interference.AllowAll) && { (otherInterference ne Interference.AllowAll) && {
lazy val distanceSq = Vector3.DistanceSquared(position, p.Position).toDouble lazy val distanceSq = Vector3.DistanceSquared(position, p.Position)
(pDefinition == objectDefinition && distanceSq < math.pow(otherInterference.main.toDouble, 2)) || (pDefinition == objectDefinition && distanceSq < otherInterference.main * otherInterference.main) ||
(inAGroup && sharedGroupId == otherInterference.sharedGroupId && distanceSq < math.pow(otherInterference.shared.toDouble, 2)) || (inAGroup && sharedGroupId == otherInterference.sharedGroupId && distanceSq < otherInterference.shared * otherInterference.shared) ||
distanceSq < math.pow(otherInterference.deployables.toDouble, 2) 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 CanNotSpawn(zone: Zone, vehicle: Vehicle, reason: String)
final case class CanNotDespawn(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 { object HotSpot {

View file

@ -3,9 +3,10 @@ package net.psforever.objects.zones
import akka.actor.Actor import akka.actor.Actor
import net.psforever.actors.zone.ZoneActor import net.psforever.actors.zone.ZoneActor
import net.psforever.objects.serverobject.deploy.{Deployment, Interference}
import net.psforever.objects.vital.InGameHistory import net.psforever.objects.vital.InGameHistory
import net.psforever.objects.{Default, Vehicle} import net.psforever.objects.{Default, Vehicle}
import net.psforever.types.Vector3 import net.psforever.types.{DriveState, Vector3}
import scala.annotation.tailrec import scala.annotation.tailrec
import scala.collection.mutable import scala.collection.mutable
@ -73,15 +74,24 @@ class ZoneVehicleActor(
vehicle.ClearHistory() vehicle.ClearHistory()
zone.actor ! ZoneActor.RemoveFromBlockMap(vehicle) zone.actor ! ZoneActor.RemoveFromBlockMap(vehicle)
sender() ! Zone.Vehicle.HasDespawned(zone, vehicle) sender() ! Zone.Vehicle.HasDespawned(zone, vehicle)
case None => ; case None =>
sender() ! Zone.Vehicle.CanNotDespawn(zone, vehicle, "can not find") 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 _ => ()
} }
} }