mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-06 13:16:52 +02:00
pause in spectator mode
This commit is contained in:
@@ -69,6 +69,7 @@ struct Camera : ICamera {
|
||||
|
||||
spectator = false;
|
||||
specTimer = 0.0f;
|
||||
targetAngle = vec3(0.0f);
|
||||
}
|
||||
|
||||
void reset() {
|
||||
@@ -388,6 +389,7 @@ struct Camera : ICamera {
|
||||
}
|
||||
}
|
||||
|
||||
if (!spectator) {
|
||||
if (!firstPerson) {
|
||||
TR::CameraFrame *frameA = &level->cameraFrames[indexA];
|
||||
TR::CameraFrame *frameB = &level->cameraFrames[indexB];
|
||||
@@ -413,6 +415,7 @@ struct Camera : ICamera {
|
||||
mViewInv = mat4(eye.pos, target.pos, vec3(0, -1, 0));
|
||||
} else
|
||||
updateFirstPerson();
|
||||
}
|
||||
} else {
|
||||
if (Core::settings.detail.stereo == Core::Settings::STEREO_VR) {
|
||||
lookAngle = vec3(0.0f);
|
||||
@@ -558,6 +561,7 @@ struct Camera : ICamera {
|
||||
if (specJoy.down[jkL] && specJoy.down[jkR]) {
|
||||
specTimer += Core::deltaTime;
|
||||
if (specTimer > SPECTATOR_TIMER) {
|
||||
firstPerson = false;
|
||||
spectator = !spectator;
|
||||
specTimer = 0.0f;
|
||||
specPos = eye.pos;
|
||||
|
17
src/level.h
17
src/level.h
@@ -66,6 +66,7 @@ struct Level : IGame {
|
||||
bool needRenderInventory;
|
||||
bool showStats;
|
||||
bool skyIsVisible;
|
||||
bool paused;
|
||||
|
||||
TR::LevelID nextLevel;
|
||||
|
||||
@@ -936,6 +937,8 @@ struct Level : IGame {
|
||||
//==============================
|
||||
|
||||
Level(Stream &stream) : level(stream), waitTrack(false), isEnded(false), cutsceneWaitTimer(0.0f), animTexTimer(0.0f), statsTimeDelta(0.0f) {
|
||||
paused = false;
|
||||
|
||||
level.simpleItems = Core::settings.detail.simple == 1;
|
||||
level.initModelIndices();
|
||||
|
||||
@@ -2241,6 +2244,11 @@ struct Level : IGame {
|
||||
}
|
||||
}
|
||||
|
||||
if (camera->spectator && Input::lastState[0] == cStart) {
|
||||
paused = !paused;
|
||||
}
|
||||
|
||||
if (!paused) {
|
||||
params->time += Core::deltaTime;
|
||||
animTexTimer += Core::deltaTime;
|
||||
|
||||
@@ -2261,6 +2269,11 @@ struct Level : IGame {
|
||||
c->update();
|
||||
c = next;
|
||||
}
|
||||
} else {
|
||||
if (camera->spectator) {
|
||||
camera->update();
|
||||
}
|
||||
}
|
||||
|
||||
if (waterCache)
|
||||
waterCache->update();
|
||||
@@ -3405,7 +3418,7 @@ struct Level : IGame {
|
||||
|
||||
Core::resetLights();
|
||||
|
||||
if (!level.isCutsceneLevel()) {
|
||||
if (!level.isCutsceneLevel() && !camera->spectator) {
|
||||
// render health & oxygen bars
|
||||
vec2 size = vec2(180, 10);
|
||||
|
||||
@@ -3442,7 +3455,9 @@ struct Level : IGame {
|
||||
UI::renderHelp();
|
||||
}
|
||||
|
||||
if (!camera->spectator) {
|
||||
UI::renderSubs();
|
||||
}
|
||||
|
||||
UI::end();
|
||||
|
||||
|
Reference in New Issue
Block a user