]> icculus.org git repositories - btb/d2x.git/blob - main/editor/kcurve.c
imported missing editor files from d1x
[btb/d2x.git] / main / editor / kcurve.c
1 /*
2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
11 COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
12 */
13 /*
14  * $Source: /cvs/cvsroot/d2x/main/editor/kcurve.c,v $
15  * $Revision: 1.1 $
16  * $Author: btb $
17  * $Date: 2004-12-19 13:54:27 $
18  *
19  * Functions for curve stuff.
20  *
21  * $Log: not supported by cvs2svn $
22  * Revision 1.1.1.1  1999/06/14 22:03:20  donut
23  * Import of d1x 1.37 source.
24  *
25  * Revision 2.0  1995/02/27  11:35:29  john
26  * Version 2.0! No anonymous unions, Watcom 10.0, with no need
27  * for bitmaps.tbl.
28  * 
29  * Revision 1.17  1994/08/25  21:56:43  mike
30  * IS_CHILD stuff.
31  * 
32  * Revision 1.16  1994/05/14  17:17:54  matt
33  * Got rid of externs in source (non-header) files
34  * 
35  * Revision 1.15  1994/01/28  10:52:24  mike
36  * Bind set_average_light_on_curside to DeleteCurve
37  * 
38  * Revision 1.14  1994/01/25  17:34:47  mike
39  * Stupidly bound fix_bogus_uvs_all to delete curve.
40  * 
41  * Revision 1.13  1993/12/06  19:34:15  yuan
42  * Fixed autosave so that undo restores Cursegp
43  * and Markedsegp
44  * 
45  * Revision 1.12  1993/12/02  12:39:28  matt
46  * Removed extra includes
47  * 
48  * Revision 1.11  1993/11/12  13:08:38  yuan
49  * Fixed warning for concave segment so it appears after any
50  * "less important" diagnostic messages.
51  * 
52  * Revision 1.10  1993/11/11  17:03:25  yuan
53  * Fixed undo-status display
54  * 
55  * Revision 1.9  1993/11/11  15:55:11  yuan
56  * Added undo messages.
57  * 
58  * Revision 1.8  1993/11/08  19:13:30  yuan
59  * Added Undo command (not working yet)
60  * 
61  * Revision 1.7  1993/11/05  17:32:51  john
62  * added funcs
63  * .,
64  * 
65  * Revision 1.6  1993/10/29  19:12:41  yuan
66  * Added diagnostic messages
67  * 
68  * Revision 1.5  1993/10/29  16:26:30  yuan
69  * Added diagnostic messages for curve generation
70  * 
71  * Revision 1.4  1993/10/22  19:47:30  yuan
72  * Can't build curve if Marked Seg has a segment attached.
73  * 
74  * Revision 1.3  1993/10/19  20:54:50  matt
75  * Changed/cleaned up window updates
76  * 
77  * Revision 1.2  1993/10/14  13:52:17  mike
78  * Add return value to AssignTexture
79  * 
80  * Revision 1.1  1993/10/13  18:53:11  john
81  * Initial revision
82  * 
83  *
84  */
85
86 #ifdef RCS
87 static char rcsid[] = "$Id: kcurve.c,v 1.1 2004-12-19 13:54:27 btb Exp $";
88 #endif
89
90 #include <string.h>
91
92 #include "inferno.h"
93 #include "editor.h"
94 #include "kdefs.h"
95
96 static fix         r1scale, r4scale;
97 static int         curve;
98
99 int InitCurve()
100 {
101         curve = 0;
102     return 1;
103 }
104
105 int GenerateCurve()
106 {
107     if ( (Markedsegp != 0) && !IS_CHILD(Markedsegp->children[Markedside])) {
108                 r1scale = r4scale = F1_0*20;
109       autosave_mine( mine_filename );
110       diagnostic_message("Curve Generated.");
111                 Update_flags |= UF_WORLD_CHANGED;
112       curve = generate_curve(r1scale, r4scale);
113                 mine_changed = 1;
114         if (curve == 1) {
115             strcpy(undo_status[Autosave_count], "Curve Generation UNDONE.\n");
116         }
117         if (curve == 0) diagnostic_message("Cannot generate curve -- check Current segment.");
118     }
119     else diagnostic_message("Cannot generate curve -- check Marked segment.");
120         warn_if_concave_segments();
121
122         return 1;
123 }
124
125 int DecreaseR4()
126 {
127         if (curve) {
128            Update_flags |= UF_WORLD_CHANGED;
129            delete_curve();
130            r4scale -= F1_0;
131            generate_curve(r1scale, r4scale);
132       diagnostic_message("R4 vector decreased.");
133            mine_changed = 1;
134                 warn_if_concave_segments();
135         }
136         return 1;
137 }
138
139 int IncreaseR4()
140 {
141         if (curve) {
142            Update_flags |= UF_WORLD_CHANGED;
143            delete_curve();
144            r4scale += F1_0;
145            generate_curve(r1scale, r4scale);
146       diagnostic_message("R4 vector increased.");
147            mine_changed = 1;
148                 warn_if_concave_segments();
149         }
150         return 1;
151 }
152
153 int DecreaseR1()
154 {
155         if (curve) {
156            Update_flags |= UF_WORLD_CHANGED;
157            delete_curve();
158            r1scale -= F1_0;
159            generate_curve(r1scale, r4scale);
160       diagnostic_message("R1 vector decreased.");
161            mine_changed = 1;
162                 warn_if_concave_segments();
163         }
164         return 1;
165 }
166
167 int IncreaseR1()
168 {
169         if (curve) {
170            Update_flags |= UF_WORLD_CHANGED;
171            delete_curve();
172            r1scale += F1_0;
173            generate_curve(r1scale, r4scale);
174       diagnostic_message("R1 vector increased.");
175            mine_changed = 1;
176                 warn_if_concave_segments();
177         }
178         return 1;
179 }
180
181 int DeleteCurve()
182 {
183 // fix_bogus_uvs_all();
184 set_average_light_on_curside();
185
186         if (curve) {
187            Update_flags |= UF_WORLD_CHANGED;
188            delete_curve();
189            curve = 0;
190            mine_changed = 1;
191       diagnostic_message("Curve Deleted.");
192                 warn_if_concave_segments();
193         }
194         return 1;
195 }
196
197 int SetCurve()
198 {
199         if (curve) curve = 0;
200    //autosave_mine( mine_filename );
201    //strcpy(undo_status[Autosave_count], "Curve Generation UNDONE.\n");
202    return 1;
203 }
204