public static void UnregisterService(I_Service _service) { if (GetInstance()) { GetInstance().Unregister(_service); } }
public void RegisterAsType(I_Service _service, System.Type _type) { if (m_Services.ContainsKey(_type)) { Debug.LogError("More then one of the same service tries to register itself"); } Debug.Log("[ServiceLocator] Registerd Service " + _type.Name); m_Services[_type] = _service; CheckServiceReadyQueue(_type, _service); }
void CheckServiceReadyQueue(System.Type _type, I_Service _service) { ServiceReadyPair pair = null; for (int i = m_ServiceReadyQueue.Count - 1; i >= 0; i--) { pair = m_ServiceReadyQueue[i]; if (pair.m_Type == _type) { if (!pair.m_KeepUpdated) { m_ServiceReadyQueue.RemoveAt(i); } pair.m_Callback(_service); } } }
public void Register(I_Service _service) { RegisterServiceAsType(_service, _service.GetType()); }
public static void RegisterService(I_Service _service) { GetInstance().Register(_service); }
public static void RegisterServiceAsType(I_Service _service, System.Type _type) { GetInstance().RegisterAsType(_service, _type); }
public void Unregister(I_Service _service) { m_Services.Remove(_service.GetType()); }