Skip to content

Commit c6f8549

Browse files
committed
Started building out Godot plugin.
1 parent 1006956 commit c6f8549

File tree

7 files changed

+133
-0
lines changed

7 files changed

+133
-0
lines changed

GodotPlugin/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
addons/
2+
3+
*.os
4+
*.dblite
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[configuration]
2+
3+
entry_symbol = "rhythm_game_utilities"
4+
compatibility_minimum = 4.1
5+
6+
[libraries]
7+
8+
macos.debug = "res://addons/RhythmGameUtilities/rhythm_game_utilities.macos.template_debug"
9+
macos.release = "res://addons/RhythmGameUtilities/rhythm_game_utilities.macos.template_release"

GodotPlugin/SConstruct.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env python
2+
3+
import os
4+
import sys
5+
6+
env = SConscript("godot-cpp/SConstruct")
7+
8+
env.Append(CPPPATH=["include/", "../include"])
9+
sources = Glob("include/*.cpp")
10+
11+
library = env.SharedLibrary(
12+
"build/addons/libRhythmGameUtilities.{}.{}".format(env["platform"], env["target"]),
13+
source=sources
14+
)
15+
16+
gdextension_copy = env.Command(
17+
target="build/addons/RhythmGameUtilities.gdextension",
18+
source="RhythmGameUtilities.gdextension",
19+
action=Copy("$TARGET", "$SOURCE")
20+
)
21+
22+
env.Depends(gdextension_copy, library)
23+
24+
Default(library)
25+
26+
Default(gdextension_copy)
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#include "register_types.h"
2+
3+
#include "rhythm_game_utilities.h"
4+
5+
#include <gdextension_interface.h>
6+
#include <godot_cpp/core/class_db.hpp>
7+
#include <godot_cpp/core/defs.hpp>
8+
#include <godot_cpp/godot.hpp>
9+
10+
using namespace godot;
11+
12+
void initialize_rhythm_game_utilities(ModuleInitializationLevel p_level)
13+
{
14+
if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE)
15+
{
16+
return;
17+
}
18+
19+
ClassDB::register_class<rhythm_game_utilities>(true);
20+
}
21+
22+
void terminate_rhythm_game_utilities(ModuleInitializationLevel p_level)
23+
{
24+
if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE)
25+
{
26+
return;
27+
}
28+
}
29+
30+
extern "C"
31+
{
32+
GDExtensionBool GDE_EXPORT
33+
rhythm_game_utilities(GDExtensionInterfaceGetProcAddress p_get_proc_address,
34+
const GDExtensionClassLibraryPtr p_library,
35+
GDExtensionInitialization *r_initialization)
36+
{
37+
38+
godot::GDExtensionBinding::InitObject init_obj(
39+
p_get_proc_address, p_library, r_initialization);
40+
41+
init_obj.register_initializer(initialize_rhythm_game_utilities);
42+
init_obj.register_terminator(terminate_rhythm_game_utilities);
43+
44+
return init_obj.init();
45+
}
46+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#pragma once
2+
3+
void initialize_rhythm_game_utilities();
4+
void terminate_rhythm_game_utilities();
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include "rhythm_game_utilities.h"
2+
3+
#include <RhythmGameUtilities/Common.hpp>
4+
5+
void rhythm_game_utilities::_bind_methods()
6+
{
7+
ClassDB::bind_static_method("rhythm_game_utilities",
8+
D_METHOD("lerp", "a", "b", "t"),
9+
&rhythm_game_utilities::lerp);
10+
11+
ClassDB::bind_static_method("rhythm_game_utilities",
12+
D_METHOD("inverse_lerp", "a", "b", "v"),
13+
&rhythm_game_utilities::inverse_lerp);
14+
}
15+
16+
float rhythm_game_utilities::lerp(float a, float b, float t)
17+
{
18+
return RhythmGameUtilities::Lerp(a, b, t);
19+
}
20+
21+
float rhythm_game_utilities::inverse_lerp(float a, float b, float v)
22+
{
23+
return RhythmGameUtilities::InverseLerp(a, b, v);
24+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#pragma once
2+
3+
#include <godot_cpp/classes/object.hpp>
4+
#include <godot_cpp/core/class_db.hpp>
5+
#include <godot_cpp/variant/string.hpp>
6+
7+
using namespace godot;
8+
9+
class rhythm_game_utilities : public Object
10+
{
11+
GDCLASS(rhythm_game_utilities, Object)
12+
13+
protected:
14+
static void _bind_methods();
15+
16+
public:
17+
static float lerp(float a, float b, float t);
18+
19+
static float inverse_lerp(float a, float b, float v);
20+
};

0 commit comments

Comments
 (0)