private void UpdateIncludedAndExcluded(ReferencedFileSave instance) { ResetToDefault(); AssetTypeInfo ati = instance.GetAssetTypeInfo(); ExcludeMember(nameof(ReferencedFileSave.InvalidFileNameCharacters)); ExcludeMember(nameof(ReferencedFileSave.ToStringDelegate)); ExcludeMember(nameof(ReferencedFileSave.Properties)); ContainerType containerType = instance.GetContainerType(); if (containerType == ContainerType.Entity) { // We do this because this is set automatically if the Entity is unique ExcludeMember(nameof(ReferencedFileSave.IsSharedStatic)); // We do this because whether the objects from a file are manually updated or not // should be up to the entity, not the source file. ExcludeMember(nameof(ReferencedFileSave.IsManuallyUpdated)); } if (containerType == ContainerType.Entity || ati == null || ati.QualifiedRuntimeTypeName.QualifiedType != "Microsoft.Xna.Framework.Media.Song") { ExcludeMember(nameof(ReferencedFileSave.DestroyOnUnload)); } #region Extension-based additions/removals string extension = FileManager.GetExtension(instance.Name); if (extension != "csv" && !instance.TreatAsCsv) { ExcludeMember(nameof(ReferencedFileSave.CreatesDictionary)); ExcludeMember(nameof(ReferencedFileSave.IsDatabaseForLocalizing)); ExcludeMember(nameof(ReferencedFileSave.UniformRowType)); } else { IncludeMember(nameof(ReferencedFileSave.UniformRowType), typeof(ReferencedFileSave), new AvailablePrimitiveTypeArraysStringConverter()); } if ((extension != "txt" && extension != "csv") || (extension == "txt" && instance.TreatAsCsv == false) ) { ExcludeMember(nameof(ReferencedFileSave.CsvDelimiter)); } if (extension != "txt") { ExcludeMember(nameof(ReferencedFileSave.TreatAsCsv)); } if (extension == "png") { Attribute[] fileDetailsCategoryAttribute = new Attribute[] { new CategoryAttribute("File Details") }; IncludeMember("ImageWidth", typeof(int), null, GetImageWidth, null, fileDetailsCategoryAttribute); IncludeMember("ImageHeight", typeof(int), null, GetImageHeight, null, fileDetailsCategoryAttribute); } if (extension == "emix") { Attribute[] fileDetailsCategoryAttribute = new Attribute[] { new CategoryAttribute("File Details") }; IncludeMember("EquilibriumParticleCount", typeof(float), null, GetEquilibriumParticleCount, null, fileDetailsCategoryAttribute); IncludeMember("BurstParticleCount", typeof(float), null, GetBurstParticleCount, null, fileDetailsCategoryAttribute); } #endregion AddProjectSpecificFileMember(); if (!instance.LoadedAtRuntime) { ExcludeMember(nameof(ReferencedFileSave.IsSharedStatic)); ExcludeMember(nameof(ReferencedFileSave.IsManuallyUpdated)); ExcludeMember(nameof(ReferencedFileSave.LoadedOnlyWhenReferenced)); ExcludeMember(nameof(ReferencedFileSave.HasPublicProperty)); ExcludeMember("InstanceName"); ExcludeMember(nameof(ReferencedFileSave.IncludeDirectoryRelativeToContainer)); } if (ati == null || string.IsNullOrEmpty(ati.MakeManuallyUpdatedMethod)) { ExcludeMember(nameof(ReferencedFileSave.IsManuallyUpdated)); } if (!instance.GetCanUseContentPipeline()) { ExcludeMember(nameof(ReferencedFileSave.UseContentPipeline)); } if (!instance.UseContentPipeline || ati.QualifiedRuntimeTypeName.QualifiedType != "Microsoft.Xna.Framework.Graphics.Texture2D") { ExcludeMember("TextureFormat"); } IncludeMember("OpensWith", typeof(ReferencedFileSave), new AvailableApplicationsStringConverters()); bool shouldShowRuntimeType = instance.LoadedAtRuntime; if (shouldShowRuntimeType) { IncludeMember("RuntimeType", typeof(ReferencedFileSave), new AvailableRuntimeTypeConverter() { ReferencedFileSave = instance }); } else { ExcludeMember(nameof(ReferencedFileSave.RuntimeType)); } if (string.IsNullOrEmpty(instance.SourceFile)) { ExcludeMember(nameof(ReferencedFileSave.SourceFile)); ExcludeMember(nameof(ReferencedFileSave.BuildTool)); ExcludeMember(nameof(ReferencedFileSave.AdditionalArguments)); ExcludeMember(nameof(ReferencedFileSave.ConditionalCompilationSymbols)); } else { } }