|
@@ -24,27 +24,12 @@
|
24
|
24
|
#include "Emitter.h"
|
25
|
25
|
#endif
|
26
|
26
|
|
|
27
|
+#include "global.h"
|
27
|
28
|
#include "main.h"
|
28
|
29
|
#include "Game.h"
|
29
|
30
|
#include "OpenRaider.h"
|
30
|
31
|
#include "Render.h"
|
31
|
32
|
|
32
|
|
-//! \fixme Should be changed
|
33
|
|
-#define LARA gOpenRaider->mGame->mLara
|
34
|
|
-#define gWorld gOpenRaider->mGame->mWorld
|
35
|
|
-
|
36
|
|
-// Colors
|
37
|
|
-const float BLACK[] = { 0.0f, 0.0f, 0.0f, 1.0f };
|
38
|
|
-const float DIM_WHITE[] = { 0.5f, 0.5f, 0.5f, 1.0f };
|
39
|
|
-const float WHITE[] = { 1.0f, 1.0f, 1.0f, 1.0f };
|
40
|
|
-const float RED[] = { 1.0f, 0.0f, 0.0f, 1.0f };
|
41
|
|
-const float GREEN[] = { 0.0f, 1.0f, 0.0f, 1.0f };
|
42
|
|
-const float NEXT_PURPLE[] = { 0.3f, 0.3f, 0.5f, 1.0f };
|
43
|
|
-//const float OR_BLUE[] = { 0.5f, 0.7f, 1.0f, 1.0f };
|
44
|
|
-const float PINK[] = { 1.0f, 0.0f, 1.0f, 1.0f };
|
45
|
|
-const float YELLOW[] = { 1.0f, 1.0f, 0.0f, 1.0f };
|
46
|
|
-const float CYAN[] = { 0.0f, 1.0f, 1.0f, 1.0f };
|
47
|
|
-
|
48
|
33
|
ViewVolume gViewVolume; /* View volume for frustum culling */
|
49
|
34
|
|
50
|
35
|
void Render::drawLoadScreen()
|
|
@@ -325,7 +310,7 @@ void Render::initEmitter(const char *name, unsigned int size,
|
325
|
310
|
|
326
|
311
|
void Render::ClearWorld()
|
327
|
312
|
{
|
328
|
|
- LARA = NULL;
|
|
313
|
+ gOpenRaider->mGame->mLara = NULL;
|
329
|
314
|
|
330
|
315
|
mRoomRenderList.clear();
|
331
|
316
|
|
|
@@ -599,14 +584,14 @@ void Render::Display()
|
599
|
584
|
|
600
|
585
|
index = -1;
|
601
|
586
|
|
602
|
|
- if (LARA)
|
|
587
|
+ if (gOpenRaider->mGame->mLara)
|
603
|
588
|
{
|
604
|
589
|
float yaw;
|
605
|
590
|
int sector;
|
606
|
591
|
float camOffsetH = 0.0f;
|
607
|
592
|
|
608
|
593
|
|
609
|
|
- switch (LARA->moveType)
|
|
594
|
+ switch (gOpenRaider->mGame->mLara->moveType)
|
610
|
595
|
{
|
611
|
596
|
case worldMoveType_fly:
|
612
|
597
|
case worldMoveType_noClipping:
|
|
@@ -619,12 +604,12 @@ void Render::Display()
|
619
|
604
|
break;
|
620
|
605
|
}
|
621
|
606
|
|
622
|
|
- curPos[0] = LARA->pos[0];
|
623
|
|
- curPos[1] = LARA->pos[1];
|
624
|
|
- curPos[2] = LARA->pos[2];
|
625
|
|
- yaw = LARA->angles[1];
|
|
607
|
+ curPos[0] = gOpenRaider->mGame->mLara->pos[0];
|
|
608
|
+ curPos[1] = gOpenRaider->mGame->mLara->pos[1];
|
|
609
|
+ curPos[2] = gOpenRaider->mGame->mLara->pos[2];
|
|
610
|
+ yaw = gOpenRaider->mGame->mLara->angles[1];
|
626
|
611
|
|
627
|
|
- index = LARA->room;
|
|
612
|
+ index = gOpenRaider->mGame->mLara->room;
|
628
|
613
|
|
629
|
614
|
// Mongoose 2002.08.24, New 3rd person camera hack
|
630
|
615
|
camPos[0] = curPos[0];
|
|
@@ -634,10 +619,10 @@ void Render::Display()
|
634
|
619
|
camPos[0] -= (1024.0f * sinf(yaw));
|
635
|
620
|
camPos[2] -= (1024.0f * cosf(yaw));
|
636
|
621
|
|
637
|
|
- sector = gWorld.getSector(index, camPos[0], camPos[2]);
|
|
622
|
+ sector = gOpenRaider->mGame->mWorld.getSector(index, camPos[0], camPos[2]);
|
638
|
623
|
|
639
|
624
|
// Handle camera out of world
|
640
|
|
- if (sector < 0 || gWorld.isWall(index, sector))
|
|
625
|
+ if (sector < 0 || gOpenRaider->mGame->mWorld.isWall(index, sector))
|
641
|
626
|
{
|
642
|
627
|
camPos[0] = curPos[0] + (64.0f * sinf(yaw));
|
643
|
628
|
camPos[1] -= 64.0f;
|
|
@@ -663,33 +648,33 @@ void Render::Display()
|
663
|
648
|
updateViewVolume();
|
664
|
649
|
|
665
|
650
|
// Let's see the LoS -- should be event controled
|
666
|
|
- if (LARA)
|
|
651
|
+ if (gOpenRaider->mGame->mLara)
|
667
|
652
|
{
|
668
|
|
- // SkeletalModel *mdl = (SkeletalModel *)LARA->tmpHook;
|
|
653
|
+ // SkeletalModel *mdl = (SkeletalModel *)gOpenRaider->mGame->mLara->tmpHook;
|
669
|
654
|
|
670
|
655
|
// Draw in solid colors
|
671
|
656
|
glDisable(GL_TEXTURE_2D);
|
672
|
657
|
glDisable(GL_CULL_FACE);
|
673
|
658
|
|
674
|
|
- if (LARA->state == 64) // eWeaponFire
|
|
659
|
+ if (gOpenRaider->mGame->mLara->state == 64) // eWeaponFire
|
675
|
660
|
{
|
676
|
661
|
vec3_t u, v; //, s, t;
|
677
|
662
|
|
678
|
|
- // Center of LARA
|
|
663
|
+ // Center of gOpenRaider->mGame->mLara
|
679
|
664
|
u[0] = curPos[0];
|
680
|
665
|
u[1] = curPos[1] - 512.0f;
|
681
|
666
|
u[2] = curPos[2];
|
682
|
667
|
|
683
|
|
- // Location LARA is aiming at? ( Not finished yet )
|
684
|
|
- v[0] = u[0] + (9000.0f * sinf(LARA->angles[1]));
|
685
|
|
- v[1] = u[1] + (9000.0f * sinf(LARA->angles[2]));
|
686
|
|
- v[2] = u[2] + (9000.0f * cosf(LARA->angles[1]));
|
|
668
|
+ // Location gOpenRaider->mGame->mLara is aiming at? ( Not finished yet )
|
|
669
|
+ v[0] = u[0] + (9000.0f * sinf(gOpenRaider->mGame->mLara->angles[1]));
|
|
670
|
+ v[1] = u[1] + (9000.0f * sinf(gOpenRaider->mGame->mLara->angles[2]));
|
|
671
|
+ v[2] = u[2] + (9000.0f * cosf(gOpenRaider->mGame->mLara->angles[1]));
|
687
|
672
|
|
688
|
673
|
// Test tracing of aim
|
689
|
674
|
renderTrace(0, u, v); // v = target
|
690
|
675
|
}
|
691
|
676
|
|
692
|
|
- entity_t *route = LARA->master;
|
|
677
|
+ entity_t *route = gOpenRaider->mGame->mLara->master;
|
693
|
678
|
|
694
|
679
|
while (route)
|
695
|
680
|
{
|
|
@@ -733,14 +718,14 @@ void Render::Display()
|
733
|
718
|
{
|
734
|
719
|
entity_t *e;
|
735
|
720
|
std::vector<entity_t *> entityRenderList;
|
736
|
|
- std::vector<entity_t *> *entities = gWorld.getEntities();
|
|
721
|
+ std::vector<entity_t *> *entities = gOpenRaider->mGame->mWorld.getEntities();
|
737
|
722
|
|
738
|
723
|
for (unsigned int i = 0; i < entities->size(); i++)
|
739
|
724
|
{
|
740
|
725
|
e = entities->at(i);
|
741
|
726
|
|
742
|
727
|
// Mongoose 2002.03.26, Don't show lara to it's own player
|
743
|
|
- if (!e || e == LARA)
|
|
728
|
+ if (!e || e == gOpenRaider->mGame->mLara)
|
744
|
729
|
{
|
745
|
730
|
continue;
|
746
|
731
|
}
|
|
@@ -979,7 +964,7 @@ void Render::buildRoomRenderList(RenderRoom *rRoom)
|
979
|
964
|
|
980
|
965
|
void Render::drawSkyMesh(float scale)
|
981
|
966
|
{
|
982
|
|
- skeletal_model_t *model = gWorld.getModel(mSkyMesh);
|
|
967
|
+ skeletal_model_t *model = gOpenRaider->mGame->mWorld.getModel(mSkyMesh);
|
983
|
968
|
|
984
|
969
|
|
985
|
970
|
if (!model)
|
|
@@ -996,7 +981,7 @@ void Render::drawSkyMesh(float scale)
|
996
|
981
|
glTranslated(0.0, 1000.0, 0.0);
|
997
|
982
|
glScaled(scale, scale, scale);
|
998
|
983
|
//drawModel(model);
|
999
|
|
- //drawModelMesh(gWorld.getMesh(mSkyMesh), );
|
|
984
|
+ //drawModelMesh(gOpenRaider->mGame->mWorld.getMesh(mSkyMesh), );
|
1000
|
985
|
glPopMatrix();
|
1001
|
986
|
glEnable(GL_DEPTH_TEST);
|
1002
|
987
|
}
|
|
@@ -1012,15 +997,15 @@ void Render::drawObjects()
|
1012
|
997
|
|
1013
|
998
|
|
1014
|
999
|
// Draw lara or other player model ( move to entity rendering method )
|
1015
|
|
- if (mFlags & Render::fViewModel && LARA && LARA->tmpHook)
|
|
1000
|
+ if (mFlags & Render::fViewModel && gOpenRaider->mGame->mLara && gOpenRaider->mGame->mLara->tmpHook)
|
1016
|
1001
|
{
|
1017
|
|
- SkeletalModel *mdl = static_cast<SkeletalModel *>(LARA->tmpHook);
|
|
1002
|
+ SkeletalModel *mdl = static_cast<SkeletalModel *>(gOpenRaider->mGame->mLara->tmpHook);
|
1018
|
1003
|
|
1019
|
1004
|
if (mdl)
|
1020
|
1005
|
{
|
1021
|
1006
|
|
1022
|
1007
|
// Mongoose 2002.03.22, Test 'idle' aniamtions
|
1023
|
|
- if (!LARA->moving)
|
|
1008
|
+ if (!gOpenRaider->mGame->mLara->moving)
|
1024
|
1009
|
{
|
1025
|
1010
|
frame = mdl->getIdleAnimation();
|
1026
|
1011
|
|
|
@@ -1051,11 +1036,11 @@ void Render::drawObjects()
|
1051
|
1036
|
glRotated(gOpenRaider->mGame->mCamera->getYaw(), 0, 1, 0);
|
1052
|
1037
|
glTranslated(0, 500, 1200);
|
1053
|
1038
|
#else
|
1054
|
|
- glTranslated(LARA->pos[0], LARA->pos[1], LARA->pos[2]);
|
|
1039
|
+ glTranslated(gOpenRaider->mGame->mLara->pos[0], gOpenRaider->mGame->mLara->pos[1], gOpenRaider->mGame->mLara->pos[2]);
|
1055
|
1040
|
glRotated(gOpenRaider->mGame->mCamera->getYaw(), 0, 1, 0);
|
1056
|
1041
|
#endif
|
1057
|
1042
|
|
1058
|
|
- drawModel(static_cast<SkeletalModel *>(LARA->tmpHook));
|
|
1043
|
+ drawModel(static_cast<SkeletalModel *>(gOpenRaider->mGame->mLara->tmpHook));
|
1059
|
1044
|
glPopMatrix();
|
1060
|
1045
|
}
|
1061
|
1046
|
|
|
@@ -1064,7 +1049,7 @@ void Render::drawObjects()
|
1064
|
1049
|
{
|
1065
|
1050
|
std::vector<sprite_seq_t *> *sprites;
|
1066
|
1051
|
|
1067
|
|
- sprites = gWorld.getSprites();
|
|
1052
|
+ sprites = gOpenRaider->mGame->mWorld.getSprites();
|
1068
|
1053
|
|
1069
|
1054
|
for (unsigned int i = 0; i < sprites->size(); i++)
|
1070
|
1055
|
{
|
|
@@ -1184,7 +1169,7 @@ void Render::drawModel(SkeletalModel *model)
|
1184
|
1169
|
|
1185
|
1170
|
if (tag2)
|
1186
|
1171
|
{
|
1187
|
|
- drawModelMesh(gWorld.getMesh(tag2->mesh), Render::skeletalMesh);
|
|
1172
|
+ drawModelMesh(gOpenRaider->mGame->mWorld.getMesh(tag2->mesh), Render::skeletalMesh);
|
1188
|
1173
|
}
|
1189
|
1174
|
}
|
1190
|
1175
|
}
|
|
@@ -1227,19 +1212,19 @@ void Render::drawModel(SkeletalModel *model)
|
1227
|
1212
|
{
|
1228
|
1213
|
glPushMatrix();
|
1229
|
1214
|
glTranslatef(mdl->ponyOff2, 0.0, 0.0);
|
1230
|
|
- drawModelMesh(gWorld.getMesh(mdl->ponytailMeshId + i),
|
|
1215
|
+ drawModelMesh(gOpenRaider->mGame->mWorld.getMesh(mdl->ponytailMeshId + i),
|
1231
|
1216
|
Render::skeletalMesh);
|
1232
|
1217
|
glPopMatrix();
|
1233
|
1218
|
|
1234
|
1219
|
glPushMatrix();
|
1235
|
1220
|
glTranslatef(-mdl->ponyOff2, 0.0, 0.0);
|
1236
|
|
- drawModelMesh(gWorld.getMesh(mdl->ponytailMeshId + i),
|
|
1221
|
+ drawModelMesh(gOpenRaider->mGame->mWorld.getMesh(mdl->ponytailMeshId + i),
|
1237
|
1222
|
Render::skeletalMesh);
|
1238
|
1223
|
glPopMatrix();
|
1239
|
1224
|
}
|
1240
|
1225
|
else
|
1241
|
1226
|
{
|
1242
|
|
- drawModelMesh(gWorld.getMesh(mdl->ponytailMeshId + i),
|
|
1227
|
+ drawModelMesh(gOpenRaider->mGame->mWorld.getMesh(mdl->ponytailMeshId + i),
|
1243
|
1228
|
Render::skeletalMesh);
|
1244
|
1229
|
}
|
1245
|
1230
|
}
|
|
@@ -1253,7 +1238,7 @@ void Render::drawModel(SkeletalModel *model)
|
1253
|
1238
|
}
|
1254
|
1239
|
}
|
1255
|
1240
|
|
1256
|
|
- drawModelMesh(gWorld.getMesh(tag->mesh), Render::skeletalMesh);
|
|
1241
|
+ drawModelMesh(gOpenRaider->mGame->mWorld.getMesh(tag->mesh), Render::skeletalMesh);
|
1257
|
1242
|
}
|
1258
|
1243
|
|
1259
|
1244
|
// Cycle frames ( cheap hack from old ent state based system )
|
|
@@ -1635,7 +1620,7 @@ void Render::drawRoomModel(static_model_t *mesh)
|
1635
|
1620
|
if (!mesh)
|
1636
|
1621
|
return;
|
1637
|
1622
|
|
1638
|
|
- r_mesh = gWorld.getMesh(mesh->index);
|
|
1623
|
+ r_mesh = gOpenRaider->mGame->mWorld.getMesh(mesh->index);
|
1639
|
1624
|
|
1640
|
1625
|
if (!r_mesh)
|
1641
|
1626
|
return;
|
|
@@ -1885,7 +1870,7 @@ void Render::ViewModel(entity_t *ent, int index)
|
1885
|
1870
|
return;
|
1886
|
1871
|
}
|
1887
|
1872
|
|
1888
|
|
- model = gWorld.getModel(index);
|
|
1873
|
+ model = gOpenRaider->mGame->mWorld.getModel(index);
|
1889
|
1874
|
|
1890
|
1875
|
if (model)
|
1891
|
1876
|
{
|