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); } } }
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); } } }
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; } } }