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; }
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); } }
public void ReactToSignal(SenseLink senseLink) { Debug.Log("I see you! " + GetLevel(senseLink.awarenessLevel)); }