53 lines
2.3 KiB
C
53 lines
2.3 KiB
C
|
|
#pragma once
|
|||
|
|
// -----------------------------------------------------------------------------
|
|||
|
|
// Всё render-only состояние живёт здесь и только здесь.
|
|||
|
|
//
|
|||
|
|
// Зачем отдельная структура: правило «эффекты не текут в симуляцию» должно
|
|||
|
|
// проверяться компилятором, а не вниманием. RenderGame принимает Game по
|
|||
|
|
// КОНСТАНТНОЙ ссылке — значит ни свет, ни трассеры, ни тряска камеры физически
|
|||
|
|
// не могут изменить состояние симуляции. Headless-прогоны (--accept, --headless)
|
|||
|
|
// View не создают вообще, поэтому цифры приёмки остаются цифрами симуляции.
|
|||
|
|
// -----------------------------------------------------------------------------
|
|||
|
|
#include "render/atmos.h"
|
|||
|
|
#include "render/blood.h"
|
|||
|
|
#include "render/framebuffer.h"
|
|||
|
|
#include "render/fx.h"
|
|||
|
|
#include "render/iso.h"
|
|||
|
|
#include "render/lighting.h"
|
|||
|
|
#include "render/post.h"
|
|||
|
|
#include "render/scene.h"
|
|||
|
|
|
|||
|
|
struct Game;
|
|||
|
|
|
|||
|
|
struct View
|
|||
|
|
{
|
|||
|
|
iso::Camera cam;
|
|||
|
|
Scene scene;
|
|||
|
|
Lighting lighting;
|
|||
|
|
FxSystem fx;
|
|||
|
|
PostFx post;
|
|||
|
|
Dread dread;
|
|||
|
|
BloodField blood; // вечные декали, запечённые в спрайты пола
|
|||
|
|
Atmosphere atmos; // пепел в воздухе
|
|||
|
|
|
|||
|
|
// Дельты считаются по накопительным счётчикам метрик: за один кадр рендера
|
|||
|
|
// проходит до MAX_STEPS_PER_FRAME шагов, поэтому флаг «выстрелил» не годится.
|
|||
|
|
int prevShots = 0;
|
|||
|
|
int prevKills = 0;
|
|||
|
|
int prevFriendly = 0;
|
|||
|
|
int prevMeleeHits = 0;
|
|||
|
|
|
|||
|
|
bool horrorEnabled = true; // F5 — аварийный возврат к прежнему кадру
|
|||
|
|
bool showSight = false; // F6 — показать диски обзора
|
|||
|
|
|
|||
|
|
// Гамма и усиление меняют САМУ таблицу рампы: без перепечатки ручки молчат.
|
|||
|
|
float rampGamma = -1.0f;
|
|||
|
|
float rampGain = -1.0f;
|
|||
|
|
|
|||
|
|
void Init();
|
|||
|
|
void RefreshRamp();
|
|||
|
|
void Reset(const Game& game);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
void RenderGame(const Game& game, View& view, Framebuffer& fb, float alpha, float frameDt);
|