コード例 #1
0
        public override bool Equals(object obj)
        {
            if (!(obj is SenseLink))
            {
                return(false);
            }
            SenseLink other = (SenseLink)obj;

            return(FirstHand == other.FirstHand && signal == other.signal);// && awarenessLevel == other.awarenessLevel;
        }
コード例 #2
0
        private void evaluateIteration(Sensor iterSensor, Signal signal)
        {
            if (iterSensor == null) //in the meantime the gameObject may have died
            {
                sensors.Remove(iterSensor);
                return;
            }

            List <SenseLink> memoryLinks = null;

            try
            {
                memoryLinks = sensorLinks[iterSensor];
            }
            catch
            {
                memoryLinks = new List <SenseLink>();
            }

            SenseLink link = iterSensor.Evaluate(signal);

            if (link != null && iterSensor.delegateSignalDetected != null)
            {
                //1. Find the SenseLink in the memory of the particular sensor
                int memoryLinkIndex = memoryLinks.IndexOf(link);

                link.UpdateTimeLastSensed(Time.time);

                // instantly increase the awareness level if the same signal is in higher awareness zone.
                // Decreasing awareness is done elsewhere based on the cooldown time
                if (memoryLinkIndex != -1 && memoryLinks[memoryLinkIndex].awarenessLevel < link.awarenessLevel)
                {
                    //Replace the old one to increase the awareness
                    memoryLinks[memoryLinkIndex] = link;
                }
                else if (memoryLinkIndex != -1) //signal detected but with less or equal awareness
                {                               //Equal is ignored here, less has already been handled by the cooldown mechanism
                  //Replace the old one to update the timeLastSensed
                    memoryLinks[memoryLinkIndex] = link;
                    return;
                }
                else if (memoryLinkIndex == -1) // new signal, add new entry
                {
                    memoryLinks.Add(link);
                    sensorLinks[iterSensor] = memoryLinks;
                }

                iterSensor.delegateSignalDetected.Invoke(link);
            }
        }
コード例 #3
0
 public void ReactToSignal(SenseLink senseLink)
 {
     Debug.Log("I see you! " + GetLevel(senseLink.awarenessLevel));
 }