Browse Source

Render is now also service

Thomas Buck 10 years ago
parent
commit
12b203507b
6 changed files with 51 additions and 47 deletions
  1. 0
    1
      include/Game.h
  2. 3
    0
      include/main.h
  3. 33
    41
      src/Game.cpp
  4. 1
    1
      src/OpenRaider.cpp
  5. 4
    4
      src/Render.cpp
  6. 10
    0
      src/main.cpp

+ 0
- 1
include/Game.h View File

42
 
42
 
43
     //! \fixme should be private
43
     //! \fixme should be private
44
     entity_t *mLara;
44
     entity_t *mLara;
45
-    Render *mRender;
46
 
45
 
47
 private:
46
 private:
48
 
47
 

+ 3
- 0
include/main.h View File

12
 #include "Game.h"
12
 #include "Game.h"
13
 #include "Menu.h"
13
 #include "Menu.h"
14
 #include "OpenRaider.h"
14
 #include "OpenRaider.h"
15
+#include "Render.h"
15
 #include "Sound.h"
16
 #include "Sound.h"
16
 #include "Window.h"
17
 #include "Window.h"
17
 #include "World.h"
18
 #include "World.h"
26
 
27
 
27
 OpenRaider &getOpenRaider();
28
 OpenRaider &getOpenRaider();
28
 
29
 
30
+Render &getRender();
31
+
29
 Sound &getSound();
32
 Sound &getSound();
30
 
33
 
31
 Window &getWindow();
34
 Window &getWindow();

+ 33
- 41
src/Game.cpp View File

46
     mTextureStart = 0;
46
     mTextureStart = 0;
47
     mTextureLevelOffset = 0;
47
     mTextureLevelOffset = 0;
48
     mTextureOffset = 0;
48
     mTextureOffset = 0;
49
-
50
-    mRender = NULL;
51
 }
49
 }
52
 
50
 
53
 Game::~Game() {
51
 Game::~Game() {
54
     destroy();
52
     destroy();
55
-
56
-    if (mRender)
57
-        delete mRender;
58
 }
53
 }
59
 
54
 
60
 int Game::initialize() {
55
 int Game::initialize() {
61
-    // Set up Renderer
62
-    mRender = new Render();
63
-    mRender->initTextures(getOpenRaider().mDataDir, &mTextureStart, &mTextureLevelOffset);
64
-
65
     // Enable Renderer
56
     // Enable Renderer
66
-    mRender->setMode(Render::modeLoadScreen);
57
+    getRender().initTextures(getOpenRaider().mDataDir, &mTextureStart, &mTextureLevelOffset);
58
+    getRender().setMode(Render::modeLoadScreen);
67
 
59
 
68
     // Enable World Hopping
60
     // Enable World Hopping
69
     getWorld().setFlag(World::fEnableHopping);
61
     getWorld().setFlag(World::fEnableHopping);
76
         delete [] mName;
68
         delete [] mName;
77
 
69
 
78
     mLoaded = false;
70
     mLoaded = false;
79
-    mRender->setMode(Render::modeDisabled);
71
+    getRender().setMode(Render::modeDisabled);
80
 
72
 
81
     getWorld().destroy();
73
     getWorld().destroy();
82
-    mRender->ClearWorld();
74
+    getRender().ClearWorld();
83
     getSound().clear(); // Remove all previously loaded sounds
75
     getSound().clear(); // Remove all previously loaded sounds
84
 }
76
 }
85
 
77
 
134
     }
126
     }
135
 
127
 
136
     mLoaded = true;
128
     mLoaded = true;
137
-    mRender->setMode(Render::modeVertexLight);
129
+    getRender().setMode(Render::modeVertexLight);
138
 
130
 
139
     return 0;
131
     return 0;
140
 }
132
 }
178
 }
170
 }
179
 
171
 
180
 void Game::display() {
172
 void Game::display() {
181
-    mRender->Display();
173
+    getRender().Display();
182
 }
174
 }
183
 
175
 
184
 int Game::command(std::vector<char *> *args) {
176
 int Game::command(std::vector<char *> *args) {
193
             char *mode = args->at(1);
185
             char *mode = args->at(1);
194
             if (strcmp(mode, "wireframe") == 0) {
186
             if (strcmp(mode, "wireframe") == 0) {
195
                 if (mLoaded) {
187
                 if (mLoaded) {
196
-                    mRender->setMode(Render::modeWireframe);
188
+                    getRender().setMode(Render::modeWireframe);
197
                     getConsole().print("Wireframe mode");
189
                     getConsole().print("Wireframe mode");
198
                 } else {
190
                 } else {
199
                     getConsole().print("Load a level to set this mode!");
191
                     getConsole().print("Load a level to set this mode!");
201
                 }
193
                 }
202
             } else if (strcmp(mode, "solid") == 0) {
194
             } else if (strcmp(mode, "solid") == 0) {
203
                 if (mLoaded) {
195
                 if (mLoaded) {
204
-                    mRender->setMode(Render::modeSolid);
196
+                    getRender().setMode(Render::modeSolid);
205
                     getConsole().print("Solid mode");
197
                     getConsole().print("Solid mode");
206
                 } else {
198
                 } else {
207
                     getConsole().print("Load a level to set this mode!");
199
                     getConsole().print("Load a level to set this mode!");
209
                 }
201
                 }
210
             } else if (strcmp(mode, "texture") == 0) {
202
             } else if (strcmp(mode, "texture") == 0) {
211
                 if (mLoaded) {
203
                 if (mLoaded) {
212
-                    mRender->setMode(Render::modeTexture);
204
+                    getRender().setMode(Render::modeTexture);
213
                     getConsole().print("Texture mode");
205
                     getConsole().print("Texture mode");
214
                 } else {
206
                 } else {
215
                     getConsole().print("Load a level to set this mode!");
207
                     getConsole().print("Load a level to set this mode!");
217
                 }
209
                 }
218
             } else if (strcmp(mode, "vertexlight") == 0) {
210
             } else if (strcmp(mode, "vertexlight") == 0) {
219
                 if (mLoaded) {
211
                 if (mLoaded) {
220
-                    mRender->setMode(Render::modeVertexLight);
212
+                    getRender().setMode(Render::modeVertexLight);
221
                     getConsole().print("Vertexlight mode");
213
                     getConsole().print("Vertexlight mode");
222
                 } else {
214
                 } else {
223
                     getConsole().print("Load a level to set this mode!");
215
                     getConsole().print("Load a level to set this mode!");
224
                     return -5;
216
                     return -5;
225
                 }
217
                 }
226
             } else if (strcmp(mode, "titlescreen") == 0) {
218
             } else if (strcmp(mode, "titlescreen") == 0) {
227
-                mRender->setMode(Render::modeLoadScreen);
219
+                getRender().setMode(Render::modeLoadScreen);
228
                 getConsole().print("Titlescreen mode");
220
                 getConsole().print("Titlescreen mode");
229
             } else {
221
             } else {
230
                 getConsole().print("Invalid use of mode command (%s)!", mode);
222
                 getConsole().print("Invalid use of mode command (%s)!", mode);
271
             char c = args->at(1)[0];
263
             char c = args->at(1)[0];
272
             if (c == 'n') {
264
             if (c == 'n') {
273
                 // Step all skeletal models to their next animation
265
                 // Step all skeletal models to their next animation
274
-                if (mRender->getFlags() & Render::fAnimateAllModels) {
275
-                    for (unsigned int i = 0; i < mRender->mModels.size(); i++) {
276
-                        SkeletalModel *m = mRender->mModels[i];
266
+                if (getRender().getFlags() & Render::fAnimateAllModels) {
267
+                    for (unsigned int i = 0; i < getRender().mModels.size(); i++) {
268
+                        SkeletalModel *m = getRender().mModels[i];
277
                         if (m->getAnimation() < ((int)m->model->animation.size() - 1))
269
                         if (m->getAnimation() < ((int)m->model->animation.size() - 1))
278
                             m->setAnimation(m->getAnimation() + 1);
270
                             m->setAnimation(m->getAnimation() + 1);
279
                         else
271
                         else
285
                 }
277
                 }
286
             } else if (c == 'p') {
278
             } else if (c == 'p') {
287
                 // Step all skeletal models to their previous animation
279
                 // Step all skeletal models to their previous animation
288
-                if (mRender->getFlags() & Render::fAnimateAllModels) {
289
-                    for (unsigned int i = 0; i < mRender->mModels.size(); i++) {
290
-                        SkeletalModel *m = mRender->mModels[i];
280
+                if (getRender().getFlags() & Render::fAnimateAllModels) {
281
+                    for (unsigned int i = 0; i < getRender().mModels.size(); i++) {
282
+                        SkeletalModel *m = getRender().mModels[i];
291
                         if (m->getAnimation() > 0)
283
                         if (m->getAnimation() > 0)
292
                             m->setAnimation(m->getAnimation() - 1);
284
                             m->setAnimation(m->getAnimation() - 1);
293
                         else
285
                         else
305
                     return -12;
297
                     return -12;
306
                 }
298
                 }
307
                 if (b)
299
                 if (b)
308
-                    mRender->setFlags(Render::fAnimateAllModels);
300
+                    getRender().setFlags(Render::fAnimateAllModels);
309
                 else
301
                 else
310
-                    mRender->clearFlags(Render::fAnimateAllModels);
302
+                    getRender().clearFlags(Render::fAnimateAllModels);
311
                 getConsole().print(b ? "Animating all models" : "No longer animating all models");
303
                 getConsole().print(b ? "Animating all models" : "No longer animating all models");
312
             }
304
             }
313
         } else {
305
         } else {
364
                 return -15;
356
                 return -15;
365
             }
357
             }
366
             if (b)
358
             if (b)
367
-                mRender->setFlags(Render::fGL_Lights);
359
+                getRender().setFlags(Render::fGL_Lights);
368
             else
360
             else
369
-                mRender->clearFlags(Render::fGL_Lights);
361
+                getRender().clearFlags(Render::fGL_Lights);
370
             getConsole().print("GL-Lights are now %s", b ? "on" : "off");
362
             getConsole().print("GL-Lights are now %s", b ? "on" : "off");
371
         } else {
363
         } else {
372
             getConsole().print("Invalid use of game-light-command!");
364
             getConsole().print("Invalid use of game-light-command!");
380
                 return -17;
372
                 return -17;
381
             }
373
             }
382
             if (b)
374
             if (b)
383
-                mRender->setFlags(Render::fFog);
375
+                getRender().setFlags(Render::fFog);
384
             else
376
             else
385
-                mRender->clearFlags(Render::fFog);
377
+                getRender().clearFlags(Render::fFog);
386
             getConsole().print("Fog is now %s", b ? "on" : "off");
378
             getConsole().print("Fog is now %s", b ? "on" : "off");
387
         } else {
379
         } else {
388
             getConsole().print("Invalid use of game-fog-command!");
380
             getConsole().print("Invalid use of game-fog-command!");
459
         mTombRaider.Texture(i, &image, &bumpmap);
451
         mTombRaider.Texture(i, &image, &bumpmap);
460
 
452
 
461
         // Overwrite any previous level textures on load
453
         // Overwrite any previous level textures on load
462
-        mRender->loadTexture(image, 256, 256, mTextureLevelOffset + i);
454
+        getRender().loadTexture(image, 256, 256, mTextureLevelOffset + i);
463
 
455
 
464
 #ifdef MULTITEXTURE
456
 #ifdef MULTITEXTURE
465
         gMapTex2Bump[mTextureLevelOffset + i] = -1;
457
         gMapTex2Bump[mTextureLevelOffset + i] = -1;
471
             gMapTex2Bump[mTextureLevelOffset + i] = mTextureLevelOffset + i +
463
             gMapTex2Bump[mTextureLevelOffset + i] = mTextureLevelOffset + i +
472
                     mTombRaider.NumTextures();
464
                     mTombRaider.NumTextures();
473
 #endif
465
 #endif
474
-            mRender->loadTexture(bumpmap, 256, 256, mTextureLevelOffset + i +
466
+            getRender().loadTexture(bumpmap, 256, 256, mTextureLevelOffset + i +
475
                     mTombRaider.NumTextures());
467
                     mTombRaider.NumTextures());
476
         }
468
         }
477
 
469
 
754
     thing->animate = false;
746
     thing->animate = false;
755
 
747
 
756
     sModel = new SkeletalModel();
748
     sModel = new SkeletalModel();
757
-    mRender->addSkeletalModel(sModel);
749
+    getRender().addSkeletalModel(sModel);
758
     thing->tmpHook = sModel; // temp hack to keep a running version during refactoring
750
     thing->tmpHook = sModel; // temp hack to keep a running version during refactoring
759
 
751
 
760
     if (mTombRaider.Engine() == TR_VERSION_1)
752
     if (mTombRaider.Engine() == TR_VERSION_1)
773
     //! \fixme Check here and see if we already have one for object_id later
765
     //! \fixme Check here and see if we already have one for object_id later
774
     // if (getWorld().isCachedSkeletalModel(moveable[index].object_id))
766
     // if (getWorld().isCachedSkeletalModel(moveable[index].object_id))
775
     // {
767
     // {
776
-    //   thing->modelId = mRender->add(sModel);
768
+    //   thing->modelId = getRender().add(sModel);
777
     //   return;
769
     //   return;
778
     // }
770
     // }
779
 
771
 
901
                         r_model->ponytail[1] -= 32;
893
                         r_model->ponytail[1] -= 32;
902
                     }
894
                     }
903
 
895
 
904
-                    mRender->setFlags(Render::fRenderPonytail);
896
+                    getRender().setFlags(Render::fRenderPonytail);
905
                     getConsole().print("Found known ponytail");
897
                     getConsole().print("Found known ponytail");
906
                 }
898
                 }
907
                 break; // ?
899
                 break; // ?
923
                     r_model->ponyOff = 40;
915
                     r_model->ponyOff = 40;
924
                     r_model->ponyOff2 = 0;
916
                     r_model->ponyOff2 = 0;
925
 
917
 
926
-                    mRender->setFlags(Render::fRenderPonytail);
918
+                    getRender().setFlags(Render::fRenderPonytail);
927
                     getConsole().print("Found ponytail?");
919
                     getConsole().print("Found ponytail?");
928
                 }
920
                 }
929
                 break;
921
                 break;
1105
 
1097
 
1106
     if (i == skyMesh)
1098
     if (i == skyMesh)
1107
     {
1099
     {
1108
-        mRender->setSkyMesh(i, //moveable[i].starting_mesh,
1100
+        getRender().setSkyMesh(i, //moveable[i].starting_mesh,
1109
                 (mTombRaider.Engine() == TR_VERSION_2));
1101
                 (mTombRaider.Engine() == TR_VERSION_2));
1110
     }
1102
     }
1111
 
1103
 
1152
         gColorTextureHACK.push_back(colorI);
1144
         gColorTextureHACK.push_back(colorI);
1153
         r_tri->texture = mTextureOffset + gColorTextureHACK.size();
1145
         r_tri->texture = mTextureOffset + gColorTextureHACK.size();
1154
 
1146
 
1155
-        mRender->loadTexture(Texture::generateColorTexture(color, 32, 32),
1147
+        getRender().loadTexture(Texture::generateColorTexture(color, 32, 32),
1156
                 32, 32,
1148
                 32, 32,
1157
                 r_tri->texture);
1149
                 r_tri->texture);
1158
 
1150
 
1393
         {
1385
         {
1394
             getConsole().print("WARNING: Handling invalid vertex array in room");
1386
             getConsole().print("WARNING: Handling invalid vertex array in room");
1395
             getWorld().addRoom(0x0);
1387
             getWorld().addRoom(0x0);
1396
-            mRender->addRoom(0x0);
1388
+            getRender().addRoom(0x0);
1397
 
1389
 
1398
             //printf("x");
1390
             //printf("x");
1399
             //fflush(stdout);
1391
             //fflush(stdout);
1936
         getWorld().addRoom(r_mesh);
1928
         getWorld().addRoom(r_mesh);
1937
 
1929
 
1938
         rRoom->room = r_mesh;
1930
         rRoom->room = r_mesh;
1939
-        mRender->addRoom(rRoom);
1931
+        getRender().addRoom(rRoom);
1940
 
1932
 
1941
         //printf(".");
1933
         //printf(".");
1942
         //fflush(stdout);
1934
         //fflush(stdout);

+ 1
- 1
src/OpenRaider.cpp View File

173
             frame();
173
             frame();
174
             frame(); // Double buffered
174
             frame(); // Double buffered
175
         }
175
         }
176
-        getGame().mRender->screenShot(filename);
176
+        getRender().screenShot(filename);
177
         if (!console) {
177
         if (!console) {
178
             getConsole().setVisible(true);
178
             getConsole().setVisible(true);
179
             if (menu)
179
             if (menu)

+ 4
- 4
src/Render.cpp View File

36
     if (!a || !b)
36
     if (!a || !b)
37
         return false; // error really
37
         return false; // error really
38
 
38
 
39
-    distA = getGame().mRender->mViewVolume.getDistToSphereFromNear(a->pos[0],
39
+    distA = getRender().mViewVolume.getDistToSphereFromNear(a->pos[0],
40
             a->pos[1],
40
             a->pos[1],
41
             a->pos[2],
41
             a->pos[2],
42
             1.0f);
42
             1.0f);
43
-    distB = getGame().mRender->mViewVolume.getDistToSphereFromNear(b->pos[0],
43
+    distB = getRender().mViewVolume.getDistToSphereFromNear(b->pos[0],
44
             b->pos[1],
44
             b->pos[1],
45
             b->pos[2],
45
             b->pos[2],
46
             1.0f);
46
             1.0f);
57
     if (!a || !b)
57
     if (!a || !b)
58
         return false; // error really
58
         return false; // error really
59
 
59
 
60
-    distA = getGame().mRender->mViewVolume.getDistToSphereFromNear(a->pos[0],
60
+    distA = getRender().mViewVolume.getDistToSphereFromNear(a->pos[0],
61
             a->pos[1],
61
             a->pos[1],
62
             a->pos[2],
62
             a->pos[2],
63
             128.0f);
63
             128.0f);
64
-    distB = getGame().mRender->mViewVolume.getDistToSphereFromNear(b->pos[0],
64
+    distB = getRender().mViewVolume.getDistToSphereFromNear(b->pos[0],
65
             b->pos[1],
65
             b->pos[1],
66
             b->pos[2],
66
             b->pos[2],
67
             128.0f);
67
             128.0f);

+ 10
- 0
src/main.cpp View File

22
 Game *gGame = NULL;
22
 Game *gGame = NULL;
23
 Menu *gMenu = NULL;
23
 Menu *gMenu = NULL;
24
 OpenRaider *gOpenRaider = NULL;
24
 OpenRaider *gOpenRaider = NULL;
25
+Render *gRender = NULL;
25
 Sound *gSound = NULL;
26
 Sound *gSound = NULL;
26
 Window *gWindow = NULL;
27
 Window *gWindow = NULL;
27
 World *gWorld = NULL;
28
 World *gWorld = NULL;
51
     return *gOpenRaider;
52
     return *gOpenRaider;
52
 }
53
 }
53
 
54
 
55
+Render &getRender() {
56
+    assert(gRender != NULL);
57
+    return *gRender;
58
+}
59
+
54
 Sound &getSound() {
60
 Sound &getSound() {
55
     assert(gSound != NULL);
61
     assert(gSound != NULL);
56
     return *gSound;
62
     return *gSound;
79
     if (gWorld)
85
     if (gWorld)
80
         delete gWorld;
86
         delete gWorld;
81
 
87
 
88
+    if (gRender)
89
+        delete gRender;
90
+
82
     if (gCamera)
91
     if (gCamera)
83
         delete gCamera;
92
         delete gCamera;
84
 
93
 
139
     gSound = new SoundAL();
148
     gSound = new SoundAL();
140
     gWorld = new World();
149
     gWorld = new World();
141
     gCamera = new Camera();
150
     gCamera = new Camera();
151
+    gRender = new Render();
142
     gConsole = new Console();
152
     gConsole = new Console();
143
     gMenu = new Menu();
153
     gMenu = new Menu();
144
     gGame = new Game();
154
     gGame = new Game();

Loading…
Cancel
Save