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); } }
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++; } } }