public void Pause()
        {
            pause = true;

            foreach (var entity in entityLoader.GetAllEntities())
            {
                IPause iPause = entity.Logic as IPause;
                if (iPause != null)
                {
                    iPause.Pause();
                }
            }

            cameraInput.Pause();
        }
 public void ShowEntity(int entityId, Type entityType, Action <Entity> showSuccess, EntityData entityData)
 {
     entityLoader.ShowEntity(entityId, entityType, (entity) =>
     {
         //这里处理一下,如果暂停前调用ShowEntity,暂停后才成功加载出来调用Entity的OnShow的话,那这个Entity是没被执行到IPause的逻辑的,这里在ShowEntity成功的回调下补充个调用IPause的逻辑
         if (pause == true)
         {
             IPause iPause = entity.Logic as IPause;
             if (iPause != null)
             {
                 iPause.Pause();
             }
         }
         if (showSuccess != null)
         {
             showSuccess(entity);
         }
     }, entityData);
 }
Esempio n. 3
0
    /// <summary>
    /// 一時停止・再開を切り替える
    /// </summary>
    void PauseResume()
    {
        m_pauseFlg = !m_pauseFlg;

        // 全ての GameObject を取ってきて、IPause を継承したコンポーネントが追加されていたら Pause または Resume を呼ぶ
        var objects = FindObjectsOfType <GameObject>();

        foreach (var o in objects)
        {
            IPause i = o.GetComponent <IPause>();

            if (m_pauseFlg)
            {
                i?.Pause();     // ここで「多態性」が使われている
            }
            else
            {
                i?.Resume();    // ここで「多態性」が使われている
            }
        }
    }
Esempio n. 4
0
        public IVertex Parse(Uri userLink)
        {
            var profile = _profileFactory.Create(userLink);

            if (InCache(profile.Id, out IVertex vertex))
            {
                return(vertex);
            }

            //Wait before processing
            _pause.Pause();
            //Parse root
            var enumerableLinks = _hyperLinkParser.ParseUser(profile);
            //Parse root children
            var degrees = enumerableLinks.Select(link => _profileFactory.Create(new Uri(link)));

            vertex = _vertexFactory.Create(profile, degrees);
            _cache.Save(vertex);

            return(vertex);
        }