IEnumerator ExitInteraction(List <Collider> pulseObjects) { List <Collider> exitObjects; if (m_bOnCoolDown) { exitObjects = m_preObjects.Except(pulseObjects).ToList(); } else { exitObjects = pulseObjects; } yield return(null); Stopwatch sw = new Stopwatch(); sw.Start(); while (exitObjects.Count > 0) { m_preObjects.Remove(exitObjects[0]); if (exitObjects[0] != null) { IPulseInteract pulse = exitObjects[0].GetComponent <IPulseInteract>(); if (pulse != null) { //ExitPulse pulse.OnPulseExit(); } } exitObjects.RemoveAt(0); if (sw.ElapsedMilliseconds > .07f) { sw.Stop(); yield return(null); sw.Reset(); sw.Start(); } } sw.Stop(); }
/// <summary> /// Toggle all the objects with the OnPulse. /// </summary> /// <param name="objs"></param> private IEnumerator TogglePulseOjects(List <Collider> objs) { m_bInteracting = true; float timePerInteraction = .05f; Stopwatch sw = new Stopwatch(); sw.Start(); while (objs.Count > 0) { if (objs[0] == null) { objs.RemoveAt(0); continue; } // float distance = Vector3.Distance(transform.position, objs[0].transform.position); IPulseInteract pulse = objs[0].GetComponent <IPulseInteract>(); if (pulse != null) { pulse.OnPulseEnter(0); } objs.RemoveAt(0); if (sw.ElapsedMilliseconds < timePerInteraction) { sw.Stop(); yield return(null); sw.Reset(); sw.Start(); } } sw.Stop(); m_bInteracting = false; }