private void editDataSource(dfEventDrivenPropertyBinding binder) { using (dfEditorUtil.BeginGroup("Data Source")) { if (binder.DataSource == null) { binder.DataSource = new dfComponentMemberInfo(); } var dataSource = binder.DataSource; var sourceComponent = dfEditorUtil.ComponentField("Component", dataSource.Component); if (sourceComponent != dataSource.Component) { dfEditorUtil.MarkUndo(binder, "Assign DataSource Component"); dataSource.Component = sourceComponent; } if (sourceComponent == null) { EditorGUILayout.HelpBox("Missing component", MessageType.Error); return; } #region Edit property var sourceComponentMembers = getMemberList(sourceComponent) .Select(m => m.Name) .ToArray(); var memberIndex = findIndex(sourceComponentMembers, dataSource.MemberName); var selectedIndex = EditorGUILayout.Popup("Property", memberIndex, sourceComponentMembers); if (selectedIndex >= 0 && selectedIndex < sourceComponentMembers.Length) { var memberName = sourceComponentMembers[selectedIndex]; if (memberName != dataSource.MemberName) { dfEditorUtil.MarkUndo(binder, "Assign DataSource Member"); dataSource.MemberName = memberName; } } #endregion editSourceEvent(binder); EditorGUILayout.Separator(); } }
private void editSourceEvent(dfEventDrivenPropertyBinding binder) { var eventList = getEventList(binder.DataSource.Component).Select(x => x.Name).ToList(); eventList.Insert(0, " "); var eventNameArray = eventList.ToArray(); var sourceEventName = binder.SourceEventName ?? ""; var selectedIndex = findIndex(eventNameArray, sourceEventName); var index = EditorGUILayout.Popup("Change Event", selectedIndex, eventNameArray); if (index != selectedIndex) { dfEditorUtil.MarkUndo(binder, "Assign Source Event"); binder.SourceEventName = index > 0 ? eventNameArray[index] : string.Empty; } }
private void editTargetEvent( dfEventDrivenPropertyBinding binder ) { var eventList = getEventList( binder.DataSource.Component ).Select( x => x.Name ).ToList(); eventList.Insert( 0, " " ); var eventNameArray = eventList.ToArray(); var targetEventName = binder.TargetEventName ?? ""; var selectedIndex = findIndex( eventNameArray, targetEventName ); var index = EditorGUILayout.Popup( "Change Event", selectedIndex, eventNameArray ); if( index != selectedIndex ) { dfEditorUtil.MarkUndo( binder, "Assign Source Event" ); binder.TargetEventName = index > 0 ? eventNameArray[ index ] : string.Empty; } }
private void editDataSource( dfEventDrivenPropertyBinding binder ) { using( dfEditorUtil.BeginGroup( "Data Source" ) ) { if( binder.DataSource == null ) binder.DataSource = new dfComponentMemberInfo(); var dataSource = binder.DataSource; var sourceComponent = dfEditorUtil.ComponentField( "Component", dataSource.Component ); if( sourceComponent != dataSource.Component ) { dfEditorUtil.MarkUndo( binder, "Assign DataSource Component" ); dataSource.Component = sourceComponent; } if( sourceComponent == null ) { EditorGUILayout.HelpBox( "Missing component", MessageType.Error ); return; } #region Edit property var sourceComponentMembers = getMemberList( sourceComponent ) .Select( m => m.Name ) .ToArray(); var memberIndex = findIndex( sourceComponentMembers, dataSource.MemberName ); var selectedIndex = EditorGUILayout.Popup( "Property", memberIndex, sourceComponentMembers ); if( selectedIndex >= 0 && selectedIndex < sourceComponentMembers.Length ) { var memberName = sourceComponentMembers[ selectedIndex ]; if( memberName != dataSource.MemberName ) { dfEditorUtil.MarkUndo( binder, "Assign DataSource Member" ); dataSource.MemberName = memberName; } } #endregion editSourceEvent( binder ); EditorGUILayout.Separator(); } }