private void ShowGetSetButtons(int index, SerializedProperty reflectedMemberSingleValue) { EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); try { Transitioner targetObject = (Transitioner)target; if (GUILayout.Button(Helper.content_getValueButton)) { object value = targetObject.phases[_currentlySelectedPhaseIndex].reflectedMembers[index].GetValue(); if (value != null) { reflectedMemberSingleValue.stringValue = value.ToString(); } serializedObject.ApplyModifiedProperties(); } if (GUILayout.Button(Helper.content_setValueButton)) { PhaseMember member = targetObject.phases[_currentlySelectedPhaseIndex].reflectedMembers[index]; Type type = Utility.GetInstance().reverseTypeDictionary[member.serializedMemberType]; object value = Utility.GetObject(type, reflectedMemberSingleValue.stringValue); targetObject.phases[_currentlySelectedPhaseIndex].reflectedMembers[index].SetValue(value); serializedObject.ApplyModifiedProperties(); } } catch { } EditorGUILayout.EndHorizontal(); }
private void HandleOnClick_WriteSelectedPropertyToPhase(PhaseMember reflectedPhaseMember) { if (_currentSelectedPhaseProperty == null) { return; } // Set members SerializedProperty reflectedPropertiesList = _currentSelectedPhaseProperty.FindPropertyRelative(Helper.phaseProp_reflectedMembers); reflectedPropertiesList.arraySize++; SerializedProperty reflectedMemberSingle = reflectedPropertiesList.GetArrayElementAtIndex(reflectedPropertiesList.arraySize - 1); SerializedProperty rmMemberType = reflectedMemberSingle.FindPropertyRelative(Helper.phaseMmemberProp_memberType); SerializedProperty rmMemberSerializedType = reflectedMemberSingle.FindPropertyRelative(Helper.phaseMemberProp_availableMemberType); SerializedProperty rmMemberName = reflectedMemberSingle.FindPropertyRelative(Helper.phaseMemberProp_memberName); SerializedProperty rmParentComponent = reflectedMemberSingle.FindPropertyRelative(Helper.phaseMemberProp_parentComponent); SerializedProperty rmCanBeLerped = reflectedMemberSingle.FindPropertyRelative(Helper.phaseMemberProp_canBeLerped); rmMemberType.enumValueIndex = (int)reflectedPhaseMember.memberType; rmMemberSerializedType.enumValueIndex = (int)reflectedPhaseMember.serializedMemberType; rmMemberName.stringValue = reflectedPhaseMember.memberName; rmParentComponent.objectReferenceValue = reflectedPhaseMember.parentComponent; rmCanBeLerped.boolValue = Utility.CanBeLerped(reflectedPhaseMember.serializedMemberType); serializedObject.ApplyModifiedProperties(); OpenPage(Pages.PropertyManager); }
private void HandleOnClick_SelectComponent(Component reflectedComponent) { if (reflectedComponent == null) { return; } _selectedComponent = reflectedComponent; _allReflectedPhaseMembers.Clear(); foreach (FieldInfo componentFieldInfo in reflectedComponent.GetType().GetFields()) { if (Utility.GetInstance().typesDictionary.ContainsKey(componentFieldInfo.FieldType)) { PhaseMember reflectedPhaseMember = new PhaseMember(MemberType.Field, reflectedComponent, componentFieldInfo.Name, componentFieldInfo.FieldType); _allReflectedPhaseMembers.Add(reflectedPhaseMember); } } foreach (PropertyInfo componentPropertyInfo in reflectedComponent.GetType().GetProperties()) { if (componentPropertyInfo.CanRead && componentPropertyInfo.CanWrite && Utility.GetInstance().typesDictionary.ContainsKey(componentPropertyInfo.PropertyType)) { PhaseMember reflectedPhaseMember = new PhaseMember(MemberType.Property, reflectedComponent, componentPropertyInfo.Name, componentPropertyInfo.PropertyType); _allReflectedPhaseMembers.Add(reflectedPhaseMember); } } }
private void DisplayReflectedPhaseMember(PhaseMember reflectedPhaseMember, float horizontalSpace = 20, float verticalSpace = 5) { GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); GUILayout.Space(horizontalSpace); GUIContent buttonContent = new GUIContent(reflectedPhaseMember.memberName + "\n\n(" + reflectedPhaseMember.serializedMemberType.ToString() + ")", "Add this " + reflectedPhaseMember.serializedMemberType.ToString() + " to your current Phase!"); if (GUILayout.Button(buttonContent)) { HandleOnClick_WriteSelectedPropertyToPhase(reflectedPhaseMember); } GUILayout.Space(horizontalSpace); GUILayout.EndHorizontal(); GUILayout.EndVertical(); }