예제 #1
0
 public static void UnregisterService(I_Service _service)
 {
     if (GetInstance())
     {
         GetInstance().Unregister(_service);
     }
 }
예제 #2
0
    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);
    }
예제 #3
0
    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);
            }
        }
    }
예제 #4
0
 public void Register(I_Service _service)
 {
     RegisterServiceAsType(_service, _service.GetType());
 }
예제 #5
0
 public static void RegisterService(I_Service _service)
 {
     GetInstance().Register(_service);
 }
예제 #6
0
 public static void RegisterServiceAsType(I_Service _service, System.Type _type)
 {
     GetInstance().RegisterAsType(_service, _type);
 }
예제 #7
0
 public void Unregister(I_Service _service)
 {
     m_Services.Remove(_service.GetType());
 }