Example #1
0
        public void BuildManageInfoViews()
        {
            if (string.IsNullOrEmpty(category))
            {
                return;
            }

            // 更新前の状態を保持.

            var opened = new string[0];

            if (manageInfoViews != null)
            {
                opened = manageInfoViews
                         .Where(x => x.IsOpen)
                         .Select(x => x.ManageInfo.guid)
                         .ToArray();
            }

            var edited = new string[0];

            if (manageInfoViews != null)
            {
                edited = manageInfoViews
                         .Where(x => x.IsEdit)
                         .Select(x => x.ManageInfo.guid)
                         .ToArray();
            }

            // グループ内の管理情報取得.

            var manageInfos = assetManagement.GetManageInfos(category);

            var views = new List <ManageInfoView>();

            // グループ内で管理しているアセット管理情報.
            foreach (var manageInfo in manageInfos)
            {
                var guid = manageInfo.guid;

                var open = opened.Any(x => x == guid);
                var edit = edited.Any(x => x == guid);

                var view = CreateManageInfoView(manageInfo, open, edit);

                views.Add(view);
            }

            manageInfoViews = views.ToArray();

            UpdateSearchedViews();

            EditorApplication.delayCall += () =>
            {
                if (onRequestRepaint != null)
                {
                    onRequestRepaint.OnNext(Unit.Default);
                }
            };
        }