Polyphase Game Engine
Loading...
Searching...
No Matches
Engine.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdint.h>
4#include <string>
5
6#include "PolyphaseAPI.h"
7#include "EngineTypes.h"
8#include "Property.h"
9
10extern void OctPreInitialize(EngineConfig& config);
11extern void OctPostInitialize();
12extern void OctPreUpdate();
13extern void OctPostUpdate();
14extern void OctPreShutdown();
15extern void OctPostShutdown();
16
17// W1: Hook registration indirection. Today the engine static-lib path resolves
18// the six Oct* externs above at exe-link time (Standalone/Main.cpp,
19// Template/Main.cpp, or a user game's Main.cpp provides the defs). That extern
20// model can't cross the engine-DLL boundary, so the engine routes its hook
21// calls through this small function-pointer struct instead.
22//
23// - Static-lib builds (POLYPHASE_DLL_BUILD undefined): Engine/Source/Engine/OctHookAutoRegister.cpp
24// takes the address of the externs at static-init time and calls RegisterOctHooks().
25// Zero source change required of existing game projects.
26// - DLL builds (POLYPHASE_DLL_BUILD=1): the engine DLL has no Oct* externs in
27// its TUs. The consuming exe (POLYPHASE_DLL_CONSUMER=1) defines its own Oct*
28// and registers them via the DLL-exported RegisterOctHooks() at exe static
29// init — see Standalone/Source/Main.cpp.
31{
32 void (*preInitialize)(EngineConfig&) = nullptr;
33 void (*postInitialize)() = nullptr;
34 void (*preUpdate)() = nullptr;
35 void (*postUpdate)() = nullptr;
36 void (*preShutdown)() = nullptr;
37 void (*postShutdown)() = nullptr;
38};
41
42bool Initialize();
43
44bool Update();
45
46void Shutdown();
47
48void Quit();
49
50POLYPHASE_API class World* GetWorld(int32_t index);
53
57
58POLYPHASE_API const class Clock* GetAppClock();
59
60// Default scene names to search for when no explicit scene is specified
61// Developers can modify this list to add custom default scene names
62extern const std::vector<std::string>& GetDefaultSceneNames();
63void SetDefaultSceneNames(const std::vector<std::string>& names);
64
65
66bool IsShuttingDown();
67
68void LoadProject(const std::string& path, bool discoverAssets = true);
69
70void EnableConsole(bool enable);
71
72void ResizeWindow(uint32_t width, uint32_t height);
73
75bool IsPlaying();
76
78
80
81void ReloadAllScripts(bool restartComponents = true);
82
83#if EDITOR
84void SetScriptHotReloadEnabled(bool enabled);
86#endif
87
88void SetPaused(bool paused);
89bool IsPaused();
90void FrameStep();
91
92void SetTimeDilation(float timeDilation);
93float GetTimeDilation();
94
95void GarbageCollect();
96
97void GatherGlobalProperties(std::vector<Property>& props);
98
101
102void WriteEngineConfig(std::string path = "");
103void ReadEngineConfig(std::string path = "");
104void ResetEngineConfig();
105
106// Rewrite the .octp project file's `name=` line in place. Preserves other lines
107// (assets=, solution=, etc.). Used to keep the .octp in sync when the project
108// name is edited via AppSettings, since the .octp is what packaging reads.
109void WriteProjectFile(const std::string& path, const std::string& newName);
110
111void ReadCommandLineArgs(int32_t argc, char** argv);
112
113
114#if LUA_ENABLED
115POLYPHASE_API lua_State* GetLua();
116#endif
bool IsScriptHotReloadEnabled()
Definition Engine.cpp:1460
void SetScriptHotReloadEnabled(bool enabled)
Definition Engine.cpp:1449
void OctPreShutdown()
Definition Main.cpp:72
POLYPHASE_API const class Clock * GetAppClock()
Definition Engine.cpp:1037
POLYPHASE_API const OctGameHooks & GetOctHooks()
Definition Engine.cpp:1032
const std::vector< std::string > & GetDefaultSceneNames()
Definition Engine.cpp:107
void WriteProjectFile(const std::string &path, const std::string &newName)
Definition Engine.cpp:1518
POLYPHASE_API bool IsHeadless()
Definition Engine.cpp:313
void SetTimeDilation(float timeDilation)
Definition Engine.cpp:1483
void ReadCommandLineArgs(int32_t argc, char **argv)
Definition Engine.cpp:318
bool Update()
Definition Engine.cpp:710
POLYPHASE_API void RegisterOctHooks(const OctGameHooks &hooks)
Definition Engine.cpp:1027
bool Initialize()
Definition Engine.cpp:417
void SetPaused(bool paused)
Definition Engine.cpp:1468
void ReadEngineConfig(std::string path="")
Definition Engine.cpp:1626
void WriteEngineConfig(std::string path="")
Definition Engine.cpp:1569
void FrameStep()
Definition Engine.cpp:1478
POLYPHASE_API class World * GetWorld(int32_t index)
Definition Engine.cpp:994
void SetDefaultSceneNames(const std::vector< std::string > &names)
Definition Engine.cpp:112
void OctPostShutdown()
Definition Main.cpp:77
void OctPostInitialize()
Definition Main.cpp:57
void ResizeWindow(uint32_t width, uint32_t height)
Definition Engine.cpp:1300
POLYPHASE_API class SignalBus * GetSignalBus()
Definition SignalBus.cpp:7
bool IsPlaying()
Definition Engine.cpp:1327
void ResetEngineConfig()
Definition Engine.cpp:1759
void EnableConsole(bool enable)
Definition Engine.cpp:1294
bool IsPaused()
Definition Engine.cpp:1473
void OctPreUpdate()
Definition Main.cpp:62
void GarbageCollect()
Definition Engine.cpp:1493
POLYPHASE_API int32_t GetNumWorlds()
Definition Engine.cpp:1001
bool IsShuttingDown()
Definition Engine.cpp:1042
void LoadProject(const std::string &path, bool discoverAssets=true)
Definition Engine.cpp:1047
bool IsGameTickEnabled()
Definition Engine.cpp:1336
POLYPHASE_API struct EngineState * GetEngineState()
Definition Engine.cpp:1006
void Quit()
Definition Engine.cpp:989
ScreenOrientation GetScreenOrientation()
Definition Engine.cpp:1513
POLYPHASE_API struct EngineConfig * GetMutableEngineConfig()
Definition Engine.cpp:1016
float GetTimeDilation()
Definition Engine.cpp:1488
void Shutdown()
Definition Engine.cpp:916
POLYPHASE_API lua_State * GetLua()
Definition Engine.cpp:1765
POLYPHASE_API const struct EngineConfig * GetEngineConfig()
Definition Engine.cpp:1011
void ReloadAllScripts(bool restartComponents=true)
Definition Engine.cpp:1345
void SetScreenOrientation(ScreenOrientation mode)
Definition Engine.cpp:1508
void OctPostUpdate()
Definition Main.cpp:67
bool IsPlayingInEditor()
Definition Engine.cpp:1318
void GatherGlobalProperties(std::vector< Property > &props)
Definition Engine.cpp:1499
Export macros for Polyphase Engine symbols.
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
ScreenOrientation
Definition SystemTypes.h:66
InitOptions OctPreInitialize()
Definition Main.cpp:20
Definition Clock.h:6
Definition SignalBus.h:45
Definition World.h:24
Definition EngineTypes.h:285
Definition EngineTypes.h:343
Definition Engine.h:31
void(* postInitialize)()
Definition Engine.h:33
void(* preUpdate)()
Definition Engine.h:34
void(* postShutdown)()
Definition Engine.h:37
void(* preShutdown)()
Definition Engine.h:36
void(* preInitialize)(EngineConfig &)
Definition Engine.h:32
void(* postUpdate)()
Definition Engine.h:35