@@ -142,31 +142,32 @@ glm::vec3 RadarRenderer::getTankColor(const Player* player)
142
142
return color;
143
143
}
144
144
145
- void RadarRenderer::drawTank (const glm::vec3 &pos, const Player* player, bool useSquares)
145
+ void RadarRenderer::drawTank (const glm::vec3 &pos,
146
+ float myAngle,
147
+ float tankSize, float flagSize,
148
+ const Player* player, bool useSquares)
146
149
{
147
150
auto flag = player->getFlag ();
148
151
149
152
// my flag
150
153
if (flag != Flags::Null)
151
154
{
152
155
glColor (flag->getRadarColor ());
153
- drawFlagOnTank ();
156
+ glPushMatrix ();
157
+
158
+ // align it to the screen axes
159
+ glRotatef (float (myAngle * 180.0 / M_PI), 0 .0f , 0 .0f , 1 .0f );
160
+
161
+ glScalef (flagSize, flagSize, 0 );
162
+ DRAWER.cross ();
163
+
164
+ glPopMatrix ();
154
165
}
155
166
156
- // 'ps' is pixel scale, setup in render()
157
- const float tankRadius = BZDBCache::tankRadius;
158
- float minSize = 1 .5f + (ps * BZDBCache::radarTankPixels);
159
- GLfloat size;
160
- if (tankRadius < minSize)
161
- size = minSize;
162
- else
163
- size = tankRadius;
164
167
if (pos[2 ] < 0 .0f )
165
- size = 0 .5f ;
168
+ tankSize = 0 .5f ;
166
169
167
170
// NOTE: myTank was checked in render()
168
- const float myAngle = LocalPlayer::getMyTank ()->getAngle ();
169
-
170
171
// draw the tank
171
172
if (!useSquares)
172
173
{
@@ -184,17 +185,17 @@ void RadarRenderer::drawTank(const glm::vec3 &pos, const Player* player, bool us
184
185
if (useSquares)
185
186
{
186
187
glPushMatrix ();
187
- glScalef (size, size , 0 .0f );
188
+ glScalef (tankSize, tankSize , 0 .0f );
188
189
DRAWER.simmetricRect ();
189
190
glPopMatrix ();
190
191
}
191
192
192
193
// adjust with height box size
193
194
const float boxHeight = BZDB.eval (StateDatabase::BZDB_BOXHEIGHT);
194
- size = size * ( 1 .0f + ( 0 .5f * ( pos[2 ] / boxHeight))) ;
195
+ tankSize *= 1 .0f + 0 .5f * pos[2 ] / boxHeight;
195
196
196
197
// draw the height box
197
- glScalef (size, size , 0 .0f );
198
+ glScalef (tankSize, tankSize , 0 .0f );
198
199
DRAWER.diamondLoop ();
199
200
}
200
201
@@ -243,23 +244,6 @@ void RadarRenderer::drawFlag(const glm::vec3 &pos)
243
244
glPopMatrix ();
244
245
}
245
246
246
- void RadarRenderer::drawFlagOnTank ()
247
- {
248
- glPushMatrix ();
249
-
250
- // align it to the screen axes
251
- const float angle = LocalPlayer::getMyTank ()->getAngle ();
252
- glRotatef (float (angle * 180.0 / M_PI), 0 .0f , 0 .0f , 1 .0f );
253
-
254
- float tankRadius = BZDBCache::tankRadius;
255
- GLfloat s = 2 .5f * tankRadius > 4 .0f * ps ? 2 .5f * tankRadius : 4 .0f * ps;
256
- glScalef (s, s, 0 );
257
- DRAWER.cross ();
258
-
259
- glPopMatrix ();
260
- }
261
-
262
-
263
247
void RadarRenderer::renderFrame (SceneRenderer& renderer)
264
248
{
265
249
const MainWindow& window = renderer.getWindow ();
@@ -550,6 +534,11 @@ void RadarRenderer::render(SceneRenderer& renderer, bool blank, bool observer)
550
534
}
551
535
}
552
536
537
+ const float tankRadius = BZDBCache::tankRadius;
538
+ // 'ps' is pixel scale, setup in render()
539
+ const float minSize = 1 .5f + ps * BZDBCache::radarTankPixels;
540
+ const float tankSize = std::max (minSize, tankRadius);
541
+ const float flagSize = std::max (2 .5f * tankRadius, 4 .0f * ps);
553
542
// draw other tanks (and any flags on them)
554
543
// note about flag drawing. each line segment is drawn twice
555
544
// (once in each direction); this degrades the antialiasing
@@ -576,9 +565,9 @@ void RadarRenderer::render(SceneRenderer& renderer, bool blank, bool observer)
576
565
glTranslatef (position[0 ], position[1 ], 0 .0f );
577
566
578
567
if (!observer)
579
- drawTank (position, player, true );
568
+ drawTank (position, myAngle, tankSize, flagSize, player, true );
580
569
else
581
- drawTank (position, player, !useTankModels);
570
+ drawTank (position, myAngle, tankSize, flagSize, player, !useTankModels);
582
571
583
572
glPopMatrix ();
584
573
}
@@ -682,7 +671,7 @@ void RadarRenderer::render(SceneRenderer& renderer, bool blank, bool observer)
682
671
glPushMatrix ();
683
672
684
673
// my tank
685
- drawTank (myPos, myTank, !useTankModels);
674
+ drawTank (myPos, myAngle, tankSize, flagSize, myTank, !useTankModels);
686
675
687
676
glPopMatrix ();
688
677
0 commit comments