public static Dictionary <string, int> GetStats() { var types = ReflectionTools.GetAvailableAssemblies().SelectMany(x => x.GetTypes()); var components = types .Where(type => type.ImplementsInterface <IComponent>()) .ToArray(); var systems = types .Where(IsSystem) .ToArray(); var contexts = GetContexts(components); var stats = new Dictionary <string, int> { { "Total Components", components.Length }, { "Systems", systems.Length } }; foreach (var context in contexts) { stats.Add("Components in " + context.Key, context.Value); } return(stats); }
public CodeGeneratorData[] GetData() { var assemblies = _assembliesConfig.DoUseWhitelistOfAssemblies ? ReflectionTools.GetAvailableAssemblies(_assembliesConfig.WhiteListedAssemblies) : ReflectionTools.GetAvailableAssemblies(); var types = _types ?? assemblies.SelectMany(x => x.GetTypes()); var entityIndexData = types .Where(type => !type.IsAbstract) .Where(type => type.ImplementsInterface <IComponent>()) .ToDictionary( type => type, type => type.GetPublicMemberInfos()) .Where(kv => kv.Value.Any(info => info.attributes.Any(attr => attr.attribute is AbstractEntityIndexAttribute))) .SelectMany(kv => CreateEntityIndexData(kv.Key, kv.Value)); var customEntityIndexData = types .Where(type => !type.IsAbstract) .Where(type => Attribute.IsDefined(type, typeof(CustomEntityIndexAttribute))) .Select(CreateCustomEntityIndexData); return(entityIndexData .Concat(customEntityIndexData) .ToArray()); }
public CodeGeneratorData[] GetData() { var assemblies = _assembliesConfig.DoUseWhitelistOfAssemblies ? ReflectionTools.GetAvailableAssemblies(_assembliesConfig.WhiteListedAssemblies) : ReflectionTools.GetAvailableAssemblies(); var types = _types ?? assemblies.SelectMany(x => x.GetTypes()); var dataFromComponents = types .Where(type => type.ImplementsInterface <IComponent>()) .Where(type => !type.IsAbstract) .Select(CreateDataForComponent) .ToArray(); var dataFromNonComponents = types .Where(type => !type.ImplementsInterface <IComponent>()) .Where(type => !type.IsGenericType) .Where(HasContexts) .SelectMany(CreateDataForNonComponent) .ToArray(); var mergedData = Merge(dataFromNonComponents, dataFromComponents); var dataFromEvents = mergedData .Where(data => data.IsEvent()) .SelectMany(CreateDataForEvents) .ToArray(); return(Merge(dataFromEvents, mergedData)); }
/// <summary> /// Creates zero or more <see cref="CodeGeneratorData"/> derived instances for code generation to execute upon. /// </summary> /// <returns></returns> public CodeGeneratorData[] GetData() { // If we are only searching specific assemblies use that whitelist, otherwise get all loaded assemblies. var assemblies = _assembliesConfig.DoUseWhitelistOfAssemblies ? ReflectionTools.GetAvailableAssemblies(_assembliesConfig.WhiteListedAssemblies) : ReflectionTools.GetAvailableAssemblies(); var types = assemblies .SelectMany(x => x.GetTypes()).ToArray(); var codeGenData = new List <CodeGeneratorData>(); codeGenData.AddRange(GetFactoryCodeGeneratorData(types)); codeGenData.AddRange(GetFactoryEnumCodeGeneratorData(types)); return(codeGenData.ToArray()); }
static BlueprintInspector() { ASSEMBLIES = ReflectionTools.GetAvailableAssemblies(); }