Example #1
0
        /// <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());
        }