Polyphase Game Engine
Loading...
Searching...
No Matches
ScriptUtils.h
Go to the documentation of this file.
1#pragma once
2
3#include "ScriptMacros.h"
4#include <functional>
5#include <unordered_set>
6
7class Script;
8
10{
11public:
12
13 static bool IsScriptLoaded(const std::string& className);
14 static bool ReloadScriptFile(const std::string& fileName);
15 static bool CallLuaFunc(int numArgs, int numResults = 0);
16 static bool LoadScriptFile(const std::string& fileName, const std::string& className);
17 // Optional progress callback. Called once per file with (fileName, done,
18 // total). Return false to abort the loop after the current file. Default
19 // nullptr keeps non-editor callers unchanged.
20 using ReloadProgressFn = std::function<bool(const std::string&, int, int)>;
21 static void ReloadAllScriptFiles(const ReloadProgressFn& onProgress = nullptr);
22 static void LoadAllScripts();
23 static void LoadScriptDirectory(const std::string& dirName, bool recurse = true);
24
25 static std::string GetClassNameFromFileName(const std::string& fileName);
26 static void SetEmbeddedScripts(EmbeddedFile* embeddedScripts, uint32_t numEmbeddedScripts);
27 static EmbeddedFile* FindEmbeddedScript(const std::string& className);
28 static bool RunScript(const char* fileName, Datum* ret = nullptr);
29
30 static uint32_t GetNextScriptInstanceNumber();
31
32 static void CallMethod(Node* node, const char* funcName, uint32_t numParams, const Datum** params, Datum* ret);
33 static void SetBreakOnScriptError(bool enableBreak);
34
35 static void GarbageCollect();
36
37 static Datum GetField(Node* node, const char* key);
38 static void SetField(Node* node, const char* key, const Datum& value);
39 static Datum GetField(Node* node, int32_t key);
40 static void SetField(Node* node, int32_t key, const Datum& value);
41
42 static Datum GetField(const char* table, const char* key);
43 static void SetField(const char* table, const char* key, const Datum& value);
44 static Datum GetField(const char* table, int32_t key);
45 static void SetField(const char* table, int32_t key, const Datum& value);
46
47 static void DumpStack();
48
49private:
50
51 static std::unordered_set<std::string> sLoadedLuaFiles;
52 static std::unordered_set<std::string> sLoadingLuaFiles;
53 static EmbeddedFile* sEmbeddedScripts;
54 static uint32_t sNumEmbeddedScripts;
55 static uint32_t sNumScriptInstances;
56
57 static bool sBreakOnScriptError;
58};
Definition Datum.h:164
Definition Node.h:67
Definition ScriptUtils.h:10
static void CallMethod(Node *node, const char *funcName, uint32_t numParams, const Datum **params, Datum *ret)
Definition ScriptUtils.cpp:412
static bool RunScript(const char *fileName, Datum *ret=nullptr)
Definition ScriptUtils.cpp:275
static void ReloadAllScriptFiles(const ReloadProgressFn &onProgress=nullptr)
Definition ScriptUtils.cpp:139
static void LoadScriptDirectory(const std::string &dirName, bool recurse=true)
Definition ScriptUtils.cpp:173
static void GarbageCollect()
Definition ScriptUtils.cpp:454
static void LoadAllScripts()
Definition ScriptUtils.cpp:168
static void SetEmbeddedScripts(EmbeddedFile *embeddedScripts, uint32_t numEmbeddedScripts)
Definition ScriptUtils.cpp:253
static bool ReloadScriptFile(const std::string &fileName)
Definition ScriptUtils.cpp:37
static std::string GetClassNameFromFileName(const std::string &fileName)
Definition ScriptUtils.cpp:235
static void DumpStack()
Definition ScriptUtils.cpp:619
static bool LoadScriptFile(const std::string &fileName, const std::string &className)
Definition ScriptUtils.cpp:84
static uint32_t GetNextScriptInstanceNumber()
Definition ScriptUtils.cpp:405
static bool IsScriptLoaded(const std::string &className)
Definition ScriptUtils.cpp:32
static void SetBreakOnScriptError(bool enableBreak)
Definition ScriptUtils.cpp:449
std::function< bool(const std::string &, int, int)> ReloadProgressFn
Definition ScriptUtils.h:20
static bool CallLuaFunc(int numArgs, int numResults=0)
Definition ScriptUtils.cpp:52
static void SetField(Node *node, const char *key, const Datum &value)
Definition ScriptUtils.cpp:489
static EmbeddedFile * FindEmbeddedScript(const std::string &className)
Definition ScriptUtils.cpp:259
static Datum GetField(Node *node, const char *key)
Definition ScriptUtils.cpp:468
Definition Script.h:29
Definition EmbeddedFile.h:6