Merge pull request #8329 from touilleMan/dlscript-godot_get_global_constants
GlobalConstants support in DLScript & api.json
This commit is contained in:
commit
0198d2e03c
3 changed files with 34 additions and 0 deletions
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include "class_db.h"
|
||||
#include "core/global_config.h"
|
||||
#include "core/global_constants.h"
|
||||
#include "os/file_access.h"
|
||||
|
||||
// helper stuff
|
||||
|
@ -92,6 +93,23 @@ List<ClassAPI> generate_c_api_classes() {
|
|||
List<StringName> classes;
|
||||
ClassDB::get_class_list(&classes);
|
||||
|
||||
// Register global constants as a fake GlobalConstants singleton class
|
||||
{
|
||||
ClassAPI global_constants_api;
|
||||
global_constants_api.class_name = L"GlobalConstants";
|
||||
global_constants_api.api_type = ClassDB::API_CORE;
|
||||
global_constants_api.is_singleton = true;
|
||||
global_constants_api.is_instanciable = false;
|
||||
const int constants_count = GlobalConstants::get_global_constant_count();
|
||||
for (int i = 0; i < constants_count; ++i) {
|
||||
ConstantAPI constant_api;
|
||||
constant_api.constant_name = GlobalConstants::get_global_constant_name(i);
|
||||
constant_api.constant_value = GlobalConstants::get_global_constant_value(i);
|
||||
global_constants_api.constants.push_back(constant_api);
|
||||
}
|
||||
api.push_back(global_constants_api);
|
||||
}
|
||||
|
||||
for (List<StringName>::Element *e = classes.front(); e != NULL; e = e->next()) {
|
||||
StringName class_name = e->get();
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "class_db.h"
|
||||
#include "dl_script.h"
|
||||
#include "global_config.h"
|
||||
#include "global_constants.h"
|
||||
#include "variant.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -181,6 +182,19 @@ void GDAPI *godot_dlinstance_get_userdata(godot_object *p_instance) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
godot_dictionary GDAPI godot_get_global_constants() {
|
||||
godot_dictionary constants;
|
||||
godot_dictionary_new(&constants);
|
||||
Dictionary *p_constants = (Dictionary*)&constants;
|
||||
const int constants_count = GlobalConstants::get_global_constant_count();
|
||||
for (int i = 0; i < constants_count; ++i) {
|
||||
const char *name = GlobalConstants::get_global_constant_name(i);
|
||||
int value = GlobalConstants::get_global_constant_value(i);
|
||||
(*p_constants)[name] = value;
|
||||
}
|
||||
return constants;
|
||||
}
|
||||
|
||||
// System functions
|
||||
void GDAPI *godot_alloc(int p_bytes) {
|
||||
return memalloc(p_bytes);
|
||||
|
|
|
@ -376,6 +376,8 @@ void GDAPI godot_script_register_signal(const char *p_name, const godot_signal *
|
|||
|
||||
void GDAPI *godot_dlinstance_get_userdata(godot_object *p_instance);
|
||||
|
||||
godot_dictionary GDAPI godot_get_global_constants();
|
||||
|
||||
////// System Functions
|
||||
|
||||
//using these will help Godot track how much memory is in use in debug mode
|
||||
|
|
Loading…
Reference in a new issue