//----------------------------------------------------------------------------------------------- public void UnregisterInfluenceObject(IInfluenceObject objectToUnregister) { List <IInfluenceObject> objectsWithTag = null; string objectTag = objectToUnregister.ObjectTag; bool isTagAlreadyRegistered = InfluenceObjects.TryGetValue(objectTag.ToLower(), out objectsWithTag); if (!isTagAlreadyRegistered) { return; } foreach (IInfluenceObject influenceObject in objectsWithTag) { if (influenceObject == objectToUnregister) { objectsWithTag.Remove(objectToUnregister); return; } } }
//----------------------------------------------------------------------------------------------- public void RegisterInfluenceObject(IInfluenceObject objectToRegister) { List <IInfluenceObject> objectsWithTag = null; string objectTag = objectToRegister.ObjectTag; bool isTagAlreadyRegistered = InfluenceObjects.TryGetValue(objectTag.ToLower(), out objectsWithTag); if (isTagAlreadyRegistered) { // Avoid adding an object twice if (objectsWithTag.Contains(objectToRegister)) { return; } objectsWithTag.Add(objectToRegister); return; } // Add the new tag with a new list objectsWithTag = new List <IInfluenceObject>(); objectsWithTag.Add(objectToRegister); InfluenceObjects.Add(objectTag.ToLower(), objectsWithTag); }
//----------------------------------------------------------------------------------------------- public void UnregisterInfluenceObject(IInfluenceObject influenceObject) { GetAndInitializeInfluenceSystemReferenceIfNeeded(); m_influenceSystem.UnregisterInfluenceObject(influenceObject); }