Exemple #1
0
        protected virtual void DoFind()
        {
            m_Items.Clear();
            m_ItemNames.Clear();
            Finder.ForeachPrefabAndScene((obj, path) =>
            {
                bool has = false;
                switch (obj)
                {
                case SceneAsset _:
                    has = FindUtil.InScene(path, InGameObjectAndChildren);
                    break;

                case GameObject prefab:
                    has = InGameObjectAndChildren(prefab);
                    break;
                }
                if (has)
                {
                    m_Items.Add((TObject)obj);
                    m_ItemNames.Add(path);
                }
            }, true, GetSearchInFolders(), m_SearchAssetType);
            m_SimpleTreeView.Reload();
        }
Exemple #2
0
        protected override void DoFind()
        {
            m_Items.Clear();
            m_ItemNames.Clear();
            var time  = DateTime.Now;
            var paths = AssetDatabase.GetAllAssetPaths();

            //paths = new string[] { "Assets/Art/FBmap/Materials/7.mat", "Assets/BuildOnlyAssets/FX/Materials/Eagle_high_fx.mat" };
            Finder.Progress((path) =>
            {
                var ext = System.IO.Path.GetExtension(path);
                switch (ext.ToLower())
                {
                case ".cs": return;

                case ".unity":
                    if (FindUtil.InScene(path, InGameObjectAndChildren))
                    {
                        m_Items.Add(AssetDatabase.LoadAssetAtPath <SceneAsset>(path));
                    }
                    return;
                }
                //Debug.Log(ext + " " + path);
                var assets = AssetDatabase.LoadAllAssetsAtPath(path);
                foreach (var asset in assets)
                {
                    // asset is null when missing script
                    if (asset == null)
                    {
                        continue;
                    }
                    if (asset == m_Asset)
                    {
                        continue;
                    }
                    if (asset.GetType() == m_UnityObjectType)
                    {
                        // UnityObject cannot contain other asset
                        continue;
                        //Debug.Log($"{asset}, {asset.GetType()}, {asset.name}, {path}");
                        // Ignore Deprecated EditorExtensionImpl
                        //if (asset.name == "Deprecated EditorExtensionImpl")
                        //    continue;
                    }

                    if (InAsset(asset, path))
                    {
                        m_Items.Add(asset);
                    }
                }
            }, paths);
            Debug.Log(DateTime.Now - time);
            m_ItemNames.Clear();
            foreach (var item in m_Items)
            {
                m_ItemNames.Add(AssetDatabase.GetAssetPath(item));
            }
            m_SimpleTreeView.Reload();
        }
Exemple #3
0
        protected override void DoFind()
        {
            m_Items.Clear();
            m_ItemNames.Clear();

            FindUtil.FilterCurrentStageOrScene(FindUtil.CheckMissingScriptOnTransfrom, m_Items);

            foreach (var item in m_Items)
            {
                m_ItemNames.Add(UnityUtil.GetFullPath(item));
            }

            m_SimpleTreeView.Reload();
        }
Exemple #4
0
 protected override bool InGameObjectAndChildren(GameObject prefab)
 {
     return(UnityUtil.AnyOneComponentAndChildren <Component>((comp) =>
     {
         if (FindUtil.IgnoreType(comp))
         {
             return false;
         }
         return UnityUtil.AnyOneProperty((prop) =>
         {
             return prop.propertyType == SerializedPropertyType.ObjectReference &&
             prop.objectReferenceValue == m_Asset;
         }, comp);
     }, prefab.transform));
 }
Exemple #5
0
        private bool InAsset(UnityEngine.Object asset, string path)
        {
            switch (asset)
            {
            case GameObject go:
                return(InGameObjectAndChildren(go));

            case SceneAsset scene:
                return(FindUtil.InScene(path, InGameObjectAndChildren));

            default:
                return(UnityUtil.AnyOneProperty((prop) =>
                {
                    return prop.propertyType == SerializedPropertyType.ObjectReference &&
                    prop.objectReferenceValue == m_Asset;
                }, asset));
            }
        }
Exemple #6
0
 protected override bool InGameObjectAndChildren(GameObject prefab)
 {
     return(FindUtil.InGameObject(prefab, m_Asset));
 }