//////////////////////////////////////////////////////////////// TEditorClient ------------- According to edit mode : Setup menu, info windows
| 870 | // According to edit mode : Setup menu, info windows |
| 871 | // |
| 872 | void TEditorClient::ChangeMode (int NewMode) |
| 873 | { |
| 874 | SelPtr NewSel; |
| 875 | int PrevMode = EditMode; |
| 876 | EditMode = NewMode; |
| 877 | |
| 878 | // If same mode, return directly |
| 879 | if ( PrevMode == EditMode ) |
| 880 | return ; |
| 881 | |
| 882 | // special cases for the selection list... |
| 883 | if (Selected) |
| 884 | { |
| 885 | // select all LineDefs bound to the selected Sectors |
| 886 | if (PrevMode == OBJ_SECTORS && EditMode == OBJ_LINEDEFS) |
| 887 | { |
| 888 | SHORT l, sd; |
| 889 | |
| 890 | NewSel = NULL; |
| 891 | for (l = 0; l < NumLineDefs; l++) |
| 892 | { |
| 893 | sd = LineDefs [l].sidedef1; |
| 894 | assert (sd == -1 || (sd >= 0 && sd < NumSideDefs)); |
| 895 | if (sd >= 0 && IsSelected (Selected, SideDefs[sd].sector)) |
| 896 | SelectObject (&NewSel, l); |
| 897 | else |
| 898 | { |
| 899 | sd = LineDefs [l].sidedef2; |
| 900 | assert (sd == -1 || (sd >= 0 && sd < NumSideDefs)); |
| 901 | if (sd >= 0 && IsSelected (Selected, SideDefs[sd].sector)) |
| 902 | SelectObject (&NewSel, l); |
| 903 | } |
| 904 | } |
| 905 | ForgetSelection (&Selected); |
| 906 | Selected = NewSel; |
| 907 | } |
| 908 | |
| 909 | // select all Vertices bound to the selected LineDefs |
| 910 | else if (PrevMode == OBJ_LINEDEFS && EditMode == OBJ_VERTEXES) |
| 911 | { |
| 912 | NewSel = NULL; |
| 913 | while (Selected) |
| 914 | { |
| 915 | SHORT n = Selected->objnum; |
| 916 | assert (n >= 0 && n < NumLineDefs); |
| 917 | SHORT start = LineDefs[n].start; |
| 918 | SHORT end = LineDefs[n].end; |
| 919 | if ( ! IsSelected (NewSel, start) ) |
| 920 | SelectObject (&NewSel, start); |
| 921 | |
| 922 | if ( ! IsSelected (NewSel, end)) |
| 923 | SelectObject (&NewSel, end); |
| 924 | |
| 925 | UnSelectObject (&Selected, n); |
| 926 | } |
| 927 | Selected = NewSel; |
| 928 | } |
| 929 |
nothing calls this directly
no test coverage detected