Bomberman-OverlordEngine-x64 / OverlordEngine / Base / Structs.h
Structs.h
Raw
#pragma once
class CameraComponent;
class InputManager;
class LightManager;
class GameTime;
class OverlordGame;
class MaterialManager;

struct D3D11Context
{
	ID3D11Device* pDevice{};
	ID3D11DeviceContext* pDeviceContext{};
	IDXGIAdapter* pAdapter{};
	IDXGIOutput* pOutput{};
};

struct SceneSettings
{
	bool showInfoOverlay{true};
	bool enableOnGUI{ false };

	bool drawPhysXDebug{true};
	bool drawGrid{true};
	bool drawUserDebug{ true };

	bool vSyncEnabled{ true };
	XMFLOAT4 clearColor{ Colors::CornflowerBlue };

	void Toggle_ShowInfoOverlay() { showInfoOverlay = !showInfoOverlay; }
	bool Toggle_DrawPhysXDebug() { drawPhysXDebug = !drawPhysXDebug; }
	bool Toggle_DrawGrid() { drawGrid = !drawGrid; }
};

struct SceneContext
{
	InputManager* pInput{};
	LightManager* pLights{};
	CameraComponent* pCamera{};
	GameTime* pGameTime{};
	D3D11Context d3dContext{};

	float windowWidth{};
	float windowHeight{};
	float aspectRatio{};
	UINT frameNumber{};

	SceneSettings settings{};
};

struct GameContext
{
	UINT windowWidth{1280};
	UINT windowHeight{720};
	std::wstring windowTitle{L"GP2 - Overlord Engine 2023 (x64)"};
	HWND windowHandle{};
	std::wstring contentRoot{ L"./Resources/" };
	float inputUpdateFrequency{ 0.016f };

	D3D11Context d3dContext{};
	OverlordGame* pGame{};
};

struct PerfStats
{
	float averageFps;
	float averageMs;
	float highMs;
	float lowMs;

	float averageFps_interim;
	float averageMs_interim;

	long frameNr;

	void Reset()
	{
		averageFps = 0;
		averageMs = 0;
		highMs = 0;
		lowMs = 0;

		averageFps_interim = 0;
		averageMs_interim = 0;

		frameNr = 0;
	}
};