/* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ /* * $Source: /cvsroot/dxx-rebirth/d1x-rebirth/editor/ksegsel.c,v $ * $Revision: 1.1.1.1 $ * $Author: zicodxx $ * $Date: 2006/03/17 19:45:54 $ * * Functions for selecting segments * * $Log: ksegsel.c,v $ * Revision 1.1.1.1 2006/03/17 19:45:54 zicodxx * initial import * * Revision 1.1.1.1 1999/06/14 22:03:30 donut * Import of d1x 1.37 source. * * Revision 2.0 1995/02/27 11:35:33 john * Version 2.0! No anonymous unions, Watcom 10.0, with no need * for bitmaps.tbl. * * Revision 1.12 1994/08/25 21:57:02 mike * IS_CHILD stuff. * * Revision 1.11 1994/05/23 14:48:35 mike * make current segment be add segment. * * Revision 1.10 1993/12/06 19:33:43 yuan * Fixed autosave stuff so that undo restores Cursegp and * Markedsegp * * Revision 1.9 1993/12/02 12:39:37 matt * Removed extra includes * * Revision 1.8 1993/11/12 13:08:17 yuan * Fixed warning for concave segment so it appears after any * "less important" diagnostic messages. * * Revision 1.7 1993/11/05 17:32:49 john * added funcs * ., * * Revision 1.6 1993/11/01 09:53:18 mike * Write functions get_next_segment and get_previous_segment. * * Revision 1.5 1993/10/31 18:06:56 mike * Only set_view_target_from_segment if in that mode. * * Revision 1.4 1993/10/28 15:01:09 matt * Mucked with update flags * * Revision 1.3 1993/10/14 18:07:47 mike * Change use of CONNECTIVITY to MAX_SIDES_PER_SEGMENT * * Revision 1.2 1993/10/14 11:47:34 john * *** empty log message *** * * Revision 1.1 1993/10/13 18:53:39 john * Initial revision * * */ #ifdef RCS static char rcsid[] = "$Id: ksegsel.c,v 1.1.1.1 2006/03/17 19:45:54 zicodxx Exp $"; #endif #include #include "inferno.h" #include "editor/editor.h" // --------------------------------------------------------------------------------------- // Select previous segment. // If there is a connection on the side opposite to the current side, then choose that segment. // If there is no connecting segment on the opposite face, try any segment. void get_previous_segment(int curseg_num, int curside,int *newseg_num, int *newside) { int s; *newseg_num = curseg_num; if (IS_CHILD(Segments[curseg_num].children[(int)Side_opposite[curside]])) *newseg_num = Segments[curseg_num].children[(int)Side_opposite[curside]]; else // no segment on opposite face, connect to anything for (s=0; s= MAX_SIDES_PER_SEGMENT) Curside = 0; Update_flags |= UF_ED_STATE_CHANGED; mine_changed = 1; return 1; } int SelectPrevSide() { if (--Curside < 0) Curside = MAX_SIDES_PER_SEGMENT-1; Update_flags |= UF_ED_STATE_CHANGED; mine_changed = 1; return 1; } // ---------- Copy current segment and side to marked segment and side ---------- int CopySegToMarked() { autosave_mine(mine_filename); strcpy(undo_status[Autosave_count], "Mark Segment UNDONE."); Markedsegp = Cursegp; Markedside = Curside; Update_flags |= UF_ED_STATE_CHANGED; mine_changed = 1; return 1; } // ---------- select absolute face on segment ---------- int SelectBottom() { Curside = WBOTTOM; Update_flags |= UF_ED_STATE_CHANGED; mine_changed = 1; return 1; } int SelectFront() { Curside = WFRONT; Update_flags |= UF_ED_STATE_CHANGED; mine_changed = 1; return 1; } int SelectTop() { Curside = WTOP; Update_flags |= UF_ED_STATE_CHANGED; mine_changed = 1; return 1; } int SelectBack() { Curside = WBACK; Update_flags |= UF_ED_STATE_CHANGED; mine_changed = 1; return 1; } int SelectLeft() { Curside = WLEFT; Update_flags |= UF_ED_STATE_CHANGED; mine_changed = 1; return 1; } int SelectRight() { Curside = WRIGHT; Update_flags |= UF_ED_STATE_CHANGED; mine_changed = 1; return 1; }