/// <summary> /// Returns a list of all project modules /// @TODO Optimization /// </summary> public IEnumerable <UTinyModule.Reference> GetModules() { var modules = Registry.FindAllByType <UTinyModule>(); var mainModule = MainModule.Dereference(Registry); // @HACK var list = modules.Where(module => module.Name != "Main").Select(module => (UTinyModule.Reference)module).ToList(); // Append all direct dependencies of our Main module that have not been found in the project (these will show up as missing) foreach (var dependency in mainModule.Dependencies) { var id = dependency.Id; if (list.All(m => m.Id != id)) { list.Add(dependency); } } // Append all direct dependencies for each module (these will show up as missing) foreach (var reference in list.ToArray()) { var module = reference.Dereference(Registry); if (null == module) { continue; } foreach (var dependency in module.Dependencies) { var id = dependency.Id; if (list.All(m => m.Id != id)) { list.Add(dependency); } } } if (!list.Contains(MainModule)) { list.Add(MainModule); } for (var i = 0; i < list.Count; i++) { var module = list[i].Dereference(Registry); if (null == module) { continue; } list[i] = (UTinyModule.Reference)module; } return(list); }
/// <summary> /// Returns all Components and Structs in the project /// </summary> public List <UTinyType.Reference> GetTypes() { var types = new List <UTinyType.Reference>(); foreach (var dependency in MainModule.Dereference(Registry).EnumerateDependencies()) { types.AddRange(dependency.Components); types.AddRange(dependency.Structs); types.AddRange(dependency.Enums); } return(types); }
/// <summary> /// Returns all types that can be assigned to a field /// </summary> public List <UTinyType.Reference> GetAvailableFieldTypes() { var types = new List <UTinyType.Reference>(); // Include built in types foreach (var type in UTinyType.BuiltInTypes) { types.Add((UTinyType.Reference)type); } // Include any structs or enums foreach (var dependency in MainModule.Dereference(Registry).EnumerateDependencies()) { types.AddRange(dependency.Structs.Select(r => r.Dereference(Registry)).Where(t => null != t).Select(t => (UTinyType.Reference)t)); types.AddRange(dependency.Enums.Select(r => r.Dereference(Registry)).Where(t => null != t).Select(t => (UTinyType.Reference)t)); } return(types); }
public List <UTinyEntityGroup.Reference> GetEntityGroups() { return(MainModule.Dereference(Registry).EnumerateDependencies().SceneRefs().ToList()); }
public List <UTinyScript.Reference> GetScripts() { var module = MainModule.Dereference(Registry); return(module.EnumerateDependencies().ScriptRefs().ToList()); }
public IEnumerable <UTinySystem.Reference> GetSystems() { var module = MainModule.Dereference(Registry); return(module.EnumerateDependencies().SystemRefs().ToList()); }