summaryrefslogtreecommitdiffstats
path: root/test/src/init.cpp
diff options
context:
space:
mode:
authorO01eg <o01eg@yandex.ru>2020-11-28 12:05:00 +0300
committerO01eg <o01eg@yandex.ru>2021-02-06 23:08:13 +0300
commitd6101538e695b0a38223fb1fa5ee32ce55e3223c (patch)
treeb97d4aaf152e038396d3713003e8831eba34cdb7 /test/src/init.cpp
parente2831ff5fab54a41e57976a529c6a42751a0a6c2 (diff)
downloadredot-cpp-d6101538e695b0a38223fb1fa5ee32ce55e3223c.tar.gz
Test build GNnative library in CI
Diffstat (limited to 'test/src/init.cpp')
-rw-r--r--test/src/init.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/test/src/init.cpp b/test/src/init.cpp
new file mode 100644
index 0000000..9164ba5
--- /dev/null
+++ b/test/src/init.cpp
@@ -0,0 +1,70 @@
+#include <Godot.hpp>
+#include <Reference.hpp>
+
+using namespace godot;
+
+class SimpleClass : public Reference {
+ GODOT_CLASS(SimpleClass, Reference);
+
+public:
+ SimpleClass() {}
+
+ /** `_init` must exist as it is called by Godot. */
+ void _init() {}
+
+ void test_void_method() {
+ Godot::print("This is test");
+ }
+
+ Variant method(Variant arg) {
+ Variant ret;
+ ret = arg;
+
+ return ret;
+ }
+
+ static void _register_methods() {
+ register_method("method", &SimpleClass::method);
+
+ /**
+ * The line below is equivalent to the following GDScript export:
+ * export var _name = "SimpleClass"
+ **/
+ register_property<SimpleClass, String>("base/name", &SimpleClass::_name, String("SimpleClass"));
+
+ /** Alternatively, with getter and setter methods: */
+ register_property<SimpleClass, int>("base/value", &SimpleClass::set_value, &SimpleClass::get_value, 0);
+
+ /** Registering a signal: **/
+ register_signal<SimpleClass>("signal_name0");
+ register_signal<SimpleClass>("signal_name1", "string_argument", GODOT_VARIANT_TYPE_STRING);
+ }
+
+ String _name;
+ int _value;
+
+ void set_value(int p_value) {
+ _value = p_value;
+ }
+
+ int get_value() const {
+ return _value;
+ }
+};
+
+/** GDNative Initialize **/
+extern "C" void GDN_EXPORT godot_gdnative_init(godot_gdnative_init_options *o) {
+ godot::Godot::gdnative_init(o);
+}
+
+/** GDNative Terminate **/
+extern "C" void GDN_EXPORT godot_gdnative_terminate(godot_gdnative_terminate_options *o) {
+ godot::Godot::gdnative_terminate(o);
+}
+
+/** NativeScript Initialize **/
+extern "C" void GDN_EXPORT godot_nativescript_init(void *handle) {
+ godot::Godot::nativescript_init(handle);
+
+ godot::register_class<SimpleClass>();
+}