private void DrawValueFieldInPropertyMode(Rect position, SerializedProperty property, VariantReference.EditorHelper helper)
        {
            _selectComponentDrawer.AllowNonComponents = true;
            _selectComponentDrawer.RestrictionType    = null;
            _selectComponentDrawer.ShowXButton        = false;
            var targProp   = property.FindPropertyRelative(PROP_OBJREF);
            var memberProp = property.FindPropertyRelative(PROP_STRING);
            var vtypeProp  = property.FindPropertyRelative(PROP_TYPE);

            if (targProp.objectReferenceValue == null)
            {
                _selectComponentDrawer.OnGUI(position, targProp);
            }
            else
            {
                var r1 = new Rect(position.xMin, position.yMin, position.width * 0.4f, position.height);
                var r2 = new Rect(r1.xMax, position.yMin, position.width - r1.width, position.height);
                _selectComponentDrawer.OnGUI(r1, targProp);

                System.Reflection.MemberInfo selectedMember;
                EditorGUI.BeginChangeCheck();
                memberProp.stringValue = SPEditorGUI.ReflectedPropertyField(r2, targProp.objectReferenceValue, memberProp.stringValue, com.spacepuppy.Dynamic.DynamicMemberAccess.Read, out selectedMember);
                if (EditorGUI.EndChangeCheck())
                {
                    vtypeProp.SetEnumValue <VariantType>(selectedMember != null ? VariantReference.GetVariantType(DynamicUtil.GetReturnType(selectedMember)) : VariantType.Null);
                }
            }
        }
コード例 #2
0
        public static System.Reflection.MemberInfo DrawMemberProxy(Rect position, SerializedProperty property, GUIContent label, DynamicMemberAccess memberAccessLevel = DynamicMemberAccess.Read)
        {
            var r0 = new Rect(position.xMin, position.yMin, position.width, EditorGUIUtility.singleLineHeight);
            var r1 = new Rect(position.xMin, r0.yMax, position.width, EditorGUIUtility.singleLineHeight);

            var targProp   = property.FindPropertyRelative("_target");
            var memberProp = property.FindPropertyRelative("_memberName");

            SPEditorGUI.PropertyField(r0, targProp, label);
            System.Reflection.MemberInfo selectedMember;
            memberProp.stringValue = SPEditorGUI.ReflectedPropertyField(r1,
                                                                        EditorHelper.TempContent(" - Property", "The property on the target to set."),
                                                                        targProp.objectReferenceValue,
                                                                        memberProp.stringValue,
                                                                        memberAccessLevel,
                                                                        out selectedMember);
            return(selectedMember);
        }
        private void DrawValueFieldInPropertyMode(Rect position, SerializedProperty property, VariantReference.EditorHelper helper)
        {
            _selectComponentDrawer.AllowNonComponents = true;
            _selectComponentDrawer.RestrictionType    = null;
            _selectComponentDrawer.ShowXButton        = false;
            var targProp   = property.FindPropertyRelative("_unityObjectReference");
            var memberProp = property.FindPropertyRelative("_string");

            if (targProp.objectReferenceValue == null)
            {
                _selectComponentDrawer.OnGUI(position, targProp);
            }
            else
            {
                var r1 = new Rect(position.xMin, position.yMin, position.width * 0.4f, position.height);
                var r2 = new Rect(r1.xMax, position.yMin, position.width - r1.width, position.height);
                _selectComponentDrawer.OnGUI(r1, targProp);
                memberProp.stringValue = SPEditorGUI.ReflectedPropertyField(r2, targProp.objectReferenceValue, memberProp.stringValue, com.spacepuppy.Dynamic.DynamicMemberAccess.Read);
            }
        }
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            var propTarget = property.FindPropertyRelative(PROP_TARGET);
            var propMember = property.FindPropertyRelative(PROP_MEMBER);

            position = EditorGUI.PrefixLabel(position, label);

            if (propTarget.objectReferenceValue == null)
            {
                _objectDrawer.OnGUI(position, propTarget, GUIContent.none);
            }
            else
            {
                var r0 = new Rect(position.xMin, position.yMin, position.width * 0.5f, position.height);
                var r1 = new Rect(r0.xMax, position.yMin, position.width - r0.width, position.height);

                EditorGUI.BeginChangeCheck();
                _objectDrawer.OnGUI(r0, propTarget, GUIContent.none);
                if (EditorGUI.EndChangeCheck())
                {
                    this.PurgeIfPlaying(property);
                    if (propTarget.objectReferenceValue == null)
                    {
                        return;
                    }
                }

                EditorGUI.BeginChangeCheck();
                System.Reflection.MemberInfo info;
                propMember.stringValue = SPEditorGUI.ReflectedPropertyField(r1, GUIContent.none,
                                                                            propTarget.objectReferenceValue,
                                                                            propMember.stringValue,
                                                                            com.spacepuppy.Dynamic.DynamicMemberAccess.ReadWrite,
                                                                            out info);
                if (EditorGUI.EndChangeCheck())
                {
                    this.PurgeIfPlaying(property);
                }
            }
        }
コード例 #5
0
        private void _dataList_DrawElement(Rect area, int index, bool isActive, bool isFocused)
        {
            Rect position;
            var  el = _dataList.serializedProperty.GetArrayElementAtIndex(index);

            position = CalcNextRect(ref area);
            SPEditorGUI.PropertyField(position, el.FindPropertyRelative(PROP_DATA_MODE));

            //TODO - member
            position = CalcNextRect(ref area);
            var memberProp = el.FindPropertyRelative(PROP_DATA_MEMBER);

            System.Reflection.MemberInfo selectedMember;
            memberProp.stringValue = SPEditorGUI.ReflectedPropertyField(position,
                                                                        EditorHelper.TempContent("Property", "The property on the target to set."),
                                                                        _targetProp.objectReferenceValue,
                                                                        memberProp.stringValue,
                                                                        com.spacepuppy.Dynamic.DynamicMemberAccess.ReadWrite,
                                                                        out selectedMember);

            position = CalcNextRect(ref area);
            SPEditorGUI.PropertyField(position, el.FindPropertyRelative(PROP_DATA_EASE));

            position = CalcNextRect(ref area);
            SPEditorGUI.PropertyField(position, el.FindPropertyRelative(PROP_DATA_DUR));

            if (selectedMember != null)
            {
                var propType = com.spacepuppy.Dynamic.DynamicUtil.GetReturnType(selectedMember);

                switch (el.FindPropertyRelative(PROP_DATA_MODE).GetEnumValue <TweenHash.AnimMode>())
                {
                case TweenHash.AnimMode.To:
                {
                    position = CalcNextRect(ref area);
                    this.DrawVariant(position, EditorHelper.TempContent("To Value"), propType, el.FindPropertyRelative(PROP_DATA_VALUES));

                    position = CalcNextRect(ref area);
                }
                break;

                case TweenHash.AnimMode.From:
                {
                    position = CalcNextRect(ref area);
                    this.DrawVariant(position, EditorHelper.TempContent("From Value"), propType, el.FindPropertyRelative(PROP_DATA_VALUES));
                }
                break;

                case TweenHash.AnimMode.By:
                {
                    position = CalcNextRect(ref area);
                    this.DrawVariant(position, EditorHelper.TempContent("By Value"), propType, el.FindPropertyRelative(PROP_DATA_VALUES));
                }
                break;

                case TweenHash.AnimMode.FromTo:
                {
                    position = CalcNextRect(ref area);
                    this.DrawVariant(position, EditorHelper.TempContent("Start Value"), propType, el.FindPropertyRelative(PROP_DATA_VALUES));

                    position = CalcNextRect(ref area);
                    this.DrawVariant(position, EditorHelper.TempContent("End Value"), propType, el.FindPropertyRelative(PROP_DATA_VALUEE));
                }
                break;

                case TweenHash.AnimMode.RedirectTo:
                {
                    position = CalcNextRect(ref area);
                    this.DrawVariant(position, EditorHelper.TempContent("Start Value"), propType, el.FindPropertyRelative(PROP_DATA_VALUES));

                    position = CalcNextRect(ref area);
                    this.DrawVariant(position, EditorHelper.TempContent("End Value"), propType, el.FindPropertyRelative(PROP_DATA_VALUEE));
                }
                break;
                }
            }
        }