~ubuntu-branches/ubuntu/wily/xmoto/wily-proposed

« back to all changes in this revision

Viewing changes to src/RendererBike.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Samuel Mimram
  • Date: 2006-09-14 21:01:20 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20060914210120-bvr7yu9rafb3fivp
Tags: 0.2.1-1
* New upstream release.
* Removed manpages and desktop files from the Debian package as they are now
  provided upstream.
* Make the package binNMUable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
  /*===========================================================================
33
33
  Rendering of the bike
34
34
  ===========================================================================*/
35
 
  void GameRenderer::_RenderBike(BikeState *pBike, BikeParams *pBikeParms, TextureTheme *p_theme) {
 
35
  void GameRenderer::_RenderBike(BikeState *pBike, BikeParams *pBikeParms, BikerTheme *p_theme) {
 
36
    Sprite *pSprite;
 
37
    Texture *pTexture;
 
38
 
36
39
    /* Render bike */
37
40
    Vector2f p0,p1,p2,p3,o0,o1,o2,o3;
38
41
    Vector2f C;
39
42
    Vector2f Sv,Rc,Fc;
40
 
      
 
43
 
41
44
    /* Draw front wheel */
42
45
    /* Ugly mode? */
43
46
    if(m_bUglyMode) {
65
68
    Fc = (p0 + p1 + p2 + p3) * 0.25f + C;
66
69
    
67
70
    /* Ugly mode? */
68
 
    if(m_bUglyMode) {
69
 
      glBegin(GL_LINE_STRIP);
70
 
      glColor3f(1,0,0);
71
 
      _Vertex(p0+C);    
72
 
      _Vertex(p2+C);
73
 
      glEnd();
74
 
      glBegin(GL_LINE_STRIP);
75
 
      glColor3f(1,0,0);
76
 
      _Vertex(p1+C);
77
 
      _Vertex(p3+C);
78
 
      glEnd();
79
 
      int nSteps = 16;
80
 
      glBegin(GL_LINE_LOOP);              
81
 
      glColor3f(1,0,0);
82
 
      for(int i=0;i<nSteps;i++) {
83
 
        float r = (3.14159f * 2.0f * (float)i)/ (float)nSteps;            
84
 
        _Vertex( Vector2f(C.x + pBikeParms->WR*sin(r),C.y + pBikeParms->WR*cos(r)) );
85
 
      }      
86
 
      glEnd();
 
71
 
 
72
    if(m_bUglyMode == false) {
 
73
      pSprite = p_theme->getWheel();
 
74
      if(pSprite != NULL) {
 
75
        pTexture = pSprite->getTexture();
 
76
        if(pTexture != NULL) {
 
77
          _RenderAlphaBlendedSection(pTexture,p0+C,p1+C,p2+C,p3+C);
 
78
        }
 
79
      }
87
80
    }
88
 
    else {
89
 
      glEnable(GL_BLEND); 
90
 
      glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
91
 
      glBindTexture(GL_TEXTURE_2D,p_theme->BikeWheel->nID);
92
 
      glEnable(GL_TEXTURE_2D);
93
 
      glBegin(GL_POLYGON);
94
 
      glColor3f(1,1,1);
95
 
      glTexCoord2f(0,1);
 
81
 
 
82
    if(m_bUglyMode || m_bTestThemeMode) {
 
83
      glBegin(GL_LINE_STRIP);
 
84
      glColor3ub(GET_RED(p_theme->getUglyWheelColor()),GET_GREEN(p_theme->getUglyWheelColor()),GET_BLUE(p_theme->getUglyWheelColor()));
96
85
      _Vertex(p0+C);    
97
 
      glTexCoord2f(1,1);
 
86
      _Vertex(p2+C);
 
87
      glEnd();
 
88
      glBegin(GL_LINE_STRIP);
 
89
      glColor3ub(GET_RED(p_theme->getUglyWheelColor()),GET_GREEN(p_theme->getUglyWheelColor()),GET_BLUE(p_theme->getUglyWheelColor()));
98
90
      _Vertex(p1+C);
99
 
      glTexCoord2f(1,0);
100
 
      _Vertex(p2+C);
101
 
      glTexCoord2f(0,0);
102
91
      _Vertex(p3+C);
103
92
      glEnd();
104
 
      glDisable(GL_TEXTURE_2D);
105
 
      glDisable(GL_BLEND);
 
93
      _RenderCircle(16,p_theme->getUglyWheelColor(),C,pBikeParms->WR);
106
94
    }
107
95
 
108
96
    /* Draw rear wheel */        
132
120
    Rc = (p0 + p1 + p2 + p3) * 0.25f + C;
133
121
    
134
122
    /* Ugly mode? */
135
 
    if(m_bUglyMode) {
136
 
      glBegin(GL_LINE_STRIP);
137
 
      glColor3f(1,0,0);
138
 
      _Vertex(p0+C);    
139
 
      _Vertex(p2+C);
140
 
      glEnd();
141
 
      glBegin(GL_LINE_STRIP);
142
 
      glColor3f(1,0,0);
143
 
      _Vertex(p1+C);
144
 
      _Vertex(p3+C);
145
 
      glEnd();
146
 
      int nSteps = 16;
147
 
      glBegin(GL_LINE_LOOP);              
148
 
      glColor3f(1,0,0);
149
 
      for(int i=0;i<nSteps;i++) {
150
 
        float r = (3.14159f * 2.0f * (float)i)/ (float)nSteps;            
151
 
        _Vertex( Vector2f(C.x + pBikeParms->WR*sin(r),C.y + pBikeParms->WR*cos(r)) );
152
 
      }      
153
 
      glEnd();
 
123
    if(m_bUglyMode == false) {
 
124
      pSprite = p_theme->getWheel();
 
125
      if(pSprite != NULL) {
 
126
        pTexture = pSprite->getTexture();
 
127
        if(pTexture != NULL) {
 
128
          _RenderAlphaBlendedSection(p_theme->getWheel()->getTexture(),p0+C,p1+C,p2+C,p3+C);
 
129
        }
 
130
      }
154
131
    }
155
 
    else {
156
 
      glEnable(GL_BLEND); 
157
 
      glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
158
 
      glBindTexture(GL_TEXTURE_2D,p_theme->BikeWheel->nID);
159
 
      glEnable(GL_TEXTURE_2D);
160
 
      glBegin(GL_POLYGON);
161
 
      glColor3f(1,1,1);
162
 
      glTexCoord2f(0,1);
 
132
 
 
133
    if(m_bUglyMode || m_bTestThemeMode) {
 
134
      glBegin(GL_LINE_STRIP);
 
135
      glColor3ub(GET_RED(p_theme->getUglyWheelColor()),GET_GREEN(p_theme->getUglyWheelColor()),GET_BLUE(p_theme->getUglyWheelColor()));
163
136
      _Vertex(p0+C);    
164
 
      glTexCoord2f(1,1);
 
137
      _Vertex(p2+C);
 
138
      glEnd();
 
139
      glBegin(GL_LINE_STRIP);
 
140
      glColor3ub(GET_RED(p_theme->getUglyWheelColor()),GET_GREEN(p_theme->getUglyWheelColor()),GET_BLUE(p_theme->getUglyWheelColor()));
165
141
      _Vertex(p1+C);
166
 
      glTexCoord2f(1,0);
167
 
      _Vertex(p2+C);
168
 
      glTexCoord2f(0,0);
169
142
      _Vertex(p3+C);
170
143
      glEnd();
171
 
      glDisable(GL_TEXTURE_2D);
172
 
      glDisable(GL_BLEND);
 
144
      _RenderCircle(16,p_theme->getUglyWheelColor(),C,pBikeParms->WR);
173
145
    }
174
146
 
175
147
    if(!m_bUglyMode) {
191
163
        p3 = pBike->FrontWheelP - Vector2f(-Sv.y,Sv.x)*0.07f - Sv*0.08f;
192
164
      }        
193
165
 
194
 
      glEnable(GL_BLEND); 
195
 
      glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
196
 
      glBindTexture(GL_TEXTURE_2D,p_theme->BikeRear->nID);
197
 
      glEnable(GL_TEXTURE_2D);
198
 
      glBegin(GL_POLYGON);
199
 
      glColor3f(1,1,1);
200
 
      glTexCoord2f(0,0);
201
 
      _Vertex(p0);    
202
 
      glTexCoord2f(1,0);
203
 
      _Vertex(p1);
204
 
      glTexCoord2f(1,1);
205
 
      _Vertex(p2);
206
 
      glTexCoord2f(0,1);
207
 
      _Vertex(p3);
208
 
      glEnd();
209
 
      glDisable(GL_TEXTURE_2D);
210
 
      glDisable(GL_BLEND);        
211
 
   
 
166
      pSprite = p_theme->getRear();
 
167
      if(pSprite != NULL) {
 
168
        pTexture = pSprite->getTexture();
 
169
        if(pTexture != NULL) {
 
170
          _RenderAlphaBlendedSection(pTexture,p0,p1,p2,p3);
 
171
        }
 
172
      }
 
173
 
212
174
      /* Draw front suspension */
213
175
      if(pBike->Dir == DD_RIGHT) {
214
176
        Sv = pBike->FrontAnchorP - Fc;
226
188
        p2 = pBike->FrontAnchor2P - Vector2f(-Sv.y,Sv.x)*0.04f - Sv*0.35f;
227
189
        p3 = pBike->RearWheelP - Vector2f(-Sv.y,Sv.x)*0.04f - Sv*0.05f;
228
190
      }
229
 
      
230
 
      glEnable(GL_BLEND); 
231
 
      glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
232
 
      glBindTexture(GL_TEXTURE_2D,p_theme->BikeFront->nID);
233
 
      glEnable(GL_TEXTURE_2D);
234
 
      glBegin(GL_POLYGON);
235
 
      glColor3f(1,1,1);
236
 
      glTexCoord2f(1,0);
237
 
      _Vertex(p0);    
238
 
      glTexCoord2f(1,1);
239
 
      _Vertex(p1);
240
 
      glTexCoord2f(0,1);
241
 
      _Vertex(p2);
242
 
      glTexCoord2f(0,0);
243
 
      _Vertex(p3);
244
 
      glEnd();
245
 
      glDisable(GL_TEXTURE_2D);
246
 
      glDisable(GL_BLEND);        
 
191
 
 
192
      if(m_renderBikeFront) {
 
193
        pSprite = p_theme->getFront();
 
194
        if(pSprite != NULL) {
 
195
          pTexture = pSprite->getTexture();
 
196
          if(pTexture != NULL) {
 
197
            _RenderAlphaBlendedSection(pTexture,p3,p0,p1,p2);
 
198
          }
 
199
        }    
 
200
      }  
247
201
 
248
202
      /* Draw body/frame */
249
203
      o0 = Vector2f(-1,0.5);
259
213
      p3 = Vector2f(o3.x*pBike->fFrameRot[0] + o3.y*pBike->fFrameRot[1],
260
214
                    o3.x*pBike->fFrameRot[2] + o3.y*pBike->fFrameRot[3]);
261
215
      
262
 
      C = pBike->CenterP; //Vector2f(pBike->pfFramePos[0],pBike->pfFramePos[1]);        
263
 
      
264
 
      glEnable(GL_BLEND); 
265
 
      glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
266
 
      glBindTexture(GL_TEXTURE_2D,p_theme->BikeBody->nID);
267
 
      glEnable(GL_TEXTURE_2D);
268
 
      glBegin(GL_POLYGON);
269
 
      glColor3f(1,1,1);
270
 
      if(pBike->Dir == DD_RIGHT) {
271
 
        glTexCoord2f(0,0);
272
 
        _Vertex(p0+C);    
273
 
        glTexCoord2f(1,0);
274
 
        _Vertex(p1+C);
275
 
        glTexCoord2f(1,1);
276
 
        _Vertex(p2+C);
277
 
        glTexCoord2f(0,1);
278
 
        _Vertex(p3+C);
279
 
      }
280
 
      else {
281
 
        glTexCoord2f(1,0);
282
 
        _Vertex(p0+C);    
283
 
        glTexCoord2f(0,0);
284
 
        _Vertex(p1+C);
285
 
        glTexCoord2f(0,1);
286
 
        _Vertex(p2+C);
287
 
        glTexCoord2f(1,1);
288
 
        _Vertex(p3+C);
289
 
      }
290
 
      glEnd();
291
 
      glDisable(GL_TEXTURE_2D);
292
 
      glDisable(GL_BLEND);
 
216
      C = pBike->CenterP; 
 
217
 
 
218
      pSprite = p_theme->getBody();
 
219
      if(pSprite != NULL) {
 
220
        pTexture = pSprite->getTexture();
 
221
        if(pTexture != NULL) {
 
222
          if(pBike->Dir == DD_RIGHT)
 
223
            _RenderAlphaBlendedSection(pTexture,p3+C,p2+C,p1+C,p0+C);
 
224
          else
 
225
            _RenderAlphaBlendedSection(pTexture,p2+C,p3+C,p0+C,p1+C);
 
226
        }
 
227
      }
293
228
    }
294
229
 
295
230
    /* Draw rider */        
296
231
    if(pBike->Dir == DD_RIGHT) {
297
 
      if(m_bUglyMode) {
298
 
        /* Draw it ugly */
299
 
        glBegin(GL_LINE_STRIP);
300
 
        glColor3f(0,1,0);
301
 
        _Vertex(pBike->FootP);
302
 
        _Vertex(pBike->KneeP);
303
 
        _Vertex(pBike->LowerBodyP);
304
 
        _Vertex(pBike->ShoulderP);
305
 
        _Vertex(pBike->ElbowP);
306
 
        _Vertex(pBike->HandP);
307
 
        glEnd();
308
 
        int nSteps = 10;
309
 
        glBegin(GL_LINE_LOOP);              
310
 
        glColor3f(0,1,0);
311
 
        for(int i=0;i<nSteps;i++) {
312
 
          float r = (3.14159f * 2.0f * (float)i)/ (float)nSteps;            
313
 
          _Vertex( Vector2f(pBike->HeadP.x + pBikeParms->fHeadSize*sin(r),
314
 
                            pBike->HeadP.y + pBikeParms->fHeadSize*cos(r)) );
315
 
        }      
316
 
        glEnd();
317
 
      }
318
 
      else {      
 
232
      if(m_bUglyMode == false) {    
319
233
        /* Draw rider torso */
320
234
        Sv = pBike->ShoulderP - pBike->LowerBodyP;
321
235
        Sv.normalize();         
324
238
        p2 = pBike->LowerBodyP - Vector2f(-Sv.y,Sv.x)*0.24f - Sv*0.1f;
325
239
        p3 = pBike->ShoulderP - Vector2f(-Sv.y,Sv.x)*0.24f + Sv*0.46f;
326
240
 
327
 
        glEnable(GL_BLEND); 
328
 
        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
329
 
        glBindTexture(GL_TEXTURE_2D,p_theme->RiderTorso->nID);
330
 
        glEnable(GL_TEXTURE_2D);
331
 
        glBegin(GL_POLYGON);
332
 
        glColor3f(1,1,1);
333
 
        glTexCoord2f(0,0);
334
 
        _Vertex(p0);    
335
 
        glTexCoord2f(0,1);
336
 
        _Vertex(p1);
337
 
        glTexCoord2f(1,1);
338
 
        _Vertex(p2);
339
 
        glTexCoord2f(1,0);
340
 
        _Vertex(p3);
341
 
        glEnd();
342
 
        glDisable(GL_TEXTURE_2D);
343
 
        glDisable(GL_BLEND);        
344
 
        
 
241
        pSprite = p_theme->getTorso();
 
242
        if(pSprite != NULL) {
 
243
          pTexture = pSprite->getTexture();
 
244
          if(pTexture != NULL) {
 
245
            _RenderAlphaBlendedSection(pTexture,p1,p2,p3,p0);
 
246
          }
 
247
        }        
 
248
 
345
249
        /* Draw rider upper arm */
346
250
        Sv = pBike->ShoulderP - pBike->ElbowP;
347
251
        Sv.normalize();         
349
253
        p1 = pBike->ElbowP + Vector2f(-Sv.y,Sv.x)*0.12f - Sv*0.05f;
350
254
        p2 = pBike->ElbowP - Vector2f(-Sv.y,Sv.x)*0.10f - Sv*0.05f;
351
255
        p3 = pBike->ShoulderP - Vector2f(-Sv.y,Sv.x)*0.10f;
352
 
        
353
 
        glEnable(GL_BLEND); 
354
 
        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
355
 
        glBindTexture(GL_TEXTURE_2D,p_theme->RiderUpperArm->nID);
356
 
        glEnable(GL_TEXTURE_2D);
357
 
        glBegin(GL_POLYGON);
358
 
        glColor3f(1,1,1);
359
 
        glTexCoord2f(0,0);
360
 
        _Vertex(p0);    
361
 
        glTexCoord2f(0,1);
362
 
        _Vertex(p1);
363
 
        glTexCoord2f(1,1);
364
 
        _Vertex(p2);
365
 
        glTexCoord2f(1,0);
366
 
        _Vertex(p3);
367
 
        glEnd();
368
 
        glDisable(GL_TEXTURE_2D);
369
 
        glDisable(GL_BLEND);        
 
256
 
 
257
        pSprite = p_theme->getUpperArm();
 
258
        if(pSprite != NULL) {
 
259
          pTexture = pSprite->getTexture();
 
260
          if(pTexture != NULL) {
 
261
            _RenderAlphaBlendedSection(pTexture,p1,p2,p3,p0);
 
262
          }
 
263
        }        
370
264
 
371
265
        /* Draw rider lower arm */
372
266
        Sv = pBike->ElbowP - pBike->HandP;
376
270
        p2 = pBike->HandP - Vector2f(-Sv.y,Sv.x)*0.10f - Sv*0.05f;
377
271
        p3 = pBike->ElbowP - Vector2f(-Sv.y,Sv.x)*0.10f + Sv*0.09f;
378
272
        
379
 
        glEnable(GL_BLEND); 
380
 
        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
381
 
        glBindTexture(GL_TEXTURE_2D,p_theme->RiderLowerArm->nID);
382
 
        glEnable(GL_TEXTURE_2D);
383
 
        glBegin(GL_POLYGON);
384
 
        glColor3f(1,1,1);
385
 
        glTexCoord2f(0,0);
386
 
        _Vertex(p0);    
387
 
        glTexCoord2f(1,0);
388
 
        _Vertex(p1);
389
 
        glTexCoord2f(1,1);
390
 
        _Vertex(p2);
391
 
        glTexCoord2f(0,1);
392
 
        _Vertex(p3);
393
 
        glEnd();
394
 
        glDisable(GL_TEXTURE_2D);
395
 
        glDisable(GL_BLEND);        
396
 
        
 
273
        pSprite = p_theme->getLowerArm();
 
274
        if(pSprite != NULL) {
 
275
          pTexture = pSprite->getTexture();
 
276
          if(pTexture != NULL) {
 
277
            _RenderAlphaBlendedSection(pTexture,p3,p2,p1,p0);
 
278
          }
 
279
        }        
 
280
 
397
281
        /* Draw rider upper leg */
398
282
        Sv = pBike->LowerBodyP - pBike->KneeP;
399
283
        Sv.normalize();         
401
285
        p1 = pBike->KneeP + Vector2f(-Sv.y,Sv.x)*0.15f + Sv*0.0f;
402
286
        p2 = pBike->KneeP - Vector2f(-Sv.y,Sv.x)*0.15f + Sv*0.0f;
403
287
        p3 = pBike->LowerBodyP - Vector2f(-Sv.y,Sv.x)*0.1f + Sv*0.14f;
404
 
        
405
 
        glEnable(GL_BLEND); 
406
 
        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
407
 
        glBindTexture(GL_TEXTURE_2D,p_theme->RiderUpperLeg->nID);
408
 
        glEnable(GL_TEXTURE_2D);
409
 
        glBegin(GL_POLYGON);
410
 
        glColor3f(1,1,1);
411
 
        glTexCoord2f(0,1);
412
 
        _Vertex(p0);    
413
 
        glTexCoord2f(1,1);
414
 
        _Vertex(p1);
415
 
        glTexCoord2f(1,0);
416
 
        _Vertex(p2);
417
 
        glTexCoord2f(0,0);
418
 
        _Vertex(p3);
419
 
        glEnd();
420
 
        glDisable(GL_TEXTURE_2D);
421
 
        glDisable(GL_BLEND);        
 
288
 
 
289
        pSprite = p_theme->getUpperLeg();
 
290
        if(pSprite != NULL) {
 
291
          pTexture = pSprite->getTexture();
 
292
          if(pTexture != NULL) {
 
293
            _RenderAlphaBlendedSection(pTexture,p0,p1,p2,p3);
 
294
          }
 
295
        }        
422
296
 
423
297
        /* Draw rider lower leg */
424
298
        Sv = pBike->KneeP - pBike->FootP;
427
301
        p1 = pBike->FootP + Vector2f(-Sv.y,Sv.x)*0.2f;
428
302
        p2 = pBike->FootP - Vector2f(-Sv.y,Sv.x)*0.2f;
429
303
        p3 = pBike->KneeP - Vector2f(-Sv.y,Sv.x)*0.23f + Sv*0.1f;
430
 
        
431
 
        glEnable(GL_BLEND); 
432
 
        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
433
 
        glBindTexture(GL_TEXTURE_2D,p_theme->RiderLowerLeg->nID);
434
 
        glEnable(GL_TEXTURE_2D);
435
 
        glBegin(GL_POLYGON);
436
 
        glColor3f(1,1,1);
437
 
        glTexCoord2f(0,0);
438
 
        _Vertex(p0);    
439
 
        glTexCoord2f(0,1);
440
 
        _Vertex(p1);
441
 
        glTexCoord2f(1,1);
442
 
        _Vertex(p2);
443
 
        glTexCoord2f(1,0);
444
 
        _Vertex(p3);
 
304
 
 
305
        pSprite = p_theme->getLowerLeg();
 
306
        if(pSprite != NULL) {
 
307
          pTexture = pSprite->getTexture();
 
308
          if(pTexture != NULL) {
 
309
            _RenderAlphaBlendedSection(pTexture,p1,p2,p3,p0);        
 
310
          }
 
311
        }
 
312
      }
 
313
 
 
314
      if(m_bUglyMode || m_bTestThemeMode) {
 
315
        /* Draw it ugly */
 
316
        glBegin(GL_LINE_STRIP);
 
317
        glColor3ub(GET_RED(p_theme->getUglyRiderColor()),GET_GREEN(p_theme->getUglyRiderColor()),GET_BLUE(p_theme->getUglyRiderColor()));
 
318
        _Vertex(pBike->FootP);
 
319
        _Vertex(pBike->KneeP);
 
320
        _Vertex(pBike->LowerBodyP);
 
321
        _Vertex(pBike->ShoulderP);
 
322
        _Vertex(pBike->ElbowP);
 
323
        _Vertex(pBike->HandP);
445
324
        glEnd();
446
 
        glDisable(GL_TEXTURE_2D);
447
 
        glDisable(GL_BLEND);        
 
325
        _RenderCircle(10,p_theme->getUglyRiderColor(),pBike->HeadP,pBikeParms->fHeadSize);
448
326
      }
449
327
    }
450
328
    else if(pBike->Dir == DD_LEFT) {
451
 
      if(m_bUglyMode) {
452
 
        /* Draw it ugly */
453
 
        glBegin(GL_LINE_STRIP);
454
 
        glColor3f(0,1,0);
455
 
        _Vertex(pBike->Foot2P);
456
 
        _Vertex(pBike->Knee2P);
457
 
        _Vertex(pBike->LowerBody2P);
458
 
        _Vertex(pBike->Shoulder2P);
459
 
        _Vertex(pBike->Elbow2P);
460
 
        _Vertex(pBike->Hand2P);
461
 
        glEnd();
462
 
        int nSteps = 10;
463
 
        glBegin(GL_LINE_LOOP);              
464
 
        glColor3f(0,1,0);
465
 
        for(int i=0;i<nSteps;i++) {
466
 
          float r = (3.14159f * 2.0f * (float)i)/ (float)nSteps;            
467
 
          _Vertex( Vector2f(pBike->Head2P.x + pBikeParms->fHeadSize*sin(r),
468
 
                            pBike->Head2P.y + pBikeParms->fHeadSize*cos(r)) );
469
 
        }      
470
 
        glEnd();
471
 
      }
472
 
      else {      
 
329
      if(m_bUglyMode == false) {    
473
330
        /* Draw rider torso */
474
331
        Sv = pBike->Shoulder2P - pBike->LowerBody2P;
475
332
        Sv.normalize();         
477
334
        p1 = pBike->LowerBody2P + Vector2f(-Sv.y,Sv.x)*0.24f - Sv*0.1f;
478
335
        p2 = pBike->LowerBody2P - Vector2f(-Sv.y,Sv.x)*0.24f - Sv*0.1f;
479
336
        p3 = pBike->Shoulder2P - Vector2f(-Sv.y,Sv.x)*0.24f + Sv*0.46f;
480
 
        
481
 
        glEnable(GL_BLEND); 
482
 
        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
483
 
        glBindTexture(GL_TEXTURE_2D,p_theme->RiderTorso->nID);
484
 
        glEnable(GL_TEXTURE_2D);
485
 
        glBegin(GL_POLYGON);
486
 
        glColor3f(1,1,1);
487
 
        glTexCoord2f(1,0);
488
 
        _Vertex(p0);    
489
 
        glTexCoord2f(1,1);
490
 
        _Vertex(p1);
491
 
        glTexCoord2f(0,1);
492
 
        _Vertex(p2);
493
 
        glTexCoord2f(0,0);
494
 
        _Vertex(p3);
495
 
        glEnd();
496
 
        glDisable(GL_TEXTURE_2D);
497
 
        glDisable(GL_BLEND);        
498
 
        
 
337
 
 
338
        pSprite = p_theme->getTorso();
 
339
        if(pSprite != NULL) {
 
340
          pTexture = pSprite->getTexture();
 
341
          if(pTexture != NULL) {
 
342
            _RenderAlphaBlendedSection(pTexture,p2,p1,p0,p3);        
 
343
          }
 
344
        }                
 
345
 
499
346
        /* Draw rider upper arm */
500
347
        Sv = pBike->Shoulder2P - pBike->Elbow2P;
501
348
        Sv.normalize();         
503
350
        p1 = pBike->Elbow2P + Vector2f(-Sv.y,Sv.x)*0.12f - Sv*0.05f;
504
351
        p2 = pBike->Elbow2P - Vector2f(-Sv.y,Sv.x)*0.10f - Sv*0.05f;
505
352
        p3 = pBike->Shoulder2P - Vector2f(-Sv.y,Sv.x)*0.10f;
506
 
        
507
 
        glEnable(GL_BLEND); 
508
 
        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
509
 
        glBindTexture(GL_TEXTURE_2D,p_theme->RiderUpperArm->nID);
510
 
        glEnable(GL_TEXTURE_2D);
511
 
        glBegin(GL_POLYGON);
512
 
        glColor3f(1,1,1);
513
 
        glTexCoord2f(1,0);
514
 
        _Vertex(p0);    
515
 
        glTexCoord2f(1,1);
516
 
        _Vertex(p1);
517
 
        glTexCoord2f(0,1);
518
 
        _Vertex(p2);
519
 
        glTexCoord2f(0,0);
520
 
        _Vertex(p3);
521
 
        glEnd();
522
 
        glDisable(GL_TEXTURE_2D);
523
 
        glDisable(GL_BLEND);        
 
353
 
 
354
        pSprite = p_theme->getUpperArm();
 
355
        if(pSprite != NULL) {
 
356
          pTexture = pSprite->getTexture();
 
357
          if(pTexture != NULL) {
 
358
            _RenderAlphaBlendedSection(pTexture,p2,p1,p0,p3);        
 
359
          }
 
360
        }        
524
361
 
525
362
        /* Draw rider lower arm */
526
363
        Sv = pBike->Elbow2P - pBike->Hand2P;
529
366
        p1 = pBike->Hand2P + Vector2f(-Sv.y,Sv.x)*0.12f - Sv*0.05f;
530
367
        p2 = pBike->Hand2P - Vector2f(-Sv.y,Sv.x)*0.10f - Sv*0.05f;
531
368
        p3 = pBike->Elbow2P - Vector2f(-Sv.y,Sv.x)*0.10f + Sv*0.09f;
532
 
        
533
 
        glEnable(GL_BLEND); 
534
 
        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
535
 
        glBindTexture(GL_TEXTURE_2D,p_theme->RiderLowerArm->nID);
536
 
        glEnable(GL_TEXTURE_2D);
537
 
        glBegin(GL_POLYGON);
538
 
        glColor3f(1,1,1);
539
 
        glTexCoord2f(0,1);
540
 
        _Vertex(p0);    
541
 
        glTexCoord2f(1,1);
542
 
        _Vertex(p1);
543
 
        glTexCoord2f(1,0);
544
 
        _Vertex(p2);
545
 
        glTexCoord2f(0,0);
546
 
        _Vertex(p3);
547
 
        glEnd();
548
 
        glDisable(GL_TEXTURE_2D);
549
 
        glDisable(GL_BLEND);              
 
369
 
 
370
        pSprite = p_theme->getLowerArm();
 
371
        if(pSprite != NULL) {
 
372
          pTexture = pSprite->getTexture();
 
373
          if(pTexture != NULL) {
 
374
            _RenderAlphaBlendedSection(pTexture,p0,p1,p2,p3);        
 
375
          }
 
376
        }
550
377
 
551
378
        /* Draw rider upper leg */
552
379
        Sv = pBike->LowerBody2P - pBike->Knee2P;
555
382
        p1 = pBike->Knee2P + Vector2f(-Sv.y,Sv.x)*0.15f + Sv*0.0f;
556
383
        p2 = pBike->Knee2P - Vector2f(-Sv.y,Sv.x)*0.15f + Sv*0.0f;
557
384
        p3 = pBike->LowerBody2P - Vector2f(-Sv.y,Sv.x)*0.1f + Sv*0.14f;
558
 
        
559
 
        glEnable(GL_BLEND); 
560
 
        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
561
 
        glBindTexture(GL_TEXTURE_2D,p_theme->RiderUpperLeg->nID);
562
 
        glEnable(GL_TEXTURE_2D);
563
 
        glBegin(GL_POLYGON);
564
 
        glColor3f(1,1,1);
565
 
        glTexCoord2f(0,0);
566
 
        _Vertex(p0);    
567
 
        glTexCoord2f(1,0);
568
 
        _Vertex(p1);
569
 
        glTexCoord2f(1,1);
570
 
        _Vertex(p2);
571
 
        glTexCoord2f(0,1);
572
 
        _Vertex(p3);
573
 
        glEnd();
574
 
        glDisable(GL_TEXTURE_2D);
575
 
        glDisable(GL_BLEND);        
 
385
 
 
386
        pSprite = p_theme->getUpperLeg();
 
387
        if(pSprite != NULL) {
 
388
          pTexture = pSprite->getTexture();
 
389
          if(pTexture != NULL) {
 
390
            _RenderAlphaBlendedSection(pTexture,p3,p2,p1,p0);        
 
391
          }
 
392
        }
576
393
 
577
394
        /* Draw rider lower leg */
578
395
        Sv = pBike->Knee2P - pBike->Foot2P;
581
398
        p1 = pBike->Foot2P + Vector2f(-Sv.y,Sv.x)*0.2f;
582
399
        p2 = pBike->Foot2P - Vector2f(-Sv.y,Sv.x)*0.2f;
583
400
        p3 = pBike->Knee2P - Vector2f(-Sv.y,Sv.x)*0.23f + Sv*0.1f;
584
 
        
585
 
        glEnable(GL_BLEND); 
586
 
        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);         
587
 
        glBindTexture(GL_TEXTURE_2D,p_theme->RiderLowerLeg->nID);
588
 
        glEnable(GL_TEXTURE_2D);
589
 
        glBegin(GL_POLYGON);
590
 
        glColor3f(1,1,1);
591
 
        glTexCoord2f(1,0);
592
 
        _Vertex(p0);    
593
 
        glTexCoord2f(1,1);
594
 
        _Vertex(p1);
595
 
        glTexCoord2f(0,1);
596
 
        _Vertex(p2);
597
 
        glTexCoord2f(0,0);
598
 
        _Vertex(p3);
 
401
 
 
402
        pSprite = p_theme->getLowerLeg();
 
403
        if(pSprite != NULL) {
 
404
          pTexture = pSprite->getTexture();
 
405
          if(pTexture != NULL) {
 
406
            _RenderAlphaBlendedSection(pTexture,p2,p1,p0,p3);        
 
407
          }
 
408
        }
 
409
      }
 
410
 
 
411
      if(m_bUglyMode || m_bTestThemeMode) {
 
412
        /* Draw it ugly */
 
413
        glBegin(GL_LINE_STRIP);
 
414
        glColor3ub(GET_RED(p_theme->getUglyRiderColor()),GET_GREEN(p_theme->getUglyRiderColor()),GET_BLUE(p_theme->getUglyRiderColor()));
 
415
        _Vertex(pBike->Foot2P);
 
416
        _Vertex(pBike->Knee2P);
 
417
        _Vertex(pBike->LowerBody2P);
 
418
        _Vertex(pBike->Shoulder2P);
 
419
        _Vertex(pBike->Elbow2P);
 
420
        _Vertex(pBike->Hand2P);
599
421
        glEnd();
600
 
        glDisable(GL_TEXTURE_2D);
601
 
        glDisable(GL_BLEND);     
 
422
        _RenderCircle(10,p_theme->getUglyRiderColor(),pBike->Head2P,pBikeParms->fHeadSize);
602
423
      }
603
424
    }   
604
425
    
605
426
    /* New wheel-spin particles? */
606
427
    if(getGameObject()->isWheelSpinning()) {
607
 
      //glBegin(GL_LINE_STRIP);      
608
 
      //glColor3f(1,0.5,0.2);
609
 
      //_Vertex(getGameObject()->getWheelSpinPoint() - Vector2f(0.5,0));
610
 
      //_Vertex(getGameObject()->getWheelSpinPoint() + Vector2f(0.5,0));
611
 
      //glEnd();
612
 
      //glBegin(GL_LINE_STRIP);      
613
 
      //glColor3f(1,0.5,0.2);
614
 
      //_Vertex(getGameObject()->getWheelSpinPoint() - Vector2f(0,0.5));
615
 
      //_Vertex(getGameObject()->getWheelSpinPoint() + Vector2f(0,0.5));
616
 
      //glEnd();      
617
 
      //glBegin(GL_LINE_STRIP);      
618
 
      //glColor3f(0,1,0);
619
 
      //_Vertex(getGameObject()->getWheelSpinPoint());
620
 
      //_Vertex(getGameObject()->getWheelSpinPoint() + getGameObject()->getWheelSpinDir());
621
 
      //glEnd();      
622
 
 
623
 
      if(randomNum(0,1) < 0.8f) {
624
 
        Particle *pNewParticle = spawnParticle(PT_DEBRIS,getGameObject()->getWheelSpinPoint(),
625
 
                                              getGameObject()->getWheelSpinDir(),4);
626
 
        pNewParticle->bFront = false;                                              
627
 
      }                                             
 
428
      Particle *pPrevDebris = _GetNewestParticle(PT_DEBRIS);
 
429
      
 
430
      /* Limit particles to one every 0.01 seconds */
 
431
      if(pPrevDebris==NULL || getGameObject()->getTime() - pPrevDebris->fSpawnTime > 0.01f) {      
 
432
        if(randomNum(0,1) < 0.8f) {
 
433
          Particle *pNewParticle = spawnParticle(PT_DEBRIS,getGameObject()->getWheelSpinPoint(),
 
434
                                                getGameObject()->getWheelSpinDir(),4);
 
435
          pNewParticle->bFront = false;                                              
 
436
        }                                             
 
437
      }
628
438
    }
629
439
  }
630
440
 
666
476
    glEnd();
667
477
  }
668
478
  
669
 
};
 
479
}
670
480