public UAssetFileBlueprint GetParentBlueprint(UAssetCacheBlock cache) { //Check if (!hasParentUObject) { return(null); } //Get UAssetFileBlueprint f; if (cache.files.ContainsKey(parentClassname)) { f = cache.files[parentPath]; } else { f = OpenUAssetWithSameSettings(parentPath, parentClassname); } //Add file to cache if (cache.files.ContainsKey(parentClassname)) { cache.files.Add(parentClassname, f); } return(f); }
/// <summary> /// Gets properties from parents /// </summary> /// <returns></returns> public List <UProperty> GetFullProperties(UAssetCacheBlock cache) { //First, create a list of properties. This list is in the opposite order it should be List <List <UProperty> > props = new List <List <UProperty> >(); props.Add(properties); //Loop through if (hasParentUObject) { string next = parentPath; string nextClassname = parentClassname; while (true) { UAssetFileBlueprint f; //Get if (cache.files.ContainsKey(nextClassname)) { f = cache.files[nextClassname]; } else { f = OpenUAssetWithSameSettings(next, nextClassname); } //Add file to cache if (cache.files.ContainsKey(nextClassname)) { cache.files.Add(nextClassname, f); } //Use props.Add(f.properties); next = f.parentPath; nextClassname = f.parentClassname; if (!f.hasParentUObject) { break; } } } //Now, work up the list and add properties List <UProperty> output = new List <UProperty>(); for (int i = 0; i < props.Count; i += 1) { //Loop through properties. If it doesn't exist in the output, add it foreach (UProperty prop in props[i]) { if (output.Where(x => x.name == prop.name && x.index == prop.index).Count() == 0) { output.Add(prop); } } } return(output); }