public virtual void SetActive(bool status)
 {
     gameObject.SetActive(status);
     if (!Application.isPlaying)
     {
         return;
     }
     if (_poolListeners != null)
     {
         for (int i = 0; i < _poolListeners.Length; i++)
         {
             if (_poolListeners[i] == null)
             {
                 continue;
             }
             if (status)
             {
                 _poolListeners[i].OnPoolSpawned();
             }
             else
             {
                 _poolListeners[i].OnPoolDespawned();
             }
         }
     }
     if (_systemFixedUpdate != null)
     {
         for (int i = 0; i < _systemFixedUpdate.Length; i++)
         {
             if (_systemFixedUpdate[i] == null)
             {
                 continue;
             }
             if (status)
             {
                 SystemManager.AddFixed(_systemFixedUpdate[i]);
             }
             else
             {
                 SystemManager.Remove(_systemFixedUpdate[i]);
             }
         }
     }
     if (_systemUpdate != null)
     {
         for (int i = 0; i < _systemUpdate.Length; i++)
         {
             if (_systemUpdate[i] == null)
             {
                 continue;
             }
             if (status)
             {
                 SystemManager.Add(_systemUpdate[i]);
             }
             else
             {
                 SystemManager.Remove(_systemUpdate[i]);
             }
         }
     }
     if (_turnUpdate != null)
     {
         for (int i = 0; i < _turnUpdate.Length; i++)
         {
             if (_turnUpdate[i] == null)
             {
                 continue;
             }
             if (status)
             {
                 SystemManager.AddTurn(_turnUpdate[i]);
             }
             else
             {
                 SystemManager.RemoveTurn(_turnUpdate[i]);
             }
         }
     }
 }