private static void DrawPropertyUserInput(DataPrototype.Property property, DataPrototype data) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(property.Name); if (DoesInputFieldExistForProperty(property)) { QueryPropertyUserInput(property, data); } EditorGUILayout.EndHorizontal(); }
private static DataPrototype.Property GetProtoPropertyUserInput(DataPrototype.Property property, DataPrototype data) { GUI.enabled = property.DelegatesToPrototype; var currentProtoPropertyOwner = property.ProtoProperty == null ? null : property.ProtoProperty.Owner; var protoPropertyOwner = (DataPrototype)EditorGUILayout.ObjectField(currentProtoPropertyOwner, data.GetType(), true); if (protoPropertyOwner != null) { return(protoPropertyOwner.GetProperty(property.Name)); } return(null); }
private static void QueryPropertyUserInput(DataPrototype.Property property, DataPrototype data) { var input = GetUnityEditorPropertyInputFieldValue(property); if (property.DelegatesToPrototype) { property.ProtoProperty = GetProtoPropertyUserInput(property, data); } else { property.Value = input; } property.DelegatesToPrototype = GetPrototypeDelegationUserInput(property); }
private static bool GetPrototypeDelegationUserInput(DataPrototype.Property property) { GUI.enabled = true; return(EditorGUILayout.Toggle(property.DelegatesToPrototype, GUILayout.Width(PROTOTYPE_DELEGATION_TOGGLE_WIDTH))); }
private static object GetUnityEditorPropertyInputFieldValue(DataPrototype.Property property) { GUI.enabled = !property.DelegatesToPrototype; return(property.Type.GetUnityEditorInputFieldValue(property.Value)); }
private static bool DoesInputFieldExistForProperty(DataPrototype.Property property) { return(property.Type.IsSubtypeOrEqualToOneOf(VALID_PROPERTY_TYPES)); }