Esempio n. 1
0
 public void deregisterListener(ProxSensor sensor)
 {
     if (ProxChannel.Listeners.Any(listener => listener.vessel.id == this.vessel.id && listener.channel == this.channel) == true)
     {
         MonoBehaviour.print(sensor.vessel.vesselName + " proximity alarm has been deregistered on channel " + sensor.channel);
         ProxChannel.Listeners.Remove(sensor);
         ProxChannel.Listeners.TrimExcess();
     }
 }
Esempio n. 2
0
        private void updateDistance()
        {
            double     testDistance  = 0;
            double     lastDistance  = 0;
            ProxSensor closestSensor = null;

            //Set the last distance for the purpose of direction determination
            lastDistance = currentDistance;

            //Find closest target on our channel and set closestDistance
            foreach (var listener in ProxChannel.Listeners.ToList())
            {
                if (this.vessel.id != listener.vessel.id)
                {
                    testDistance = Vector3d.Distance(this.vessel.GetWorldPos3D(), listener.vessel.GetWorldPos3D());
                    //Set distance and listener to the values from the closest non-self sensor on the same channel as us
                    if (listener.channel == this.channel && (testDistance < currentDistance || closestSensor == null))
                    {
                        closestSensor   = listener;
                        currentDistance = testDistance;
                    }
                }
            }

            //If no sensors detected, proceed no further
            if (closestSensor == null)
            {
                return;
            }

            //Determine if the vessel is approaching or departing
            departing = (currentDistance < lastDistance ? false : true);

            //Update target window size based on current velocity relative to target
            //If the target was just registered (AKA just entered 2.5km), it's velocity measurements are innacurate. Manually set to 0 until next pass.
            currentWindow = (closestSensor.justRegistered ? 0 : Math.Abs(currentDistance - lastDistance) * 1.05);
            //We now have one data point. Remove the justRegistered flag for the next pass
            if (closestSensor.justRegistered)
            {
                MonoBehaviour.print(closestSensor.vessel.name + " inelligible for proximity detection this time. Waiting for next pass.");
            }
        }
 public void deregisterListener(ProxSensor sensor)
 {
     if (ProxChannel.Listeners.Any(listener => listener.vessel.id == this.vessel.id && listener.channel == this.channel) == true) {
         MonoBehaviour.print(sensor.vessel.vesselName + " proximity alarm has been deregistered on channel " + sensor.channel);
         ProxChannel.Listeners.Remove(sensor);
         ProxChannel.Listeners.TrimExcess();
     }
 }