瀏覽代碼

Camera now also service

Thomas Buck 10 年之前
父節點
當前提交
237a34b03d
共有 6 個文件被更改,包括 30 次插入29 次删除
  1. 0
    1
      include/Game.h
  2. 3
    0
      include/main.h
  3. 2
    2
      src/Camera.cpp
  4. 7
    18
      src/Game.cpp
  5. 8
    8
      src/Render.cpp
  6. 10
    0
      src/main.cpp

+ 0
- 1
include/Game.h 查看文件

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

+ 3
- 0
include/main.h 查看文件

7
 #ifndef _MAIN_H_
7
 #ifndef _MAIN_H_
8
 #define _MAIN_H_
8
 #define _MAIN_H_
9
 
9
 
10
+#include "Camera.h"
10
 #include "Console.h"
11
 #include "Console.h"
11
 #include "Game.h"
12
 #include "Game.h"
12
 #include "Menu.h"
13
 #include "Menu.h"
15
 #include "Window.h"
16
 #include "Window.h"
16
 #include "World.h"
17
 #include "World.h"
17
 
18
 
19
+Camera &getCamera();
20
+
18
 Console &getConsole();
21
 Console &getConsole();
19
 
22
 
20
 Game &getGame();
23
 Game &getGame();

+ 2
- 2
src/Camera.cpp 查看文件

14
 Camera::Camera() {
14
 Camera::Camera() {
15
     mFlags = 0;
15
     mFlags = 0;
16
     mViewDistance = 14.0f;
16
     mViewDistance = 14.0f;
17
-    mTranslateDelta = 256.0f;
17
+    mTranslateDelta = 512.0f; // 256.0f
18
     mFlags &= Camera_FlyMode;
18
     mFlags &= Camera_FlyMode;
19
     reset();
19
     reset();
20
 }
20
 }
138
     mSide[2] = 0.0f;
138
     mSide[2] = 0.0f;
139
 
139
 
140
     mUp[0] = 0.0f;
140
     mUp[0] = 0.0f;
141
-    mUp[1] = 1.0f;
141
+    mUp[1] = -1.0f; // 1.0f
142
     mUp[2] = 0.0f;
142
     mUp[2] = 0.0f;
143
 
143
 
144
     mQ.setIdentity();
144
     mQ.setIdentity();

+ 7
- 18
src/Game.cpp 查看文件

38
     mTextureLevelOffset = 0;
38
     mTextureLevelOffset = 0;
39
     mTextureOffset = 0;
39
     mTextureOffset = 0;
40
 
40
 
41
-    mCamera = NULL;
42
     mRender = NULL;
41
     mRender = NULL;
43
 }
42
 }
44
 
43
 
47
 
46
 
48
     if (mRender)
47
     if (mRender)
49
         delete mRender;
48
         delete mRender;
50
-
51
-    if (mCamera)
52
-        delete mCamera;
53
 }
49
 }
54
 
50
 
55
 int Game::initialize() {
51
 int Game::initialize() {
56
-    // Set up Camera
57
-    vec3_t up = {0.0f, -1.0f, 0.0f};
58
-    mCamera = new Camera();
59
-    mCamera->reset();
60
-    mCamera->setSpeed(512);
61
-    mCamera->setUp(up);
62
-
63
     // Set up Renderer
52
     // Set up Renderer
64
     mRender = new Render();
53
     mRender = new Render();
65
     mRender->initTextures(getOpenRaider().mDataDir, &mTextureStart, &mTextureLevelOffset);
54
     mRender->initTextures(getOpenRaider().mDataDir, &mTextureStart, &mTextureLevelOffset);
160
         // Move Camera on X Axis
149
         // Move Camera on X Axis
161
         if (xrel > 0)
150
         if (xrel > 0)
162
             while (xrel-- > 0)
151
             while (xrel-- > 0)
163
-                mCamera->command(CAMERA_ROTATE_RIGHT);
152
+                getCamera().command(CAMERA_ROTATE_RIGHT);
164
         else if (xrel < 0)
153
         else if (xrel < 0)
165
             while (xrel++ < 0)
154
             while (xrel++ < 0)
166
-                mCamera->command(CAMERA_ROTATE_LEFT);
155
+                getCamera().command(CAMERA_ROTATE_LEFT);
167
 
156
 
168
         // Move Camera on Y Axis
157
         // Move Camera on Y Axis
169
         if (yrel > 0)
158
         if (yrel > 0)
170
             while (yrel-- > 0)
159
             while (yrel-- > 0)
171
-                mCamera->command(CAMERA_ROTATE_UP);
160
+                getCamera().command(CAMERA_ROTATE_UP);
172
         else if (yrel < 0)
161
         else if (yrel < 0)
173
             while (yrel++ < 0)
162
             while (yrel++ < 0)
174
-                mCamera->command(CAMERA_ROTATE_DOWN);
163
+                getCamera().command(CAMERA_ROTATE_DOWN);
175
 
164
 
176
         // Fix Laras rotation
165
         // Fix Laras rotation
177
-        mLara->angles[1] = mCamera->getRadianYaw();
178
-        mLara->angles[2] = mCamera->getRadianPitch();
166
+        mLara->angles[1] = getCamera().getRadianYaw();
167
+        mLara->angles[2] = getCamera().getRadianPitch();
179
     }
168
     }
180
 }
169
 }
181
 
170
 
750
         gLaraModel = r_model; // hack to avoid broken system until new event sys
739
         gLaraModel = r_model; // hack to avoid broken system until new event sys
751
 
740
 
752
         lara = true;
741
         lara = true;
753
-        mCamera->translate(pos[0], pos[1] - 470, pos[2]);
742
+        getCamera().translate(pos[0], pos[1] - 470, pos[2]);
754
         thing->type = 0x02;
743
         thing->type = 0x02;
755
         mLara = thing; // Mongoose 2002.03.22, Cheap hack for now
744
         mLara = thing; // Mongoose 2002.03.22, Cheap hack for now
756
         mLara->master = 0x0;
745
         mLara->master = 0x0;

+ 8
- 8
src/Render.cpp 查看文件

554
             camPos[2] = curPos[2] + (64.0f * cosf(yaw));
554
             camPos[2] = curPos[2] + (64.0f * cosf(yaw));
555
         }
555
         }
556
 
556
 
557
-        getGame().mCamera->setPosition(camPos);
557
+        getCamera().setPosition(camPos);
558
     }
558
     }
559
 
559
 
560
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
560
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
561
     glLoadIdentity();
561
     glLoadIdentity();
562
 
562
 
563
     // Setup view in OpenGL with camera
563
     // Setup view in OpenGL with camera
564
-    getGame().mCamera->update();
565
-    getGame().mCamera->getPosition(camPos);
566
-    getGame().mCamera->getTarget(atPos);
564
+    getCamera().update();
565
+    getCamera().getPosition(camPos);
566
+    getCamera().getTarget(atPos);
567
     // Mongoose 2002.08.13, Quick fix to render OpenRaider upside down
567
     // Mongoose 2002.08.13, Quick fix to render OpenRaider upside down
568
 
568
 
569
     gluLookAt(camPos[0], camPos[1], camPos[2], atPos[0], atPos[1], atPos[2], 0.0f, -1.0f, 0.0f);
569
     gluLookAt(camPos[0], camPos[1], camPos[2], atPos[0], atPos[1], atPos[2], 0.0f, -1.0f, 0.0f);
1023
         glPushMatrix();
1023
         glPushMatrix();
1024
 
1024
 
1025
 #ifdef USING_FPS_CAMERA
1025
 #ifdef USING_FPS_CAMERA
1026
-        getGame().mCamera->getPosition(curPos);
1026
+        getCamera().getPosition(curPos);
1027
         glTranslated(curPos[0], curPos[1], curPos[2]);
1027
         glTranslated(curPos[0], curPos[1], curPos[2]);
1028
-        glRotated(getGame().mCamera->getYaw(), 0, 1, 0);
1028
+        glRotated(getCamera().getYaw(), 0, 1, 0);
1029
         glTranslated(0, 500, 1200);
1029
         glTranslated(0, 500, 1200);
1030
 #else
1030
 #else
1031
         glTranslated(getGame().mLara->pos[0], getGame().mLara->pos[1], getGame().mLara->pos[2]);
1031
         glTranslated(getGame().mLara->pos[0], getGame().mLara->pos[1], getGame().mLara->pos[2]);
1032
-        glRotated(getGame().mCamera->getYaw(), 0, 1, 0);
1032
+        glRotated(getCamera().getYaw(), 0, 1, 0);
1033
 #endif
1033
 #endif
1034
 
1034
 
1035
         drawModel(static_cast<SkeletalModel *>(getGame().mLara->tmpHook));
1035
         drawModel(static_cast<SkeletalModel *>(getGame().mLara->tmpHook));
1554
     glTranslated(sprite->pos[0], sprite->pos[1], sprite->pos[2]);
1554
     glTranslated(sprite->pos[0], sprite->pos[1], sprite->pos[2]);
1555
 
1555
 
1556
     // Sprites must always face camera, because they have no depth  =)
1556
     // Sprites must always face camera, because they have no depth  =)
1557
-    glRotated(getGame().mCamera->getYaw(), 0, 1, 0);
1557
+    glRotated(getCamera().getYaw(), 0, 1, 0);
1558
 
1558
 
1559
     switch (mMode)
1559
     switch (mMode)
1560
     {
1560
     {

+ 10
- 0
src/main.cpp 查看文件

15
 #include "utils/time.h"
15
 #include "utils/time.h"
16
 #include "WindowSDL.h"
16
 #include "WindowSDL.h"
17
 
17
 
18
+Camera *gCamera = NULL;
18
 Console *gConsole = NULL;
19
 Console *gConsole = NULL;
19
 Game *gGame = NULL;
20
 Game *gGame = NULL;
20
 Menu *gMenu = NULL;
21
 Menu *gMenu = NULL;
23
 Window *gWindow = NULL;
24
 Window *gWindow = NULL;
24
 World *gWorld = NULL;
25
 World *gWorld = NULL;
25
 
26
 
27
+Camera &getCamera() {
28
+    assert(gCamera != NULL);
29
+    return *gCamera;
30
+}
31
+
26
 Console &getConsole() {
32
 Console &getConsole() {
27
     assert(gConsole != NULL);
33
     assert(gConsole != NULL);
28
     return *gConsole;
34
     return *gConsole;
71
     if (gWorld)
77
     if (gWorld)
72
         delete gWorld;
78
         delete gWorld;
73
 
79
 
80
+    if (gCamera)
81
+        delete gCamera;
82
+
74
     if (gOpenRaider)
83
     if (gOpenRaider)
75
         delete gOpenRaider;
84
         delete gOpenRaider;
76
 
85
 
127
     gWindow = new WindowSDL();
136
     gWindow = new WindowSDL();
128
     gSound = new Sound();
137
     gSound = new Sound();
129
     gWorld = new World();
138
     gWorld = new World();
139
+    gCamera = new Camera();
130
     gConsole = new Console();
140
     gConsole = new Console();
131
     gMenu = new Menu();
141
     gMenu = new Menu();
132
     gGame = new Game();
142
     gGame = new Game();

Loading…
取消
儲存