Exemple #1
0
        protected void FilterObjects()
        {
            if (mObjects == null)
            {
                return;
            }
            int  included      = EditorPrefs.GetInt("asset_usages_included", 0);
            bool ignoreScripts = EditorPrefs.GetBool("asset_usage_ignore_scripts", false);
            Dictionary <FilterObject.eTypes, bool> typeFlags     = new Dictionary <FilterObject.eTypes, bool>();
            List <FilterObject.eTypes>             restrictTypes = new List <FilterObject.eTypes>();

            mSearch.GetRestrictTypes(restrictTypes);
            List <AssetReferencedData> ards = new List <AssetReferencedData>();

            foreach (AssetReferencedData ard in mObjects)
            {
                if (included == 1 && !ard.IsIncluded())
                {
                    continue;
                }
                if (included == 2 && ard.IsIncluded())
                {
                    continue;
                }
                if (ignoreScripts && ard.asset is MonoScript)
                {
                    continue;
                }
                bool pass = false;
                foreach (SubAssetData asset in ard.subAssets)
                {
                    if (mSearch.Filter(asset.asset, true))
                    {
                        pass = true;
                        break;
                    }
                }
                if (pass)
                {
                    typeFlags.Clear();
                    foreach (FilterObject.eTypes et in restrictTypes)
                    {
                        typeFlags.Add(et, false);
                    }
                    foreach (AssetReferencedData user in ard.usages)
                    {
                        FilterObject.eTypes et = mSearch.GetObjectType(user.asset);
                        bool val;
                        if (!typeFlags.TryGetValue(et, out val) || val)
                        {
                            continue;
                        }
                        if (!mSearch.Filter(user.asset, false))
                        {
                            continue;
                        }
                        typeFlags.Remove(et);
                        typeFlags.Add(et, true);
                    }
                    foreach (KeyValuePair <FilterObject.eTypes, bool> kv in typeFlags)
                    {
                        pass &= kv.Value;
                    }
                }
                if (pass)
                {
                    ards.Add(ard);
                }
            }
            mFilteredObjects = ards.ToArray();
            int lines = 0;

            foreach (AssetReferencedData ard in mFilteredObjects)
            {
                ard.from = lines;
                lines   += Mathf.Max(ard.usages.Count, ard.subAssets.Count);
            }
        }
Exemple #2
0
        private void FilterObjects()
        {
            if (mObjects == null)
            {
                return;
            }
            Dictionary <FilterObject.eTypes, bool> typeFlags     = new Dictionary <FilterObject.eTypes, bool>();
            List <FilterObject.eTypes>             restrictTypes = new List <FilterObject.eTypes>();

            mSearch.GetRestrictTypes(restrictTypes);
            List <PrefabReferenceData> prds = new List <PrefabReferenceData>();

            foreach (PrefabReferenceData prd in mObjects)
            {
                bool pass = mSearch.Filter(prd.asset, true);
                if (pass)
                {
                    typeFlags.Clear();
                    foreach (FilterObject.eTypes et in restrictTypes)
                    {
                        typeFlags.Add(et, false);
                    }
                    foreach (ReferenceData rd in prd.references)
                    {
                        foreach (ReferenceComponent rc in rd.components)
                        {
                            foreach (ReferenceProperty rp in rc.properties)
                            {
                                FilterObject.eTypes et = mSearch.GetObjectType(rp.asset);
                                bool val;
                                if (!typeFlags.TryGetValue(et, out val) || val)
                                {
                                    continue;
                                }
                                if (!mSearch.Filter(rp.asset, false))
                                {
                                    continue;
                                }
                                typeFlags.Remove(et);
                                typeFlags.Add(et, true);
                            }
                        }
                    }
                    foreach (KeyValuePair <FilterObject.eTypes, bool> kv in typeFlags)
                    {
                        pass &= kv.Value;
                    }
                }
                if (pass)
                {
                    prds.Add(prd);
                }
            }
            mFilteredObjects = prds.ToArray();
            int lines = 0;

            foreach (PrefabReferenceData prd in mFilteredObjects)
            {
                prd.from = lines;
                foreach (ReferenceData rd in prd.references)
                {
                    foreach (ReferenceComponent rc in rd.components)
                    {
                        lines += rc.properties.Count;
                    }
                }
                if (prd.references.Count <= 0)
                {
                    lines++;
                }
            }
        }