Skip to content

Commit 20ac539

Browse files
author
Vano
committed
detached from godot-cpp submodule, configfiles in example repo
1 parent d5d44c1 commit 20ac539

File tree

10 files changed

+110
-207
lines changed

10 files changed

+110
-207
lines changed

.gitignore

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22
*.so
33
*.os
44
*.o
5-
6-
# Generated files
7-
*scripts.gen.h
8-
*defs.json
5+
*.obj
96

107
# Scons specific
118
*.sconsign.dblite

.gitmodules

Lines changed: 0 additions & 3 deletions
This file was deleted.

CMakeLists.txt

Lines changed: 0 additions & 110 deletions
This file was deleted.

SConstruct

Lines changed: 0 additions & 64 deletions
This file was deleted.

cppscript.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ def apply_macros(item, macros):
518518

519519
leftover = collapse_list(class_macros, lambda x: x.kind != CursorKind.MACRO_INSTANTIATION, apply_macros)
520520
for macro in leftover:
521-
if macro.spelling not in ['GSIGNAL', 'GGROUP', 'GSUBGROUP']:
521+
if macro.spelling not in ['GSIGNAL', 'GGROUP', 'GSUBGROUP'] + INIT_LEVELS:
522522
raise CppScriptException('{}:{}:{}: error: macro without target member'
523523
.format(filename, macro.location.line, macro.location.column))
524524
process_macros(None, leftover, None)
@@ -669,8 +669,16 @@ def write_register_header(defs_all, env):
669669
classes_register.append((base, f"\tGDREGISTER_{content['type']}({class_name_full});\n"))
670670

671671

672-
scripts_header += '\nusing namespace godot;\n\n'
673672
classes_register_str = ''
673+
if classes_register_levels['CORE'] != []:
674+
minimal_register_level = 'MODULE_INITIALIZATION_LEVEL_CORE'
675+
elif classes_register_levels['SERVERS'] != []:
676+
minimal_register_level = 'MODULE_INITIALIZATION_LEVEL_SERVERS'
677+
else:
678+
minimal_register_level = 'MODULE_INITIALIZATION_LEVEL_SCENE'
679+
680+
scripts_header += '\nusing namespace godot;\n\n' + \
681+
f'static const ModuleInitializationLevel DEFAULT_INIT_LEVEL = {minimal_register_level};\n\n'
674682
for level_name, defs in classes_register_levels.items():
675683
registers = ''.join(i for _, i in defs)
676684
classes_register_str += '_FORCE_INLINE_ void _register_level_{}() {{{}}}\n\n'.format(

cmake/godot-cppscript.cmake renamed to godot-cppscript.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
find_package(Python3 3.4 REQUIRED)
22

3-
set(CPPSCRIPT_DIR ${CMAKE_CURRENT_LIST_DIR}/..)
3+
set(CPPSCRIPT_DIR ${CMAKE_CURRENT_LIST_DIR})
44

55
#TODO: make it work in parallel
66
function(create_cppscript_target TARGET_NAME HEADER_NAME HEADERS_DIR GEN_DIR AUTO_METHODS COMPILE_DEFS INCLUDE_PATHS)

src/register_types.h

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/register_types.cpp renamed to templates/register_types.cpp

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,15 @@
33
#include <godot_cpp/core/class_db.hpp>
44
#include <godot_cpp/core/defs.hpp>
55
#include <godot_cpp/godot.hpp>
6-
#include <godot_cpp/classes/multiplayer_peer.hpp>
7-
#include <godot_cpp/classes/multiplayer_api.hpp>
86

9-
#include "register_types.h"
7+
// Include custom headers here
108

11-
//include custom headers here
9+
#include "scripts.gen.h"
10+
#include "register_types.h"
1211

1312
using namespace godot;
1413

15-
16-
void initialize_scripts_module(ModuleInitializationLevel p_level) {
14+
void LIBRARY_INIT_FUNC(ModuleInitializationLevel p_level) {
1715
switch (p_level) {
1816
case MODULE_INITIALIZATION_LEVEL_CORE:
1917
_register_level_core();
@@ -22,6 +20,9 @@ void initialize_scripts_module(ModuleInitializationLevel p_level) {
2220
_register_level_servers();
2321
break;
2422
case MODULE_INITIALIZATION_LEVEL_SCENE:
23+
// Non-cppscript classes, static/global variables
24+
// initialization here
25+
2526
_register_level_scene();
2627
break;
2728
case MODULE_INITIALIZATION_LEVEL_EDITOR:
@@ -32,13 +33,16 @@ void initialize_scripts_module(ModuleInitializationLevel p_level) {
3233
}
3334
}
3435

35-
void uninitialize_scripts_module(ModuleInitializationLevel p_level) {
36+
void LIBRARY_DEINIT_FUNC(ModuleInitializationLevel p_level) {
3637
switch (p_level) {
3738
case MODULE_INITIALIZATION_LEVEL_CORE:
3839
break;
3940
case MODULE_INITIALIZATION_LEVEL_SERVERS:
4041
break;
4142
case MODULE_INITIALIZATION_LEVEL_SCENE:
43+
// Non-cppscript classes, static/global variables
44+
// deinitialization here
45+
4246
break;
4347
case MODULE_INITIALIZATION_LEVEL_EDITOR:
4448
break;
@@ -48,14 +52,15 @@ void uninitialize_scripts_module(ModuleInitializationLevel p_level) {
4852
}
4953

5054
extern "C" {
51-
// Initialization.
55+
// GDExtension initialization
5256
GDExtensionBool GDE_EXPORT scripts_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
5357
godot::GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, r_initialization);
5458

55-
init_obj.register_initializer(initialize_scripts_module);
56-
init_obj.register_terminator(uninitialize_scripts_module);
57-
init_obj.set_minimum_library_initialization_level(MODULE_INITIALIZATION_LEVEL_SCENE);
59+
init_obj.register_initializer(LIBRARY_INIT_FUNC);
60+
init_obj.register_terminator(LIBRARY_DEINIT_FUNC);
61+
init_obj.set_minimum_library_initialization_level(DEFAULT_INIT_LEVEL);
5862

5963
return init_obj.init();
6064
}
6165
}
66+

templates/register_types.cpp.in

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#include <gdextension_interface.h>
2+
3+
#include <godot_cpp/core/class_db.hpp>
4+
#include <godot_cpp/core/defs.hpp>
5+
#include <godot_cpp/godot.hpp>
6+
7+
// Include custom headers here
8+
9+
#include "scripts.gen.h"
10+
#include "register_types.h"
11+
12+
using namespace godot;
13+
14+
void LIBRARY_INIT_FUNC(ModuleInitializationLevel p_level) {
15+
switch (p_level) {
16+
case MODULE_INITIALIZATION_LEVEL_CORE:
17+
_register_level_core();
18+
break;
19+
case MODULE_INITIALIZATION_LEVEL_SERVERS:
20+
_register_level_servers();
21+
break;
22+
case MODULE_INITIALIZATION_LEVEL_SCENE:
23+
// Non-cppscript classes, static/global variables
24+
// initialization here
25+
26+
_register_level_scene();
27+
break;
28+
case MODULE_INITIALIZATION_LEVEL_EDITOR:
29+
_register_level_editor();
30+
break;
31+
default:
32+
break;
33+
}
34+
}
35+
36+
void LIBRARY_DEINIT_FUNC(ModuleInitializationLevel p_level) {
37+
switch (p_level) {
38+
case MODULE_INITIALIZATION_LEVEL_CORE:
39+
break;
40+
case MODULE_INITIALIZATION_LEVEL_SERVERS:
41+
break;
42+
case MODULE_INITIALIZATION_LEVEL_SCENE:
43+
// Non-cppscript classes, static/global variables
44+
// deinitialization here
45+
46+
break;
47+
case MODULE_INITIALIZATION_LEVEL_EDITOR:
48+
break;
49+
default:
50+
break;
51+
}
52+
}
53+
54+
extern "C" {
55+
// GDExtension initialization
56+
GDExtensionBool GDE_EXPORT scripts_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization) {
57+
godot::GDExtensionBinding::InitObject init_obj(p_get_proc_address, p_library, r_initialization);
58+
59+
init_obj.register_initializer(LIBRARY_INIT_FUNC);
60+
init_obj.register_terminator(LIBRARY_DEINIT_FUNC);
61+
init_obj.set_minimum_library_initialization_level(DEFAULT_INIT_LEVEL);
62+
63+
return init_obj.init();
64+
}
65+
}
66+

templates/register_types.h.in

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Template file to use with godot-cppscript
2+
#ifndef REGISTER_TYPES_H
3+
#define REGISTER_TYPES_H
4+
5+
#include <godot_cpp/core/class_db.hpp>
6+
7+
// Modify this variable
8+
#define LIBRARY_NAME scripts
9+
10+
#define LIBRARY_INIT_FUNC initialize_ ## LIBRARY_NAME ## _module
11+
#define LIBRARY_UNINIT_FUNC uninitialize_ ## LIBRARY_NAME ## _module
12+
13+
void LIBRARY_INIT_FUNC(godot::ModuleInitializationLevel p_level);
14+
void LIBRARY_UNINIT_FUNC(godot::ModuleInitializationLevel p_level);
15+
16+
#endif // REGISTER_TYPES_H

0 commit comments

Comments
 (0)