@@ -406,15 +406,17 @@ private void InitFlightControlWindow(bool startSolid = true)
406406 foreach ( var pair in _servoGroupUIControls )
407407 {
408408 pair . Key . Stop ( ) ;
409- pair . Key . MovingNegative = false ;
410- pair . Key . MovingPositive = false ;
411409 }
412410 guiRebuildPending = true ;
413411 //TODO: we need to reset oll Movement Toggles
414412 } ) ;
415413
416414 var stopAllTooltip = stopAllButton . gameObject . AddComponent < BasicTooltip > ( ) ;
417415 stopAllTooltip . tooltipText = "Panic! Stop all servos!" ;
416+
417+ //toggle preset mode if needed
418+ ToggleFlightPresetMode ( guiFlightPresetModeOn ) ;
419+
418420 }
419421
420422 private void InitFlightGroupControls ( GameObject newServoGroupLine , ServoController . ControlGroup g )
@@ -452,19 +454,10 @@ private void InitFlightGroupControls(GameObject newServoGroupLine, ServoControll
452454 groupMoveLeftToggle . isOn = g . MovingNegative ;
453455 groupMoveLeftToggle . onValueChanged . AddListener ( v =>
454456 {
455- if ( g . MovingNegative )
456- {
457- g . Stop ( ) ;
458- g . MovingNegative = false ;
459- g . MovingPositive = false ;
460- }
461- else
462- {
463- if ( g . MovingPositive )
464- {
465- hlg . GetChild ( "ServoGroupMoveRightToggleButton" ) . GetComponent < Toggle > ( ) . isOn = false ;
466- }
467- g . MoveLeft ( ) ;
457+ g . Stop ( ) ;
458+ if ( v ) {
459+ hlg . GetChild ( "ServoGroupMoveRightToggleButton" ) . GetComponent < Toggle > ( ) . isOn = false ;
460+ g . MoveLeft ( ) ;
468461 g . MovingNegative = true ;
469462 g . MovingPositive = false ;
470463 }
@@ -500,18 +493,10 @@ private void InitFlightGroupControls(GameObject newServoGroupLine, ServoControll
500493 groupMoveRightToggle . isOn = g . MovingPositive ;
501494 groupMoveRightToggle . onValueChanged . AddListener ( v =>
502495 {
503- if ( g . MovingPositive )
504- {
505- g . Stop ( ) ;
506- g . MovingNegative = false ;
507- g . MovingPositive = false ;
508- }
509- else
496+ g . Stop ( ) ;
497+ if ( v )
510498 {
511- if ( g . MovingNegative )
512- {
513- hlg . GetChild ( "ServoGroupMoveLeftToggleButton" ) . GetComponent < Toggle > ( ) . isOn = false ;
514- }
499+ hlg . GetChild ( "ServoGroupMoveLeftToggleButton" ) . GetComponent < Toggle > ( ) . isOn = false ;
515500 g . MoveRight ( ) ;
516501 g . MovingNegative = false ;
517502 g . MovingPositive = true ;
@@ -679,7 +664,7 @@ private void ToggleFlightPresetMode(bool value)
679664 }
680665 }
681666
682- public void PresetInputOnEndEdit ( string tmp , int i )
667+ public void PresetInputOnEndEdit ( string tmp , int i , GameObject buttonRef = null )
683668 {
684669 if ( presetWindowServo == null )
685670 return ;
@@ -694,6 +679,7 @@ public void PresetInputOnEndEdit(string tmp, int i)
694679 }
695680 presetWindowServo . Preset [ i ] = tmpValue ;
696681 presetWindowServo . Preset . Sort ( ) ;
682+ TogglePresetEditWindow ( presetWindowServo , true , buttonRef ) ;
697683 }
698684 }
699685
@@ -731,7 +717,7 @@ public void TogglePresetEditWindow (IServo servo, bool value, GameObject buttonR
731717 //need a better way to tie them to each other
732718 _presetsWindow . transform . SetParent ( UIMasterController . Instance . appCanvas . transform , false ) ;
733719
734- if ( _presetsWindowPosition == Vector3 . zero )
720+ if ( _presetsWindowPosition == Vector3 . zero && buttonRef != null )
735721 _presetsWindow . transform . position = buttonRef . transform . position + new Vector3 ( 30 , 0 , 0 ) ;
736722 else
737723 _presetsWindow . transform . position = ClampWindowPosition ( _presetsWindowPosition ) ;
@@ -743,19 +729,33 @@ public void TogglePresetEditWindow (IServo servo, bool value, GameObject buttonR
743729 {
744730 closeButton . GetComponent < Button > ( ) . onClick . AddListener ( ( ) => {
745731 TogglePresetEditWindow ( servo , false , buttonRef ) ;
746- buttonRef . GetComponent < Toggle > ( ) . isOn = false ;
732+ if ( buttonRef != null )
733+ buttonRef . GetComponent < Toggle > ( ) . isOn = false ;
734+ else
735+ {
736+ foreach ( var pair in _servoUIControls ) {
737+ var toggle = pair . Value . GetChild ( "ServoOpenPresetsToggle" ) ;
738+ if ( toggle == null )
739+ continue ;
740+ toggle . GetComponent < Toggle > ( ) . isOn = false ;
741+ }
742+ }
747743 } ) ;
748744 var t = closeButton . AddComponent < BasicTooltip > ( ) ;
749745 t . tooltipText = "Close preset window" ;
750746 }
751747
752748 var footerControls = _presetsWindow . GetChild ( "WindowFooter" ) . GetChild ( "WindowFooterButtonsHLG" ) ;
749+
753750 var newPresetPositionInputField = footerControls . GetChild ( "NewPresetPositionInputField" ) . GetComponent < InputField > ( ) ;
754751 newPresetPositionInputField . text = string . Format ( "{0:#0.##}" , servo . Mechanism . Position ) ;
755752
756753 var addPresetButton = footerControls . GetChild ( "AddPresetButton" ) . GetComponent < Button > ( ) ;
757754 addPresetButton . onClick . AddListener ( ( ) =>
758755 {
756+ footerControls = _presetsWindow . GetChild ( "WindowFooter" ) . GetChild ( "WindowFooterButtonsHLG" ) ;
757+ newPresetPositionInputField = footerControls . GetChild ( "NewPresetPositionInputField" ) . GetComponent < InputField > ( ) ;
758+
759759 string tmp = newPresetPositionInputField . text ;
760760 float tmpValue = 0f ;
761761 if ( float . TryParse ( tmp , out tmpValue ) )
@@ -787,7 +787,7 @@ public void TogglePresetEditWindow (IServo servo, bool value, GameObject buttonR
787787 var presetPositionInputField = newPresetLine . GetChild ( "PresetPositionInputField" ) . GetComponent < InputField > ( ) ;
788788 presetPositionInputField . text = string . Format ( "{0:#0.##}" , servo . Preset [ i ] ) ;
789789 var presetIndex = i ;
790- presetPositionInputField . onEndEdit . AddListener ( tmp => PresetInputOnEndEdit ( tmp , presetIndex ) ) ;
790+ presetPositionInputField . onEndEdit . AddListener ( tmp => PresetInputOnEndEdit ( tmp , presetIndex , buttonRef ) ) ;
791791
792792 var servoDefaultPositionToggle = newPresetLine . GetChild ( "PresetDefaultPositionToggle" ) . GetComponent < Toggle > ( ) ;
793793 servoDefaultPositionToggle . group = presetsArea . GetComponent < ToggleGroup > ( ) ;
@@ -937,6 +937,8 @@ private void InitEditorWindow(bool startSolid = true)
937937 InitEditorGroupControls ( newServoGroupLine , g ) ;
938938
939939 _servoGroupUIControls . Add ( g , newServoGroupLine ) ;
940+
941+ guiRebuildPending = true ;
940942 } ) ;
941943
942944 var addGroupTooltip = addGroupButton . gameObject . AddComponent < BasicTooltip > ( ) ;
@@ -1075,16 +1077,23 @@ private void InitEditorGroupControls(GameObject newServoGroupLine, ServoControll
10751077 while ( g . Servos . Any ( ) )
10761078 {
10771079 var s = g . Servos . First ( ) ;
1078- ServoController . MoveServo ( g , ServoController . Instance . ServoGroups [ 0 ] , s ) ;
1080+ if ( g != ServoController . Instance . ServoGroups [ 0 ] )
1081+ ServoController . MoveServo ( g , ServoController . Instance . ServoGroups [ 0 ] , s ) ;
1082+ else
1083+ ServoController . MoveServo ( g , ServoController . Instance . ServoGroups [ 1 ] , s ) ;
10791084 }
1080-
10811085 ServoController . Instance . ServoGroups . Remove ( g ) ;
1082-
1086+ g = null ;
10831087 RebuildUI ( ) ;
1088+ return ;
10841089 }
10851090 } ) ;
10861091 if ( ServoController . Instance . ServoGroups . Count < 2 )
1092+ {
10871093 groupDeleteButton . interactable = false ;
1094+ groupDeleteButton . gameObject . SetActive ( false ) ;
1095+ }
1096+
10881097
10891098 var groupDeleteButtonTooltip = groupDeleteButton . gameObject . AddComponent < BasicTooltip > ( ) ;
10901099 groupDeleteButtonTooltip . tooltipText = "Delete Group" ;
@@ -1379,6 +1388,8 @@ public void MoveServoToPrevGroup(GameObject servoLine, IServo s)
13791388 //later consider puting animation here, for now just change parents
13801389 ServoController . MoveServo ( ServoController . Instance . ServoGroups [ currentGroupIndex ] , ServoController . Instance . ServoGroups [ currentGroupIndex - 1 ] , s ) ;
13811390 servoUIControls . transform . SetParent ( prevGroupUIControls . GetChild ( "ServoGroupServosVLG" ) . transform , false ) ;
1391+
1392+ guiRebuildPending = true ;
13821393 }
13831394
13841395 public void MoveServoToNextGroup ( GameObject servoLine , IServo s )
@@ -1403,6 +1414,8 @@ public void MoveServoToNextGroup(GameObject servoLine, IServo s)
14031414 //later consider puting animation here, for now just change parents
14041415 ServoController . MoveServo ( ServoController . Instance . ServoGroups [ currentGroupIndex ] , ServoController . Instance . ServoGroups [ currentGroupIndex + 1 ] , s ) ;
14051416 servoUIControls . transform . SetParent ( nextGroupUIControls . GetChild ( "ServoGroupServosVLG" ) . transform , false ) ;
1417+
1418+ guiRebuildPending = true ;
14061419 }
14071420 public void ShowServoAdvancedMode ( IServo servo , bool value )
14081421 {
@@ -1534,6 +1547,19 @@ public void UpdateServoReadoutsFlight(IServo s, GameObject servoUIControls)
15341547
15351548 }
15361549
1550+ public void UpdateGroupReadoutsFlight ( ServoController . ControlGroup g , GameObject groupUIControls )
1551+ {
1552+
1553+ foreach ( var t in groupUIControls . GetComponentsInChildren < Toggle > ( ) )
1554+ {
1555+ if ( t . gameObject . name == "ServoGroupMoveLeftToggleButton" )
1556+ t . isOn = g . MovingNegative ;
1557+ else if ( t . gameObject . name == "ServoGroupMoveRightToggleButton" )
1558+ t . isOn = g . MovingPositive ;
1559+ }
1560+
1561+ }
1562+
15371563 public void UpdateServoReadoutsEditor ( IServo s , GameObject servoUIControls )
15381564 {
15391565 var servoPosition = servoUIControls . GetChild ( "ServoPositionInputField" ) . GetComponent < InputField > ( ) ;
@@ -1687,13 +1713,15 @@ public void Update()
16871713 return ;
16881714
16891715 if ( EventSystem . current . currentSelectedGameObject != null &&
1690- ( EventSystem . current . currentSelectedGameObject . name == "GroupNameInputField"
1691- || EventSystem . current . currentSelectedGameObject . name == "GroupMoveLeftKey"
1692- || EventSystem . current . currentSelectedGameObject . name == "GroupMoveRightKey"
1693- || EventSystem . current . currentSelectedGameObject . name == "ServoNameInputField"
1694- || EventSystem . current . currentSelectedGameObject . name == "ServoPositionInputField"
1695- || EventSystem . current . currentSelectedGameObject . name == "NewGroupNameInputField"
1696- || EventSystem . current . currentSelectedGameObject . name == "ServoGroupSpeedMultiplier" ) )
1716+ ( EventSystem . current . currentSelectedGameObject . GetComponent < InputField > ( ) != null
1717+ || EventSystem . current . currentSelectedGameObject . GetType ( ) == typeof ( InputField ) ) /*
1718+ (EventSystem.current.currentSelectedGameObject.name == "GroupNameInputField"
1719+ || EventSystem.current.currentSelectedGameObject.name == "GroupMoveLeftKey"
1720+ || EventSystem.current.currentSelectedGameObject.name == "GroupMoveRightKey"
1721+ || EventSystem.current.currentSelectedGameObject.name == "ServoNameInputField"
1722+ || EventSystem.current.currentSelectedGameObject.name == "ServoPositionInputField"
1723+ || EventSystem.current.currentSelectedGameObject.name == "NewGroupNameInputField"
1724+ || EventSystem.current.currentSelectedGameObject.name == "ServoGroupSpeedMultiplier")*/ )
16971725 {
16981726 if ( ! isKeyboardLocked )
16991727 KeyboardLock ( true ) ;
@@ -1720,6 +1748,13 @@ public void Update()
17201748 continue ;
17211749 UpdateServoReadoutsFlight ( pair . Key , pair . Value ) ;
17221750 }
1751+
1752+ foreach ( var pair in _servoGroupUIControls )
1753+ {
1754+ if ( ! pair . Value . activeInHierarchy )
1755+ continue ;
1756+ UpdateGroupReadoutsFlight ( pair . Key , pair . Value ) ;
1757+ }
17231758 }
17241759 else
17251760 {
0 commit comments