private void ApplyDisplayPropertyToInstanceMember(InstanceMemberDisplayProperties displayProperties, InstanceMember member, MemberCategory category) { if (displayProperties.IsHiddenDelegate != null && mMembersWithOptionalVisibility.ContainsKey(member) == false) { mMembersWithOptionalVisibility.Add(member, displayProperties.IsHiddenDelegate); } //if (displayProperties.GetEffectiveIsHidden(member.Instance)) // let's instead just use the hidden property - we will apply functions after if (displayProperties.IsHidden) { category.Members.Remove(member); } else { // Put an if-statement for debugging if (member.PreferredDisplayer != displayProperties.PreferredDisplayer) { member.PreferredDisplayer = displayProperties.PreferredDisplayer; } member.DisplayName = displayProperties.DisplayName; if (!string.IsNullOrEmpty(displayProperties.Category) && category.Name != displayProperties.Category) { category.Members.Remove(member); MemberCategory newCategory = GetOrInstantiateAndAddMemberCategory(displayProperties.Category); member.Category = newCategory; newCategory.Members.Add(member); } } }
private static void CreateCategoriesAndVariables(NamedObjectSave instance, IElement container, List <MemberCategory> categories, AssetTypeInfo ati) { // May 13, 2017 // I'd like to get // completely rid of // TypedMembers and move // to using the custom variables. // We'll try this out: if (ati?.VariableDefinitions != null && ati.VariableDefinitions.Count > 0) { foreach (var variableDefinition in ati.VariableDefinitions) { bool fallBackToTypedMember = false; try { var type = FlatRedBall.Glue.Parsing.TypeManager.GetTypeFromString(variableDefinition.Type); TypedMemberBase typedMember = null; if (type == null) { fallBackToTypedMember = true; } else { typedMember = TypedMemberBase.GetTypedMember(variableDefinition.Name, type); InstanceMember instanceMember = CreateInstanceMember(instance, container, typedMember, ati, variableDefinition); if (instanceMember != null) { var categoryToAddTo = GetOrCreateCategoryToAddTo(categories, ati, typedMember); categoryToAddTo.Members.Add(instanceMember); } } } catch { fallBackToTypedMember = true; } if (fallBackToTypedMember) { // this new code isn't working with some things like generics. Until I fix that, let's fall back: var typedMember = instance.TypedMembers.FirstOrDefault(item => item.MemberName == variableDefinition.Name); if (typedMember != null) { AddForTypedMember(instance, container, categories, ati, typedMember); } } } } else // This is used when viewing a NOS that is of entity type (no ATI) { for (int i = 0; i < instance.TypedMembers.Count; i++) { TypedMemberBase typedMember = instance.TypedMembers[i]; AddForTypedMember(instance, container, categories, ati, typedMember); } } bool shouldAddSourceNameVariable = instance.SourceType == SourceType.File && !string.IsNullOrEmpty(instance.SourceFile); if (shouldAddSourceNameVariable) { AddSourceNameVariable(instance, categories); } }