CodeGenFile generateInterface(ComponentData data) { var componentName = data.GetFullTypeName().ToComponentName(_ignoreNamespacesConfig.ignoreNamespaces); var memberData = data.GetMemberData(); var interfaceName = "I" + componentName.RemoveComponentSuffix(); var template = memberData.Length == 0 ? FLAG_INTERFACE_TEMPLATE : STANDARD_INTERFACE_TEMPLATE; var fileContent = template .Replace("${InterfaceName}", interfaceName) .Replace("${ComponentType}", data.GetFullTypeName()) .Replace("${ComponentName}", componentName) .Replace("${componentName}", componentName.LowercaseFirst()) .Replace("${prefixedName}", data.GetCustomComponentPrefix().LowercaseFirst() + componentName) .Replace("${memberArgs}", getMemberArgs(memberData)); return(new CodeGenFile( "Components" + Path.DirectorySeparatorChar + "Interfaces" + Path.DirectorySeparatorChar + interfaceName + ".cs", fileContent, GetType().FullName )); }
CodeGenFile generateExtension(string contextName, ComponentData data) { var componentName = data.GetFullTypeName().ToComponentName(_ignoreNamespacesConfig.ignoreNamespaces); var index = contextName + ComponentsLookupGenerator.COMPONENTS_LOOKUP + "." + componentName; var memberData = data.GetMemberData(); var template = memberData.Length == 0 ? FLAG_COMPONENT_TEMPLATE : STANDARD_COMPONENT_TEMPLATE; var fileContent = template .Replace("${ContextName}", contextName) .Replace("${ComponentType}", data.GetFullTypeName()) .Replace("${ComponentName}", componentName) .Replace("${componentName}", componentName.LowercaseFirst()) .Replace("${prefixedName}", data.GetUniquePrefix().LowercaseFirst() + componentName) .Replace("${Index}", index) .Replace("${memberArgs}", getMemberArgs(memberData)) .Replace("${memberAssignment}", getMemberAssignment(memberData)); return(new CodeGenFile( contextName + Path.DirectorySeparatorChar + "Components" + Path.DirectorySeparatorChar + contextName + componentName.AddComponentSuffix() + ".cs", fileContent, GetType().FullName )); }
CodeGenFile generateExtension(string contextName, ComponentData data) { var memberData = data.GetMemberData(); var componentName = data.GetFullTypeName().ToComponentName(_ignoreNamespacesConfig.ignoreNamespaces); var template = memberData.Length == 0 ? FLAG_COMPONENT_TEMPLATE : SA_COMPONENT_TEMPLATE; var fileContent = template .Replace("${ContextName}", contextName) .Replace("${ComponentType}", data.GetFullTypeName()) .Replace("${ComponentName}", componentName) .Replace("${componentName}", componentName.LowercaseFirst()) .Replace("${prefixedComponentName}", data.GetCustomComponentPrefix().LowercaseFirst() + componentName) .Replace("${memberArgs}", getMemberArgs(memberData)) .Replace("${methodArgs}", getMethodArgs(memberData)); return(new CodeGenFile( contextName + Path.DirectorySeparatorChar + "Components" + Path.DirectorySeparatorChar + contextName + componentName.AddComponentSuffix() + ".cs", fileContent, GetType().FullName )); }
CodeGenFile generateComponentMonoBehaviousClass(string contextName, ComponentData data) { MemberData[] memberData = (MemberData[])data["component_memberInfos"]; var componentType = data.GetFullTypeName().ShortTypeName(); return(new CodeGenFile( contextName + Path.DirectorySeparatorChar + "ComponentsMonoBehaviours" + Path.DirectorySeparatorChar + contextName + componentType + "MonoBehaviour.cs", COMPONENT_TEMPLATE .Replace("${Context}", contextName) .Replace("${ComponentType}", componentType) .Replace("${memberArgs}", getMemberArgs(memberData)) .Replace("${memberAssignment}", getMemberAssignment(memberData)), GetType().FullName )); }
CodeGenFile generateEntityInterfaceExtension(string contextName, ComponentData data) { var componentName = data.GetFullTypeName().ToComponentName(_ignoreNamespacesConfig.ignoreNamespaces); var interfaceName = "I" + componentName.RemoveComponentSuffix(); var fileContent = ENTITY_INTERFACE_EXTENSION .Replace("${InterfaceName}", "I" + componentName.RemoveComponentSuffix()) .Replace("${ContextName}", contextName); return(new CodeGenFile( contextName + Path.DirectorySeparatorChar + "Components" + Path.DirectorySeparatorChar + contextName + componentName.AddComponentSuffix() + ".cs", fileContent, GetType().FullName )); }
CodeGenFile generateMatcher(string contextName, ComponentData data) { var componentName = data.GetFullTypeName().ToComponentName(_ignoreNamespacesConfig.ignoreNamespaces); var index = contextName + ComponentsLookupGenerator.COMPONENTS_LOOKUP + "." + componentName; var componentNames = contextName + ComponentsLookupGenerator.COMPONENTS_LOOKUP + ".componentNames"; var fileContent = STANDARD_COMPONENT_TEMPLATE .Replace("${ContextName}", contextName) .Replace("${ComponentName}", componentName) .Replace("${Index}", index) .Replace("${ComponentNames}", componentNames); return(new CodeGenFile( contextName + Path.DirectorySeparatorChar + "Components" + Path.DirectorySeparatorChar + contextName + componentName.AddComponentSuffix() + ".cs", fileContent, GetType().FullName )); }
CodeGenFile generateComponentClass(ComponentData data) { var fullComponentName = data.GetFullTypeName().RemoveDots(); var contexts = string.Join(", ", data.GetContextNames()); var unique = data.IsUnique() ? "[Entitas.CodeGeneration.Attributes.UniqueAttribute]" : string.Empty; if (!string.IsNullOrEmpty(contexts)) { contexts = "[" + contexts + "]"; } return(new CodeGenFile( "Components" + Path.DirectorySeparatorChar + fullComponentName + ".cs", COMPONENT_TEMPLATE .Replace("${FullComponentName}", fullComponentName) .Replace("${Type}", data.GetObjectType()) .Replace("${Contexts}", contexts) .Replace("${Unique}", unique), GetType().FullName )); }