public void TestBoolDelegateRemoveAllDelegatesInLoop() { CVarChangedDelegate del1 = delegate(CVar cvar) { m_result.Add("delegate1 " + cvar.BoolValue); }; CVarChangedDelegate del2 = delegate(CVar cvar) { m_result.Add("delegate2 " + cvar.BoolValue); }; CVarChangedDelegate del3 = delegate(CVar cvar) { m_result.Add("delegate3 " + cvar.BoolValue); cvar.RemoveDelegates(del1.Target); }; CVar cvarBool = new CVar("bool", false); cvarBool.AddDelegate(del3); cvarBool.AddDelegate(del2); cvarBool.AddDelegate(del1); Execute("bool 1"); AssertList(m_result, "delegate3 True" ); m_result.Clear(); }
public void RemoveDelegate(CVarChangedDelegate del) { if (del != null && m_delegateList != null) { m_delegateList.Remove(del); if (m_delegateList.Count == 0) { m_delegateList = null; } } }
public void TestBoolDelegateRemoveMultipleDelegates() { CVarChangedDelegate del1 = delegate(CVar cvar) { m_result.Add("delegate1 " + cvar.BoolValue); }; CVarChangedDelegate del2 = delegate(CVar cvar) { m_result.Add("delegate2 " + cvar.BoolValue); }; CVarChangedDelegate del3 = delegate(CVar cvar) { m_result.Add("delegate3 " + cvar.BoolValue); }; CVar cvarBool = new CVar("bool", false); cvarBool.AddDelegate(del1); cvarBool.AddDelegate(del2); cvarBool.AddDelegate(del3); Execute("bool 0"); AssertList(m_result); m_result.Clear(); Execute("bool 1"); AssertList(m_result, "delegate1 True", "delegate2 True", "delegate3 True" ); m_result.Clear(); cvarBool.RemoveDelegate(del3); Execute("bool 0"); AssertList(m_result, "delegate1 False", "delegate2 False" ); m_result.Clear(); cvarBool.RemoveDelegate(del2); Execute("bool 1"); AssertList(m_result, "delegate1 True" ); m_result.Clear(); cvarBool.RemoveDelegate(del1); Execute("bool 0"); AssertList(m_result); }
public void AddDelegate(CVarChangedDelegate del) { if (del == null) { throw new ArgumentNullException("del"); } if (m_delegateList == null) { m_delegateList = new CVarChangedDelegateList(1); m_delegateList.Add(del); } else if (!m_delegateList.Contains(del)) { m_delegateList.Add(del); } }