コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
                }
            }
        }
コード例 #4
0
        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();
        }