Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LocationSelect Class Reference

#include <loc_select.h>

Public Member Functions

 LocationSelect (Vector, Vector, Vector)
 
 LocationSelect (Vector, Vector, Vector, Vector)
 
 ~LocationSelect ()
 
QVector GetVector ()
 
void MoveLocation (Vector pos, Vector p, Vector q)
 
void MoveLocation (Vector pos, Vector p, Vector q, Vector r)
 
void Draw ()
 
QVectorPosition ()
 
void SetPosition (float, float, float)
 
void SetPosition (const Vector &)
 
void SetOrientation (const Vector &p, const Vector &q, const Vector &r)
 

Static Public Member Functions

static void MouseMoveHandle (KBSTATE, int, int, int, int, int)
 

Protected Attributes

Transformation local_transformation
 
float CrosshairSize
 
Animation LocSelAni
 
Animation LocSelUpAni
 
Vector p
 
Vector q
 
Vector r
 
QVector LocalPosition
 

Detailed Description

Definition at line 5 of file loc_select.h.

Constructor & Destructor Documentation

LocationSelect::LocationSelect ( Vector  start,
Vector  Plane1,
Vector  Plane2 
)

Definition at line 7 of file loc_select.cpp.

References CrosshairSize, and MoveLocation().

8  : LocSelAni( "locationselect.ani", true, .5, MIPMAP, true )
9  , LocSelUpAni( "locationselect_up.ani", true, .5, MIPMAP, false )
10 {
11  //parentScene = par;
12  CrosshairSize = 2;
13  MoveLocation( start, Plane1, Plane2 );
14 }
LocationSelect::LocationSelect ( Vector  start,
Vector  Plane1,
Vector  Plane2,
Vector  Plane3 
)

Definition at line 15 of file loc_select.cpp.

References CrosshairSize, and MoveLocation().

16  : LocSelAni( "locationselect.ani", true, .5, MIPMAP, true )
17  , LocSelUpAni( "locationselect_up.ani", true, .5, MIPMAP, false )
18 {
19  //parentScene=par;
20  CrosshairSize = 2;
21  MoveLocation( start, Plane1, Plane2, Plane3 );
22 }
LocationSelect::~LocationSelect ( )

Definition at line 97 of file loc_select.cpp.

References UnbindMouse().

98 {
99  UnbindMouse( 1 );
100 }

Member Function Documentation

void LocationSelect::Draw ( )

unused Vector tR (t[8],t[9],t[10]);//the q vector of the plane being selected on

zfar

Definition at line 108 of file loc_select.cpp.

References changed, DeltaPosition(), Animation::Draw(), g_game, Matrix::getP(), Matrix::getQ(), GFXGetMatrixModel(), GFXGetMatrixView(), GFXGetXInvPerspective(), GFXGetYInvPerspective(), GFXLoadIdentity(), GFXMultMatrixModel(), GFXPopBlendMode(), local_transformation, LocalPosition, LocSelAni, LocSelUpAni, MODEL, game_data_t::MouseSensitivityX, game_data_t::MouseSensitivityY, MultMatrix(), Matrix::p, QVector, Animation::SetPosition(), Transformation::to_matrix(), v, Vector, vert, game_data_t::x_resolution, and game_data_t::y_resolution.

109 {
110  Matrix transformation;
111  local_transformation.to_matrix( transformation );
112 
114  GFXMultMatrixModel( transformation );
115  /*
116  * GFXEnable(DEPTHWRITE);
117  * GFXEnable(DEPTHTEST);
118  * GFXDisable(TEXTURE0);
119  * GFXDisable(TEXTURE1);
120  * GFXDisable(LIGHTING);
121  * GFXPushBlendMode();
122  * // GFXBlendMode(SRCALPHA,INVSRCALPHA);
123  * //GFXColor4f (parentScene->HUDColor.r, parentScene->HUDColor.g, parentScene->HUDColor.b, parentScene->HUDColor.a);
124  *
125  * GFXColor4f (0,.5,0,.3);
126  */
127 #ifdef DELTA_MOVEMENT
128  if (vert)
129  LocalPosition.k = 0;
130  vert = false;
131  if (DeltaPosition.k) {
132  LocalPosition.k -= DeltaPosition.k*.3;
133  DeltaPosition.k = 0;
134  }
135 #endif
136  if (changed || vert) {
137  Matrix t, m;
138  Matrix v;
139 
140  GFXGetMatrixView( v );
141 
142  GFXGetMatrixModel( m );
143  MultMatrix( t, v, m );
144 
145  //following translates 'z'...not sure it's necessary
146  //Translate (v,0,0,LocalPosition.k);
147  //MultMatrix (m,t,v);
148 
149  //the location in camera coordinates of the beginning of the location select
150  Vector tLocation( t.p.Cast() );
151  Vector tP( t.getP() ); //the p vector of the plane being selected on
152  Vector tQ( t.getQ() ); //the q vector of the plane being selected on
154  //VSFileSystem::Fprintf (stderr,"<%f,%f,%f>",t[0],t[1],t[2]);
155  //VSFileSystem::Fprintf (stderr,"<%f,%f,%f>",t[4],t[5],t[6]);
156  //VSFileSystem::Fprintf (stderr,"<%f,%f,%f>",t[8],t[9],t[10]);
157 #ifdef DELTA_MOVEMENT
158  float zvalueXY = tLocation.k+LocalPosition.i*tP.k+LocalPosition.j*tQ.k; //z val of the parallelogram
159 #else
160  float zvalueXY = tLocation.k+LocalPosition.i*tP.k+LocalPosition.j*tQ.k+LocalPosition.k*tR.k; //zvalue of the cursor
161 #endif
162  if (changed && !vert) {
163  //planar movement
164  if (zvalueXY > 1000)
165  zvalueXY = 1000;
166  if (zvalueXY < -1000)
167  zvalueXY = -1000;
168  LocalPosition.i = fabs( zvalueXY )
171  *tP.i )
172  -(1
173  -(2*DeltaPosition.j
175  LocalPosition.j = fabs( zvalueXY )
178  *tQ.i )
179  -( 1
180  -(2*DeltaPosition.j
182  DeltaPosition = Vector( 0, 0, 0 );
183  //Vector TransPQR (t[0]*i+t[4]*LocalPosition.j+t[8]*LocalPosition.k+t[12],t[1]*LocalPosition.i+t[5]*LocalPosition.j+t[9]*LocalPosition.k+t[13],t[2]*LocalPosition.i+t[6]*LocalPosition.j+t[10]*LocalPosition.k+t[14]);
184  changed = false;
185  }
186 #ifndef DELTA_MOVEMENT
187  else {
188  //vertical movement
189  if (zvalueXY > 1000)
190  zvalueXY = 1000;
191  if (zvalueXY < -1000)
192  zvalueXY = -1000;
193  LocalPosition.k = fabs( zvalueXY )
196  *tR.i )
199  if (DeltaPosition.k) {
200  LocalPosition.k = 0;
201  DeltaPosition.k = 0;
202  }
203  vert = false;
204  changed = false;
205  }
206 #endif
207  }
208  //draw the animation
210  LocSelUpAni.Draw();
212  LocSelAni.Draw();
213 
214  /*
215  * GFXBegin(TRIANGLES);
216  * if (fabs(LocalPosition.k-CrosshairSize)>CrosshairSize) {
217  * int tmp;
218  * if (LocalPosition.k>=0)
219  * tmp =1;
220  * else
221  * tmp =-1;
222  * GFXVertex3f (LocalPosition.i,LocalPosition.j,LocalPosition.k-tmp*CrosshairSize);
223  * GFXVertex3f (LocalPosition.i,LocalPosition.j+CrosshairSize*.125,0);
224  * GFXVertex3f (LocalPosition.i,LocalPosition.j-CrosshairSize*.125,0);
225  *
226  * GFXVertex3f (LocalPosition.i,LocalPosition.j-CrosshairSize*.125,0);
227  * GFXVertex3f (LocalPosition.i,LocalPosition.j+CrosshairSize*.125,0);
228  * GFXVertex3f (LocalPosition.i,LocalPosition.j,LocalPosition.k-tmp*CrosshairSize);
229  *
230  * GFXVertex3f (LocalPosition.i,LocalPosition.j,LocalPosition.k-tmp*CrosshairSize);
231  * GFXVertex3f (LocalPosition.i+.125*CrosshairSize,LocalPosition.j,0);
232  * GFXVertex3f (LocalPosition.i-CrosshairSize*.125,LocalPosition.j,0);
233  *
234  * GFXVertex3f (LocalPosition.i-CrosshairSize*.125,LocalPosition.j,0);
235  * GFXVertex3f (LocalPosition.i+CrosshairSize*.125,LocalPosition.j,0);
236  * GFXVertex3f (LocalPosition.i,LocalPosition.j,LocalPosition.k-tmp*CrosshairSize);
237  * }
238  * if (fabs(LocalPosition.i)+fabs(LocalPosition.j)>CrosshairSize) {
239  * GFXVertex3f (0,0,0);
240  * GFXVertex3f (LocalPosition.i,LocalPosition.j,CrosshairSize*.125);
241  * GFXVertex3f (LocalPosition.i,LocalPosition.j,CrosshairSize*-.125);
242  *
243  * GFXVertex3f (LocalPosition.i,LocalPosition.j,CrosshairSize*-.125);
244  * GFXVertex3f (LocalPosition.i,LocalPosition.j,CrosshairSize*.125);
245  * GFXVertex3f (0,0,0);
246  * }
247  * POSITION_GFXVertex (0,0,0);
248  * POSITION_GFXVertex (1,.1,.1);
249  * POSITION_GFXVertex (1,.1,-.1);
250  * POSITION_GFXVertex (0,0,0);
251  * POSITION_GFXVertex (1,-.1,-.1);
252  * POSITION_GFXVertex (1,-.1,.1);
253  * POSITION_GFXVertex (0,0,0);
254  * POSITION_GFXVertex (1,-.1,.1);
255  * POSITION_GFXVertex (1,.1,.1);
256  * POSITION_GFXVertex (0,0,0);
257  * POSITION_GFXVertex (1,.1,-.1);
258  * POSITION_GFXVertex (1,-.1,-.1);//one of the arrows to point
259  * POSITION_GFXVertex (0,0,0);
260  * POSITION_GFXVertex (-1,.1,-.1);
261  * POSITION_GFXVertex (-1,.1,.1);
262  * POSITION_GFXVertex (0,0,0);
263  * POSITION_GFXVertex (-1,-.1,.1);
264  * POSITION_GFXVertex (-1,-.1,-.1);
265  * POSITION_GFXVertex (0,0,0);
266  * POSITION_GFXVertex (-1,.1,.1);
267  * POSITION_GFXVertex (-1,-.1,.1);
268  * POSITION_GFXVertex (0,0,0);
269  * POSITION_GFXVertex (-1,-.1,-.1);
270  * POSITION_GFXVertex (-1,.1,-.1);//one of the arrows to point
271  *
272  * //vertical
273  * POSITION_GFXVertex (0,0,0);
274  * POSITION_GFXVertex (.1,.1,1);
275  * POSITION_GFXVertex (.1,-.1,1);
276  * POSITION_GFXVertex (0,0,0);
277  * POSITION_GFXVertex (-.1,-.1,1);
278  * POSITION_GFXVertex (-.1,.1,1);
279  * POSITION_GFXVertex (0,0,0);
280  * POSITION_GFXVertex (-.1,.1,1);
281  * POSITION_GFXVertex (.1,.1,1);
282  * POSITION_GFXVertex (0,0,0);
283  * POSITION_GFXVertex (.1,-.1,1);
284  * POSITION_GFXVertex(-.1,-.1,1);//one of the arrows to point
285  * POSITION_GFXVertex (0,0,0);
286  * POSITION_GFXVertex (.1,-.1,-1);
287  * POSITION_GFXVertex (.1,.1,-1);
288  * POSITION_GFXVertex (0,0,0);
289  * POSITION_GFXVertex (-.1,.1,-1);
290  * POSITION_GFXVertex (-.1,-.1,-1);
291  * POSITION_GFXVertex (0,0,0);
292  * POSITION_GFXVertex (.1,.1,-1);
293  * POSITION_GFXVertex (-.1,.1,-1);
294  * POSITION_GFXVertex (0,0,0);
295  * POSITION_GFXVertex (-.1,-.1,-1);
296  * POSITION_GFXVertex (.1,-.1,-1);//one of the arrows to point
297  *
298  *
299  * POSITION_GFXVertex (0,0,0);
300  * POSITION_GFXVertex (.1,-1,.1);
301  * POSITION_GFXVertex (.1,-1,-.1);
302  * POSITION_GFXVertex (0,0,0);
303  * POSITION_GFXVertex (-.1,-1,-.1);
304  * POSITION_GFXVertex (-.1,-1,.1);
305  * POSITION_GFXVertex (0,0,0);
306  * POSITION_GFXVertex (-.1,-1,.1);
307  * POSITION_GFXVertex (.1,-1,.1);
308  * POSITION_GFXVertex (0,0,0);
309  * POSITION_GFXVertex (.1,-1,-.1);
310  * POSITION_GFXVertex (-.1,-1,-.1);//one of the arrows to point
311  * POSITION_GFXVertex (0,0,0);
312  * POSITION_GFXVertex (.1,1,-.1);
313  * POSITION_GFXVertex (.1,1,.1);
314  * POSITION_GFXVertex (0,0,0);
315  * POSITION_GFXVertex (-.1,1,.1);
316  * POSITION_GFXVertex (-.1,1,-.1);
317  * POSITION_GFXVertex (0,0,0);
318  * POSITION_GFXVertex (.1,1,.1);
319  * POSITION_GFXVertex (-.1,1,.1);
320  * POSITION_GFXVertex (0,0,0);
321  * POSITION_GFXVertex (-.1,1,-.1);
322  * POSITION_GFXVertex (.1,1,-.1);//one of the arrows to point
323  *
324  *
325  * GFXEnd();
326  * GFXBegin (QUADS);
327  * //GFXColor4f (parentScene->HUDColor.r, parentScene->HUDColor.g, parentScene->HUDColor.b, 1.5*parentScene->HUDColor.a);
328  *
329  * GFXVertex3f(.5*CrosshairSize +LocalPosition.i,LocalPosition.j,0);
330  * GFXVertex3f(LocalPosition.i,.5*CrosshairSize+LocalPosition.j,0);
331  * GFXVertex3f(-.5*CrosshairSize +LocalPosition.i,LocalPosition.j,0);
332  * GFXVertex3f(LocalPosition.i,-.5*CrosshairSize+LocalPosition.j,0);
333  *
334  * GFXVertex3f(LocalPosition.i,-.5*CrosshairSize+LocalPosition.j,0);
335  * GFXVertex3f(-.5*CrosshairSize +LocalPosition.i,LocalPosition.j,0);
336  * GFXVertex3f(LocalPosition.i,.5*CrosshairSize+LocalPosition.j,0);
337  * GFXVertex3f(.5*CrosshairSize +LocalPosition.i,LocalPosition.j,0);
338  *
339  * GFXColor4f (0,.5,0,.5);
340  * POSITION_GFXVertex (1,.1,.1); //cap
341  * POSITION_GFXVertex (1,-.1,.1);
342  * POSITION_GFXVertex (1,-.1,-.1);
343  * POSITION_GFXVertex (1,.1,-.1);
344  *
345  * POSITION_GFXVertex (-1,.1,-.1);
346  * POSITION_GFXVertex (-1,-.1,-.1);
347  * POSITION_GFXVertex (-1,-.1,.1);
348  * POSITION_GFXVertex (-1,.1,.1); //cap
349  *
350  *
351  * POSITION_GFXVertex (.1,-1,.1); //cap
352  * POSITION_GFXVertex (-.1,-1,.1);
353  * POSITION_GFXVertex (-.1,-1,-.1);
354  * POSITION_GFXVertex (.1,-1,-.1);
355  *
356  * POSITION_GFXVertex (.1,1,-.1);
357  * POSITION_GFXVertex (-.1,1,-.1);
358  * POSITION_GFXVertex (-.1,1,.1);
359  * POSITION_GFXVertex (.1,1,.1); //cap
360  *
361  *
362  * POSITION_GFXVertex (.1,.1,1); //cap
363  * POSITION_GFXVertex (-.1,.1,1);
364  * POSITION_GFXVertex (-.1,-.1,1);
365  * POSITION_GFXVertex (.1,-.1,1);
366  *
367  * POSITION_GFXVertex (.1,-.1,-1);
368  * POSITION_GFXVertex (-.1,-.1,-1);
369  * POSITION_GFXVertex (-.1,.1,-1);
370  * POSITION_GFXVertex (.1,.1,-1); //cap
371  *
372  *
373  *
374  * GFXEnd();
375  */
376 
377  GFXPopBlendMode();
378 }
QVector LocationSelect::GetVector ( )
inline

Definition at line 21 of file loc_select.h.

References LocalPosition.

22  {
23  return /*Transform (cumulative_transformation_matrix,*/ LocalPosition /*)*/;
24  }
void LocationSelect::MouseMoveHandle ( KBSTATE  kk,
int  x,
int  y,
int  delx,
int  dely,
int  mod 
)
static

Definition at line 29 of file loc_select.cpp.

References changed, DeltaPosition(), dely, DOWN, keyState, PRESS, vert, x, and y.

30 {
31  if (keyState[0]['z'] == DOWN) {
32 #ifdef DELTA_MOVEMENT
33  if (kk == PRESS) {
34  DeltaPosition.k = dely;
35  vert = true;
36  }
37  if (dely)
38  DeltaPosition.k = dely;
39 #else
40  if (kk == PRESS) {
41  DeltaPosition.k = y;
42  } else if (delx || dely) {
43  DeltaPosition.i = x;
44  DeltaPosition.j = y;
45  vert = true;
46  }
47 #endif
48  } else if (delx || dely) {
49  DeltaPosition.i = x;
50  DeltaPosition.j = y;
51  changed = true;
52  }
53 }
void LocationSelect::MoveLocation ( Vector  pos,
Vector  p,
Vector  q 
)

Definition at line 73 of file loc_select.cpp.

References local_transformation, LocalPosition, MakeRVector(), p, Transformation::position, q, QVector, and r.

Referenced by LocationSelect().

74 {
75  //BindKey (1,LocationSelect::MouseMoveHandle);
76  //UnbindMouse (getMouseDrawFunc()); //don't draw the mouse
77  //BindKey (']',::incConstant);
78  //BindKey ('[',::decConstant);
79  LocalPosition = QVector( 0, 0, 0 );
80  MakeRVector( Plane1, Plane2, r );
81  p = Plane1;
82  q = Plane2;
83 
85 }
void LocationSelect::MoveLocation ( Vector  pos,
Vector  p,
Vector  q,
Vector  r 
)

Definition at line 86 of file loc_select.cpp.

References local_transformation, LocalPosition, p, Transformation::position, q, QVector, and r.

87 {
88  //BindKey (1,::MouseMoveHandle);
89  //UnbindMouse (getMouseDrawFunc());
90  LocalPosition = QVector( 0, 0, 0 );
91  r = Plane3;
92  p = Plane1;
93  q = Plane2;
95 }
QVector & LocationSelect::Position ( )

Definition at line 68 of file loc_select.cpp.

References local_transformation, and Transformation::position.

69 {
71 }
void LocationSelect::SetOrientation ( const Vector p,
const Vector q,
const Vector r 
)
void LocationSelect::SetPosition ( float  x,
float  y,
float  z 
)

Definition at line 55 of file loc_select.cpp.

References local_transformation, Transformation::position, and QVector.

56 {
58 }
void LocationSelect::SetPosition ( const Vector k)

Definition at line 59 of file loc_select.cpp.

References local_transformation, and Transformation::position.

60 {
62 }

Member Data Documentation

float LocationSelect::CrosshairSize
protected

Definition at line 9 of file loc_select.h.

Referenced by LocationSelect().

Transformation LocationSelect::local_transformation
protected

Definition at line 8 of file loc_select.h.

Referenced by Draw(), MoveLocation(), Position(), SetOrientation(), and SetPosition().

QVector LocationSelect::LocalPosition
protected

Definition at line 14 of file loc_select.h.

Referenced by Draw(), GetVector(), and MoveLocation().

Animation LocationSelect::LocSelAni
protected

Definition at line 11 of file loc_select.h.

Referenced by Draw().

Animation LocationSelect::LocSelUpAni
protected

Definition at line 12 of file loc_select.h.

Referenced by Draw().

Vector LocationSelect::p
protected

Definition at line 13 of file loc_select.h.

Referenced by MoveLocation().

Vector LocationSelect::q
protected

Definition at line 13 of file loc_select.h.

Referenced by MoveLocation().

Vector LocationSelect::r
protected

Definition at line 13 of file loc_select.h.

Referenced by MoveLocation().


The documentation for this class was generated from the following files: