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
70// Close the currently-loaded project — symmetric counterpart to LoadProject.
71// Ends PIE, closes edit scenes, purges asset state, unloads the project
72// directory, clears loaded Lua scripts, and (when unloadNativeAddons=true)
73// FreeLibrary's every loaded native addon DLL. Leaves engine state empty
74// (mProjectDirectory == ""); the editor falls back to its no-project UI.
75// LoadProject calls this internally before loading a new path; callers that
76// just want the close half (e.g. Tools > Close Project, Tier-2 recovery)
77// invoke it directly. Editor-only — shipped runtimes have no close concept.
78#if EDITOR
79void CloseProject(bool unloadNativeAddons = true);
80#endif
81
82void EnableConsole(bool enable);
83
84void ResizeWindow(uint32_t width, uint32_t height);
85
87bool IsPlaying();
88
90
92
93void ReloadAllScripts(bool restartComponents = true);
94
95#if EDITOR
96void SetScriptHotReloadEnabled(bool enabled);
98#endif
99
100void SetPaused(bool paused);
101bool IsPaused();
102void FrameStep();
103
104void SetTimeDilation(float timeDilation);
105float GetTimeDilation();
106
107void GarbageCollect();
108
109void GatherGlobalProperties(std::vector<Property>& props);
110
113
114void WriteEngineConfig(std::string path = "");
115void ReadEngineConfig(std::string path = "");
116void ResetEngineConfig();
117
118// Rewrite the .octp project file's `name=` line in place. Preserves other lines
119// (assets=, solution=, etc.). Used to keep the .octp in sync when the project
120// name is edited via AppSettings, since the .octp is what packaging reads.
121void WriteProjectFile(const std::string& path, const std::string& newName);
122
123void ReadCommandLineArgs(int32_t argc, char** argv);
124
125
126#if LUA_ENABLED
127POLYPHASE_API lua_State* GetLua();
128#endif
bool IsScriptHotReloadEnabled()
Definition Engine.cpp:1635
void SetScriptHotReloadEnabled(bool enabled)
Definition Engine.cpp:1624
void OctPreShutdown()
Definition Main.cpp:80
POLYPHASE_API const class Clock * GetAppClock()
Definition Engine.cpp:1149
POLYPHASE_API const OctGameHooks & GetOctHooks()
Definition Engine.cpp:1144
const std::vector< std::string > & GetDefaultSceneNames()
Definition Engine.cpp:112
void WriteProjectFile(const std::string &path, const std::string &newName)
Definition Engine.cpp:1693
POLYPHASE_API bool IsHeadless()
Definition Engine.cpp:367
void SetTimeDilation(float timeDilation)
Definition Engine.cpp:1658
void ReadCommandLineArgs(int32_t argc, char **argv)
Definition Engine.cpp:372
bool Update()
Definition Engine.cpp:790
POLYPHASE_API void RegisterOctHooks(const OctGameHooks &hooks)
Definition Engine.cpp:1139
bool Initialize()
Definition Engine.cpp:491
void SetPaused(bool paused)
Definition Engine.cpp:1643
void ReadEngineConfig(std::string path="")
Definition Engine.cpp:1804
void WriteEngineConfig(std::string path="")
Definition Engine.cpp:1744
void FrameStep()
Definition Engine.cpp:1653
POLYPHASE_API class World * GetWorld(int32_t index)
Definition Engine.cpp:1106
void SetDefaultSceneNames(const std::vector< std::string > &names)
Definition Engine.cpp:117
void OctPostShutdown()
Definition Main.cpp:85
void OctPostInitialize()
Definition Main.cpp:65
void ResizeWindow(uint32_t width, uint32_t height)
Definition Engine.cpp:1475
POLYPHASE_API class SignalBus * GetSignalBus()
Definition SignalBus.cpp:7
bool IsPlaying()
Definition Engine.cpp:1502
void ResetEngineConfig()
Definition Engine.cpp:1943
void EnableConsole(bool enable)
Definition Engine.cpp:1469
bool IsPaused()
Definition Engine.cpp:1648
void OctPreUpdate()
Definition Main.cpp:70
void GarbageCollect()
Definition Engine.cpp:1668
POLYPHASE_API int32_t GetNumWorlds()
Definition Engine.cpp:1113
bool IsShuttingDown()
Definition Engine.cpp:1154
void LoadProject(const std::string &path, bool discoverAssets=true)
Definition Engine.cpp:1215
bool IsGameTickEnabled()
Definition Engine.cpp:1511
POLYPHASE_API struct EngineState * GetEngineState()
Definition Engine.cpp:1118
void Quit()
Definition Engine.cpp:1101
ScreenOrientation GetScreenOrientation()
Definition Engine.cpp:1688
POLYPHASE_API struct EngineConfig * GetMutableEngineConfig()
Definition Engine.cpp:1128
float GetTimeDilation()
Definition Engine.cpp:1663
void Shutdown()
Definition Engine.cpp:1026
POLYPHASE_API lua_State * GetLua()
Definition Engine.cpp:1949
POLYPHASE_API const struct EngineConfig * GetEngineConfig()
Definition Engine.cpp:1123
void ReloadAllScripts(bool restartComponents=true)
Definition Engine.cpp:1520
void SetScreenOrientation(ScreenOrientation mode)
Definition Engine.cpp:1683
void OctPostUpdate()
Definition Main.cpp:75
bool IsPlayingInEditor()
Definition Engine.cpp:1493
void GatherGlobalProperties(std::vector< Property > &props)
Definition Engine.cpp:1674
Export macros for Polyphase Engine symbols.
#define POLYPHASE_API
Definition PolyphaseAPI.h:31
ScreenOrientation
Definition SystemTypes.h:83
InitOptions OctPreInitialize()
Definition Main.cpp:20
Definition Clock.h:6
Definition SignalBus.h:45
Definition World.h:24
Definition EngineTypes.h:292
Definition EngineTypes.h:359
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