예제 #1
0
        private void DrawSpriteColliderInfo()
        {
            ShowUtil.DrawTitle("代表本体的碰撞信息", Color.magenta);
            ShowUtil.DrawLine();
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("重置", GUILayout.Width(120f)))
            {
                SetSpriteCollider();
            }
            GUILayout.EndHorizontal();
            if (spriteInfo.spriteCollider == null)
            {
                EditorUtils.DrawNoCollider();
                return;
            }

            ObjCollider objCollider = spriteInfo.spriteCollider;

            EditorGUI.indentLevel += 2;
            EditorGUILayout.ObjectField("碰撞体",
                                        objCollider,
                                        typeof(ObjCollider), true);
            objCollider.gameObject.layer = EditorGUILayout.LayerField("碰撞体层级", objCollider.gameObject.layer, GUILayout.ExpandWidth(true));
            EditorGUILayout.ObjectField("信息体", objCollider.info, typeof(ObjInfo), true);
            EditorGUI.indentLevel -= 2;
        }
예제 #2
0
        private void DrawOtherInfo()
        {
            ShowUtil.DrawTitle("其他配置", Color.yellow);

            EditorGUIUtility.labelWidth = 250f;
            EditorGUI.indentLevel      += 2;
            //角色层级
            GUILayout.BeginHorizontal();
            charater.layer = EditorGUILayout.LayerField("角色层级", charater.layer);
            if (GUILayout.Button("设置", GUILayout.Width(120f)))
            {
                charater.layer = Const.LAYER_CHARACTER_MOVER;
            }
            GUILayout.EndHorizontal();
            //骨骼数
            bonePre = EditorGUILayout.TextField("骨骼前缀", bonePre);
            GUILayout.BeginHorizontal();
            EditorGUILayout.IntField("骨骼数", spriteInfo.boneCount);
            if (GUILayout.Button("设置", GUILayout.Width(120f)))
            {
                spriteInfo.boneCount = Utils.CalcBoneCount(charater, bonePre);
            }
            GUILayout.EndHorizontal();
            //面数
            GUILayout.BeginHorizontal();
            EditorGUILayout.IntField("模型面数", spriteInfo.trisCount);
            if (GUILayout.Button("设置", GUILayout.Width(120f)))
            {
                spriteInfo.trisCount = Utils.CalcTriCount(charater);
            }
            GUILayout.EndHorizontal();
            EditorGUI.indentLevel -= 2;
        }
예제 #3
0
        private void DrawObstacleInfo()
        {
            ShowUtil.DrawTitle("障碍信息", Color.yellow);
            ShowUtil.DrawLine();
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("设置障碍", GUILayout.Width(120f)))
            {
                SetObstacle();
            }
            GUILayout.EndHorizontal();
            if (itemInfo.obstacle == null)
            {
                EditorGUILayout.LabelField("没有设置障碍", GUILayout.Width(120));
                return;
            }
            EditorGUI.indentLevel += 2;
            EditorGUILayout.ObjectField("障碍", itemInfo.obstacle, typeof(GameObject), true);
            Collider obstacleCollider = itemInfo.obstacle.GetComponent <Collider>();

            if (obstacleCollider == null)
            {
                EditorGUILayout.LabelField("请设置障碍的Collider");
            }
            EditorGUI.indentLevel -= 2;
        }
예제 #4
0
 private void DrawBoneWearInfo()
 {
     ShowUtil.DrawTitle("骨骼装配方案", Color.magenta);
     ShowUtil.DrawLine();
     GUILayout.BeginHorizontal();
     GUILayout.FlexibleSpace();
     if (GUILayout.Button("添加骨骼", GUILayout.Width(120f)))
     {
         List <EquipInfo.EquipSki> skis;
         if (equipInfo.skis == null)
         {
             skis = new List <EquipInfo.EquipSki>();
         }
         else
         {
             skis = new List <EquipInfo.EquipSki>(equipInfo.skis);
         }
         skis.Add(new EquipInfo.EquipSki());
         equipInfo.skis = skis.ToArray();
     }
     GUILayout.EndHorizontal();
     if (null == equipInfo.skis)
     {
         return;
     }
     for (int i = 0; i < equipInfo.skis.Length; ++i)
     {
         ShowUtil.DrawLine();
         DrawOneSki(equipInfo.skis[i]);
     }
 }
예제 #5
0
        static void ShowEquipEditor()
        {
            Type gameView = ShowUtil.GetGameViewType();
            var  window   = GetWindow <EquipEditor>("装备编辑", true, gameView);

            window.Show();
        }
예제 #6
0
        private void DrawUsableColliderInfo()
        {
            ShowUtil.DrawTitle("使用的碰撞信息", Color.magenta);
            ShowUtil.DrawLine();
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("添加", GUILayout.Width(120f)))
            {
                UseableCollider        collider     = EditorUtils.AddUsableCollider(furniture.transform, furnitureInfo, 3, true);
                List <UseableCollider> newColliders = new List <UseableCollider>(furnitureInfo.usableColliders);
                newColliders.Add(collider);
                furnitureInfo.usableColliders = newColliders.ToArray();
            }
            GUILayout.EndHorizontal();

            if (furnitureInfo.usableColliders == null || furnitureInfo.usableColliders.Length == 0)
            {
                EditorUtils.DrawNoCollider();
                return;
            }
            for (int i = 0; i < furnitureInfo.usableColliders.Length; ++i)
            {
                ShowUtil.DrawLine();
                EditorUtils.DrawUsableColliderInfo(ref furnitureInfo.usableColliders[i]);
            }
        }
예제 #7
0
        static void ShowCharacterEditor()
        {
            Type gameView = ShowUtil.GetGameViewType();
            var  window   = GetWindow <CharacterEditor>("精灵编辑", true, gameView);

            window.Show();
        }
        protected override void DoubleClickedItem(int id)
        {
            if (!findResultItems.ContainsKey(id))
            {
                SetExpanded(id, true);
                return;
            }

            var request = findResultItems[id].UsageElement;

            switch (request)
            {
            case SceneElement sceneElement:
                ShowUtil.ShowUsageOnScene(sceneElement.FilePath, sceneElement.FileName, sceneElement.Path, sceneElement.RootIndices);
                break;

            case PrefabElement _:
            case ScriptableObjectElement _:
                ShowUtil.ShowFileUsage(request.FilePath);
                break;

            case AnimatorElement animatorElement:
                var elements = animatorElement.PathElements;
                var range    = elements.ToList().GetRange(0, myAnimatorItemIdToPathElementsCount[id]);
                ShowUtil.ShowAnimatorUsage(range.ToArray(), animatorElement.FilePath);
                break;

            case AnimationElement animationElement:
                ShowUtil.ShowAnimationEventUsage(animationElement.FilePath);
                break;
            }
        }
예제 #9
0
 private void DrawEquipInfo()
 {
     DrawBoneWearInfo();
     ShowUtil.DrawLine();
     DrawOtherInfo();
     ShowUtil.DrawLine();
     EditorUtils.DrawApply(equip, prefab);
 }
예제 #10
0
 public static void DrawPrefabInfo(GameObject prefab)
 {
     ShowUtil.DrawTitle("当前物体信息", Color.cyan);
     ShowUtil.DrawLine();
     EditorGUI.indentLevel += 2;
     EditorGUILayout.LabelField("模型名:" + (prefab == null?"无": prefab.name), GUILayout.ExpandWidth(true));
     EditorGUI.indentLevel -= 2;
 }
예제 #11
0
 private void DrawCharatorInfo()
 {
     ShowUtil.DrawTitle("当前角色信息", Color.cyan);
     ShowUtil.DrawLine();
     EditorGUI.indentLevel += 2;
     EditorGUILayout.LabelField("模型名:" + (prefab == null?"无": prefab.name), GUILayout.ExpandWidth(true));
     EditorGUI.indentLevel -= 2;
 }
예제 #12
0
 public override void OnInspectorGUI()
 {
     serializedObject.Update();
     ShowUtil.ScriptTitle(target);
     injectionList.DoLayoutList();
     serializedObject.ApplyModifiedProperties();
     DrawApplyButton();
 }
예제 #13
0
        public static void OnModelInitializationHandler(UnityModelAndLifetime modelAndLifetime)
        {
            var modelValue         = modelAndLifetime.Model;
            var connectionLifetime = modelAndLifetime.Lifetime;

            modelValue.ShowGameObjectOnScene.Advise(connectionLifetime, findUsagesResult =>
            {
                if (findUsagesResult != null)
                {
                    MainThreadDispatcher.Instance.Queue(() =>
                    {
                        ExpandMinimizedUnityWindow();

                        EditorUtility.FocusProjectWindow();

                        if (findUsagesResult.IsPrefab)
                        {
                            ShowUtil.ShowFileUsage(findUsagesResult.FilePath);
                        }
                        else
                        {
                            ShowUtil.ShowUsageOnScene(findUsagesResult.FilePath, findUsagesResult.FileName, findUsagesResult.PathElements, findUsagesResult.RootIndices);
                        }
                    });
                }
            });

            modelValue.FindUsageResults.Advise(connectionLifetime, result =>
            {
                if (result != null)
                {
                    MainThreadDispatcher.Instance.Queue(() =>
                    {
                        GUI.BringWindowToFront(EditorWindow.GetWindow <SceneView>().GetInstanceID());
                        GUI.BringWindowToFront(EditorWindow.GetWindow(typeof(SceneView).Assembly.GetType("UnityEditor.SceneHierarchyWindow")).GetInstanceID());
                        GUI.BringWindowToFront(EditorWindow.GetWindow(typeof(SceneView).Assembly.GetType("UnityEditor.ProjectBrowser")).GetInstanceID());

                        var window = FindUsagesWindow.GetWindow(result.Target);
                        window.SetDataToEditor(result.Elements);
                    });
                }
            });

            modelValue.ShowFileInUnity.Advise(connectionLifetime, result =>
            {
                if (result != null)
                {
                    MainThreadDispatcher.Instance.Queue(() =>
                    {
                        EditorUtility.FocusProjectWindow();
                        ShowUtil.ShowFileUsage(result);
                    });
                }
            });
        }
예제 #14
0
        private void DrawOtherInfo()
        {
            ShowUtil.DrawTitle("其他配置", Color.yellow);

            EditorGUIUtility.labelWidth = 250f;
            EditorGUI.indentLevel      += 2;
            furnitureInfo.furnitureType = (FurnitureType)EditorGUILayout.EnumPopup("建筑类型", furnitureInfo.furnitureType);
            furnitureInfo.cellWidth     = EditorGUILayout.IntField("格子长度", furnitureInfo.cellWidth);
            furnitureInfo.cellHeight    = EditorGUILayout.IntField("格子宽度", furnitureInfo.cellHeight);
            furnitureInfo.direction     = (FurnitureDirect)EditorGUILayout.EnumPopup("默认朝向", furnitureInfo.direction);
            EditorGUI.indentLevel      -= 2;
        }
예제 #15
0
 private void DrawItemInfo()
 {
     DrawComponentInfo();
     ShowUtil.DrawLine();
     DrawItemColliderInfo();
     ShowUtil.DrawLine();
     DrawUseableColliderInfo();
     ShowUtil.DrawLine();
     DrawObstacleInfo();
     ShowUtil.DrawLine();
     EditorUtils.DrawApply(item, prefab);
 }
예제 #16
0
 private void DrawSpriteInfo()
 {
     DrawComponentInfo();
     ShowUtil.DrawLine();
     DrawMountInfo();
     ShowUtil.DrawLine();
     DrawSpriteColliderInfo();
     ShowUtil.DrawLine();
     DrawUseableColliderInfo();
     ShowUtil.DrawLine();
     DrawOtherInfo();
     ShowUtil.DrawLine();
     EditorUtils.DrawApply(charater, prefab);
 }
예제 #17
0
 private void DrawFurnitureInfo()
 {
     DrawComponentInfo();
     ShowUtil.DrawLine();
     DrawFurnitureColliderInfo();
     ShowUtil.DrawLine();
     DrawUsableColliderInfo();
     ShowUtil.DrawLine();
     DrawObstacleInfo();
     ShowUtil.DrawLine();
     DrawOtherInfo();
     ShowUtil.DrawLine();
     EditorUtils.DrawApply(furniture, prefab);
 }
예제 #18
0
 private void OnGUI()
 {
     scrollPosition = GUILayout.BeginScrollView(scrollPosition);
     DrawNewScene();
     ShowUtil.DrawLine();
     DrawCharatorInfo();
     ShowUtil.DrawLine();
     if (null == spriteInfo)
     {
         DrawNoSpriteInfo();
     }
     else
     {
         DrawSpriteInfo();
     }
     GUILayout.EndScrollView();
 }
예제 #19
0
        private void DrawNewScene()
        {
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            GUI.color = Color.cyan;
            bool newScene = GUILayout.Button("新建场景", GUILayout.Width(120f));

            GUI.color = Color.white;
            GUILayout.EndHorizontal();
            if (newScene)
            {
                GameObject oldPrefab = prefab;
                Release();
                ShowUtil.NewScene();
                SetCharacter(oldPrefab);
            }
        }
예제 #20
0
 private void OnGUI()
 {
     scrollPosition = GUILayout.BeginScrollView(scrollPosition);
     DrawNewScene();
     ShowUtil.DrawLine();
     DrawPrefabInfo();
     ShowUtil.DrawLine();
     if (null == itemInfo)
     {
         DrawNoItemInfo();
     }
     else
     {
         DrawItemInfo();
     }
     GUILayout.EndScrollView();
 }
예제 #21
0
 private void OnGUI()
 {
     scrollPosition = GUILayout.BeginScrollView(scrollPosition);
     EditorUtils.DrawNewScene(prefab, Release, SetEquip);
     ShowUtil.DrawLine();
     EditorUtils.DrawPrefabInfo(prefab);
     ShowUtil.DrawLine();
     if (null == equipInfo)
     {
         DrawNoEquipInfo();
     }
     else
     {
         DrawEquipInfo();
     }
     GUILayout.EndScrollView();
 }
예제 #22
0
        public static void DrawNewScene(GameObject prefab, Action release, Action <GameObject> setPrefab)
        {
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            GUI.color = Color.cyan;
            bool newScene = GUILayout.Button("新建场景", GUILayout.Width(120f));

            GUI.color = Color.white;
            GUILayout.EndHorizontal();
            if (newScene)
            {
                GameObject oldPrefab = prefab;
                release();
                ShowUtil.NewScene();
                setPrefab(oldPrefab);
            }
        }
예제 #23
0
 private void DrawUseableColliderInfo()
 {
     ShowUtil.DrawTitle("代表被拾取的碰撞体信息", Color.magenta);
     ShowUtil.DrawLine();
     GUILayout.BeginHorizontal();
     GUILayout.FlexibleSpace();
     if (GUILayout.Button("重置", GUILayout.Width(120f)))
     {
         EditorUtils.SetUsableCollider(ref spriteInfo.useableCollider, charater.transform, spriteInfo, 1, false);
     }
     GUILayout.EndHorizontal();
     if (spriteInfo.useableCollider == null)
     {
         EditorUtils.DrawNoCollider();
         return;
     }
     EditorUtils.DrawUsableColliderInfo(ref spriteInfo.useableCollider);
 }
예제 #24
0
 private void DrawMountInfo()
 {
     ShowUtil.DrawTitle("角色挂点", Color.green);
     EditorGUI.indentLevel += 2;
     for (int i = 0; i < 4; ++i)
     {
         GUILayout.BeginHorizontal();
         spriteInfo.mounts[i] = (Transform)EditorGUILayout.ObjectField(SPRITE_HH_CHS[i],
                                                                       spriteInfo.mounts[i],
                                                                       typeof(Transform), true);
         if (GUILayout.Button("设置", GUILayout.Width(120f)))
         {
             spriteInfo.mounts[i] = charater.transform.FindRecursive(SPRITE_HH[i]);
         }
         GUILayout.EndHorizontal();
     }
     EditorGUI.indentLevel -= 2;
 }
예제 #25
0
 private void DrawComponentInfo()
 {
     ShowUtil.DrawTitle("组件", Color.white);
     EditorGUI.indentLevel += 2;
     GUILayout.BeginHorizontal();
     itemInfo.animation = (Animation)EditorGUILayout.ObjectField("动画", itemInfo.animation, typeof(Animation), true);
     if (GUILayout.Button("设置", GUILayout.Width(120f)))
     {
         itemInfo.animation = item.GetComponent <Animation>();
         if (null != itemInfo.animation)
         {
             itemInfo.animation.playAutomatically = false;
             itemInfo.animation.clip = null;
         }
     }
     GUILayout.EndHorizontal();
     EditorGUI.indentLevel -= 2;
 }
예제 #26
0
        protected override void DoubleClickedItem(int id)
        {
            if (!findResultItems.ContainsKey(id))
            {
                SetExpanded(id, true);
                return;
            }

            var request = findResultItems[id].UsageElement;

            if (request is SceneElement sceneElement)
            {
                ShowUtil.ShowUsageOnScene(sceneElement.FilePath, sceneElement.FileName, sceneElement.Path, sceneElement.RootIndices);
            }

            if (request is PrefabElement || request is ScriptableObjectElement)
            {
                ShowUtil.ShowFileUsage(request.FilePath);
            }
        }
예제 #27
0
 private void DrawComponentInfo()
 {
     ShowUtil.DrawTitle("角色组件", Color.white);
     EditorGUI.indentLevel += 2;
     GUILayout.BeginHorizontal();
     spriteInfo.animation = (Animation)EditorGUILayout.ObjectField("动画", spriteInfo.animation, typeof(Animation), true);
     if (GUILayout.Button("设置", GUILayout.Width(120f)))
     {
         spriteInfo.animation = charater.GetComponent <Animation>();
         if (null != spriteInfo.animation)
         {
             spriteInfo.animation.playAutomatically = false;
             spriteInfo.animation.clip = null;
         }
     }
     GUILayout.EndHorizontal();
     EditorUtils.DrawAniSet(charater, ref aniFolder);
     GUILayout.BeginHorizontal();
     spriteInfo.cct = (CharacterController)EditorGUILayout.ObjectField("移动控制", spriteInfo.cct, typeof(CharacterController), true);
     if (GUILayout.Button("设置", GUILayout.Width(120f)))
     {
         spriteInfo.cct = charater.GetComponent <CharacterController>();
         if (null == spriteInfo.cct)
         {
             spriteInfo.cct = charater.AddComponent <CharacterController>();
         }
     }
     GUILayout.EndHorizontal();
     GUILayout.BeginHorizontal();
     spriteInfo.follower = (NavFollower)EditorGUILayout.ObjectField("寻路", spriteInfo.follower, typeof(NavFollower), true);
     if (GUILayout.Button("设置", GUILayout.Width(120f)))
     {
         spriteInfo.follower = charater.GetComponent <NavFollower>();
         if (null == spriteInfo.follower)
         {
             spriteInfo.follower = charater.AddComponent <NavFollower>();
         }
     }
     GUILayout.EndHorizontal();
     GUILayout.BeginHorizontal();
     spriteInfo.equipWear = (EquipWear)EditorGUILayout.ObjectField("换装", spriteInfo.equipWear, typeof(Replacement), true);
     if (GUILayout.Button("设置", GUILayout.Width(120f)))
     {
         spriteInfo.equipWear = charater.GetComponent <EquipWear>();
     }
     GUILayout.EndHorizontal();
     GUILayout.BeginHorizontal();
     spriteInfo.dismemberment = (Dismemberment)EditorGUILayout.ObjectField("肢解", spriteInfo.dismemberment, typeof(Dismemberment), true);
     if (GUILayout.Button("设置", GUILayout.Width(120f)))
     {
         spriteInfo.dismemberment = charater.GetComponent <Dismemberment>();
     }
     GUILayout.EndHorizontal();
     GUILayout.BeginHorizontal();
     spriteInfo.ragdollManager = (RagdollManagerHum)EditorGUILayout.ObjectField("布娃娃", spriteInfo.ragdollManager, typeof(RagdollManagerHum), true);
     if (GUILayout.Button("设置", GUILayout.Width(120f)))
     {
         spriteInfo.ragdollManager = charater.GetComponent <RagdollManagerHum>();
     }
     GUILayout.EndHorizontal();
     EditorGUI.indentLevel -= 2;
 }
예제 #28
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            ShowUtil.ScriptTitle(target);
            EditorGUILayout.Space();
            EditorGUI.BeginChangeCheck();
            EditorGUILayout.PropertyField(serializedObject.FindProperty("outputDir"), new GUIContent("输出目录"));
            EditorGUILayout.Space();
            dirFolderOut = EditorGUILayout.Foldout(dirFolderOut, string.Format("基础资源 ({0})", dirs.count));
            if (dirFolderOut)
            {
                dirs.DoLayoutList();
            }

            prefabFolderOut = EditorGUILayout.Foldout(prefabFolderOut, string.Format("预制体 ({0})", prefabs.count));
            if (prefabFolderOut)
            {
                prefabs.DoLayoutList();
            }

            sceneFolderOut = EditorGUILayout.Foldout(sceneFolderOut, string.Format("场景 ({0})", scenes.count));
            if (sceneFolderOut)
            {
                scenes.DoLayoutList();
            }

            excludesFolderOut = EditorGUILayout.Foldout(excludesFolderOut, string.Format("排除 ({0})", excludes.count));
            if (excludesFolderOut)
            {
                excludes.DoLayoutList();
            }

            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(serializedObject.FindProperty("ignoreResPattern"));

            EditorGUILayout.LabelField("注:以上资源获取,排除以_开头的目录和文件");

            EditorGUILayout.Space();

            EditorGUILayout.PropertyField(serializedObject.FindProperty("usePathId"));

            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
            }

            BundleSet bundleSet = target as BundleSet;

            EditorGUILayout.Space();
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Gen Bundle"))
            {
                EditorApplication.delayCall += () =>
                {
                    if (EditorUtility.DisplayDialog("Gen Bundle", "是否确认要生成所有的AssetBundle?", "Yes", "No"))
                    {
                        bundleSet.Gen(genClear, genInfo);
                    }
                };
            }

            genClear = GUILayout.Toggle(genClear, "重置bundle");
            genInfo  = GUILayout.Toggle(genInfo, "输出信息");
            GUILayout.EndHorizontal();
        }
예제 #29
0
 private void DrawOtherInfo()
 {
     ShowUtil.DrawTitle("其他配置", Color.yellow);
     equipInfo.suitTag   = EditorGUILayout.IntField("套装标记(0表示非套装)", equipInfo.suitTag);
     equipInfo.firePoint = (Transform)EditorGUILayout.ObjectField("武器枪口", equipInfo.firePoint, typeof(Transform), true);
 }
예제 #30
0
        public static void OnModelInitializationHandler(UnityModelAndLifetime modelAndLifetime)
        {
            var modelValue         = modelAndLifetime.Model;
            var connectionLifetime = modelAndLifetime.Lifetime;

            modelValue.ShowUsagesInUnity.Advise(connectionLifetime, findUsagesResult =>
            {
                if (findUsagesResult != null)
                {
                    MainThreadDispatcher.Instance.Queue(() =>
                    {
                        ExpandMinimizedUnityWindow();

                        EditorUtility.FocusProjectWindow();
                        switch (findUsagesResult)
                        {
                        case AnimatorFindUsagesResult animatorUsage:
                            ShowUtil.ShowAnimatorUsage(animatorUsage.PathElements, animatorUsage.FilePath);
                            return;

                        case HierarchyFindUsagesResult _ when findUsagesResult.Extension.Equals(".prefab", StringComparison.OrdinalIgnoreCase):
                            ShowUtil.ShowFileUsage(findUsagesResult.FilePath);
                            break;

                        case HierarchyFindUsagesResult hierarchyFindUsagesResult:
                            ShowUtil.ShowUsageOnScene(findUsagesResult.FilePath, findUsagesResult.FileName, hierarchyFindUsagesResult.PathElements, hierarchyFindUsagesResult.RootIndices);
                            break;

                        case AnimationFindUsagesResult animationEventUsage:
                            ShowUtil.ShowAnimationEventUsage(animationEventUsage.FilePath);
                            break;

                        default:
                            ShowUtil.ShowFileUsage(findUsagesResult.FilePath);
                            break;
                        }
                    });
                }
            });

            modelValue.SendFindUsagesSessionResult.Advise(connectionLifetime, result =>
            {
                if (result != null)
                {
                    MainThreadDispatcher.Instance.Queue(() =>
                    {
                        GUI.BringWindowToFront(EditorWindow.GetWindow <SceneView>().GetInstanceID());
                        GUI.BringWindowToFront(EditorWindow.GetWindow(typeof(SceneView).Assembly.GetType("UnityEditor.SceneHierarchyWindow")).GetInstanceID());
                        GUI.BringWindowToFront(EditorWindow.GetWindow(typeof(SceneView).Assembly.GetType("UnityEditor.ProjectBrowser")).GetInstanceID());

                        var window = FindUsagesWindow.GetWindow(result.Target);
                        window.SetDataToEditor(result.Elements);
                    });
                }
            });

            modelValue.ShowFileInUnity.Advise(connectionLifetime, result =>
            {
                if (result != null)
                {
                    MainThreadDispatcher.Instance.Queue(() =>
                    {
                        ExpandMinimizedUnityWindow();
                        EditorUtility.FocusProjectWindow();
                        ShowUtil.ShowFileUsage(result);
                    });
                }
            });
        }