forked from Jenova-Framework/Jenova-Runtime
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript_manager.cpp
More file actions
103 lines (96 loc) · 2.99 KB
/
Copy pathscript_manager.cpp
File metadata and controls
103 lines (96 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*-------------------------------------------------------------+
| |
| _________ ______ _ _____ |
| / / ____/ | / / __ \ | / / | |
| __ / / __/ / |/ / / / / | / / /| | |
| / /_/ / /___/ /| / /_/ /| |/ / ___ | |
| \____/_____/_/ |_/\____/ |___/_/ |_| |
| |
| Jenova Runtime |
| Developed by Hamid.Memar |
| |
+-------------------------------------------------------------*/
// Jenova SDK
#include "Jenova.hpp"
// Singleton Instance
JenovaScriptManager* scriptManager = nullptr;
// Jenova Script Manager Implementation
JenovaScriptManager::JenovaScriptManager()
{
scriptObjects.clear();
scriptInstances.clear();
}
JenovaScriptManager::~JenovaScriptManager()
{
}
void JenovaScriptManager::_bind_methods()
{
}
void JenovaScriptManager::init()
{
scriptManager = memnew(JenovaScriptManager);
}
JenovaScriptManager* JenovaScriptManager::get_singleton()
{
return scriptManager;
}
bool JenovaScriptManager::add_script_object(CPPScript* scriptObject)
{
jenova::VerboseByID(__LINE__, "New Script Object Added to Manager : %p", scriptObject);
scriptObjects.push_back(scriptObject);
return true;
}
bool JenovaScriptManager::remove_script_object(CPPScript* scriptObject)
{
jenova::VerboseByID(__LINE__, "Script Object Removed from Manager : %p", scriptObject);
auto it = std::find(scriptObjects.begin(), scriptObjects.end(), scriptObject);
if (it != scriptObjects.end())
{
scriptObjects.erase(it);
return true;
}
return false;
}
size_t JenovaScriptManager::get_script_object_count()
{
return scriptObjects.size();
}
Ref<CPPScript> JenovaScriptManager::get_script_object(size_t index)
{
return Ref<CPPScript>(scriptObjects[index]);
}
bool JenovaScriptManager::add_script_instance(CPPScriptInstance* scriptInstance)
{
// Rise Events
if (JenovaScriptManager::IsRuntimeStarted == false)
{
for (const auto& callBack : runtimeStartEvents) reinterpret_cast<void(*)()>(callBack)();
JenovaScriptManager::IsRuntimeStarted = true;
}
// Add Script Instance
scriptInstances.push_back(scriptInstance);
return true;
}
bool JenovaScriptManager::remove_script_instance(CPPScriptInstance* scriptInstance)
{
auto it = std::find(scriptInstances.begin(), scriptInstances.end(), scriptInstance);
if (it != scriptInstances.end())
{
scriptInstances.erase(it);
return true;
}
return false;
}
size_t JenovaScriptManager::get_script_instance_count()
{
return scriptInstances.size();
}
CPPScriptInstance* JenovaScriptManager::get_script_instance(size_t index)
{
return scriptInstances[index];
}
bool JenovaScriptManager::register_runtime_start_event(jenova::VoidFunc_t callbackPtr)
{
runtimeStartEvents.push_back(callbackPtr);
return true;
}