Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
GameEngine.cpp
Go to the documentation of this file.
1/*
2Olympe Engine V2 2025
3Nicolas Chereau
4nchereau@gmail.com
5
6Purpose:
7- Class representing the core game engine
8- Gamengine stores the list of all game objects
9- Initializes core subsystems
10- Manages the main game loop timing (delta time)
11
12*/
13#pragma once
14
15#include "GameEngine.h"
16#include "InputsManager.h"
17#include "system/SystemMenu.h"
18#include "VideoGame.h"
19#include "OptionsManager.h"
20#include "DataManager.h"
21#include "PanelManager.h"
22#include "World.h"
24#include "AI/BehaviorTree.h"
26
27float GameEngine::fDt = 0.0f;
31//-------------------------------------------------------------
33{
39
40 // Preload system resources from olymp.ini
42
43 // Create and initialize panel manager
44 //PanelManager::Get().Initialize();
45 //PanelManager::Get().CreateMainMenuWindow();
46 //PanelManager::Get().CreateLogWindow();
47 //PanelManager::Get().CreateObjectInspectorWindow();
48 //PanelManager::Get().CreateTreeViewWindow();
49 //PanelManager::Get().CreateInputsInspectorWindow();
50 // By default keep them hidden; can be shown by the UI later
51
52 // Initialize camera event handler
54
55 // Load AI Behavior Trees
56 //SYSTEM_LOG << "Loading AI Behavior Trees...\n";
57 //BehaviorTreeManager::Get().LoadTreeFromFile("Blueprints/AI/idle.json", 1);
58 //BehaviorTreeManager::Get().LoadTreeFromFile("Blueprints/AI/guard_patrol.json", 2);
59 //BehaviorTreeManager::Get().LoadTreeFromFile("Blueprints/AI/guard_combat.json", 3);
60 //BehaviorTreeManager::Get().LoadTreeFromFile("Blueprints/AI/investigate.json", 5);
61 //SYSTEM_LOG << "AI Behavior Trees loaded.\n";
62
63 // Initialize Animation System
64 SYSTEM_LOG << "Initializing Animation System...\n";
66 OlympeAnimation::AnimationManager::Get().LoadAnimationBanks("Gamedata/Animations/AnimationBanks");
67 OlympeAnimation::AnimationManager::Get().LoadAnimationGraphs("Gamedata/Animations/AnimationGraphs");
68 SYSTEM_LOG << "Animation System initialized.\n";
69
70 // Create default camera for player 0 with keyboard controls
72 if (camSys)
73 {
74 EntityID defaultCamera = camSys->CreateCameraForPlayer(-1, true); // true = bind to keyboard
75 SYSTEM_LOG << "Created default ECS camera for player -1 (Entity " << defaultCamera << ")\n";
76 }
77}
78//-------------------------------------------------------------
80{
81 // Calculate Delta Time for th entire engine cycle
82 const Uint64 now = SDL_GetTicks();
83 static Uint64 last_time = 0;
84 fDt = ((float)(now - last_time)) / 1000.0f; /* seconds since last iteration */
85 last_time = now;
86}
87//-------------------------------------------------------------
Data-driven behavior tree system for AI decision making.
ComponentTypeID GetComponentTypeID_Static()
Definition ECS_Entity.h:56
std::uint64_t EntityID
Definition ECS_Entity.h:21
Core game engine class.
World and ECS Manager for Olympe Engine.
static CameraEventHandler & Get()
EntityID CreateCameraForPlayer(short playerID, bool bindToKeyboard=false)
static DataManager & Get()
Definition DataManager.h:87
bool PreloadSystemResources(const std::string &configFilePath)
static DataManager & GetInstance()
void Process()
Process one frame.
VideoGame * ptr_videogame
Pointer to video game subsystem.
Definition GameEngine.h:96
static int screenWidth
Screen width in pixels.
Definition GameEngine.h:123
static float fDt
Delta time between frames in seconds.
Definition GameEngine.h:120
static int screenHeight
Screen height in pixels.
Definition GameEngine.h:126
void Initialize()
Initialize all engine subsystems.
OptionsManager * ptr_optionsmanager
Pointer to options manager subsystem.
Definition GameEngine.h:99
SystemMenu * ptr_systemmenu
Pointer to system menu subsystem.
Definition GameEngine.h:93
DataManager * ptr_datamanager
Pointer to data manager subsystem.
Definition GameEngine.h:102
InputsManager * ptr_inputsmanager
Pointer to input manager subsystem.
Definition GameEngine.h:90
static SDL_Renderer * renderer
Main SDL renderer.
Definition GameEngine.h:129
static InputsManager & GetInstance()
static AnimationManager & Get()
void LoadAnimationGraphs(const std::string &directoryPath)
void LoadAnimationBanks(const std::string &directoryPath)
static OptionsManager & GetInstance()
static SystemMenu & GetInstance()
Definition SystemMenu.cpp:6
static VideoGame & GetInstance()
Definition VideoGame.h:29
static World & Get()
Get singleton instance (short form)
Definition World.h:232
T * GetSystem()
Definition World.h:244
#define SYSTEM_LOG