public override object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var components = (IEnumerable <EntityComponent>)value; var componentTypes = components.Select(x => x.GetType()); var compToUse = StrideDefaultAssetsPlugin.GetHighestOrderComponent(componentTypes); return(TypeToResource.FetchResourceFromType(compToUse, true)); }
private static PackageSession GenerateSample(UDirectory outputPath, Guid templateGuid, string sampleName, LoggerResult logger) { // Make output path absolute if (!outputPath.IsAbsolute) { outputPath = UPath.Combine(Environment.CurrentDirectory, outputPath); } Console.WriteLine(@"Bootstrapping: " + sampleName); var session = new PackageSession(); var generator = TemplateSampleGenerator.Default; // Ensure progress is shown while it is happening. logger.MessageLogged += (sender, eventArgs) => Console.WriteLine(eventArgs.Message.Text); var parameters = new SessionTemplateGeneratorParameters { Session = session }; parameters.Unattended = true; TemplateSampleGenerator.SetParameters( parameters, AssetRegistry.SupportedPlatforms.Where(x => x.Type == Core.PlatformType.Windows).Select(x => new SelectedSolutionPlatform(x, x.Templates.FirstOrDefault())).ToList(), addGamesTesting: true); session.SolutionPath = UPath.Combine <UFile>(outputPath, sampleName + ".sln"); // Properly delete previous version if (Directory.Exists(outputPath)) { try { Directory.Delete(outputPath, true); } catch (Exception) { logger.Warning($"Unable to delete directory [{outputPath}]"); } } // Load templates StrideDefaultAssetsPlugin.LoadDefaultTemplates(); var strideTemplates = TemplateManager.FindTemplates(session); parameters.Description = strideTemplates.First(x => x.Id == templateGuid); parameters.Name = sampleName; parameters.Namespace = sampleName; parameters.OutputDirectory = outputPath; parameters.Logger = logger; if (!generator.PrepareForRun(parameters).Result) { logger.Error("PrepareForRun returned false for the TemplateSampleGenerator"); } if (!generator.Run(parameters)) { logger.Error("Run returned false for the TemplateSampleGenerator"); } var updaterTemplate = strideTemplates.First(x => x.FullPath.ToString().EndsWith("UpdatePlatforms.sdtpl")); parameters.Description = updaterTemplate; if (logger.HasErrors) { throw new InvalidOperationException($"Error generating sample {sampleName} from template:\r\n{logger.ToText()}"); } return(session); }