From a52c42f29002e5cfd146a9362b660977cc5e8554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Fri, 26 Jul 2019 18:39:07 +0200 Subject: [PATCH] Improve GDNative C Example tutorial Improve language somewhat, and more details where relevant (e.g. regarding the version of godot_headers). Add a section on using the GDNativeLibrary editor plugin. --- .../plugins/gdnative/gdnative-c-example.rst | 470 ++++++++++-------- .../plugins/gdnative/gdnative-cpp-example.rst | 2 +- .../gdnative/img/gdnativelibrary_editor.png | Bin 0 -> 55392 bytes .../img/gdnativelibrary_editor_complete.png | Bin 0 -> 40089 bytes .../gdnative/img/gdnativelibrary_resource.png | Bin 0 -> 9977 bytes .../gdnative/img/gdnativelibrary_save.png | Bin 0 -> 9349 bytes .../gdnative/img/nativescript_resource.png | Bin 10717 -> 11725 bytes 7 files changed, 268 insertions(+), 204 deletions(-) create mode 100644 tutorials/plugins/gdnative/img/gdnativelibrary_editor.png create mode 100644 tutorials/plugins/gdnative/img/gdnativelibrary_editor_complete.png create mode 100644 tutorials/plugins/gdnative/img/gdnativelibrary_resource.png create mode 100644 tutorials/plugins/gdnative/img/gdnativelibrary_save.png diff --git a/tutorials/plugins/gdnative/gdnative-c-example.rst b/tutorials/plugins/gdnative/gdnative-c-example.rst index 37821335c..706715f7f 100644 --- a/tutorials/plugins/gdnative/gdnative-c-example.rst +++ b/tutorials/plugins/gdnative/gdnative-c-example.rst @@ -7,22 +7,25 @@ Introduction ------------ This tutorial will introduce you to the bare minimum required to create GDNative -modules. This should be your starting point into the world of GDNative, -understanding the contents of this tutorial will help you in understanding all +modules. This should be your starting point into the world of GDNative. +Understanding the contents of this tutorial will help you in understanding all that is to come after this. -Before we begin, you can download the source code to the example object we'll be -describing here by following this link: -https://github.com/GodotNativeTools/GDNative-demos/tree/master/c/SimpleDemo +Before we begin, you can download the source code to the example object we +describe below in the `GDNative-demos repository +`_. This example project also contains a SConstruct file that makes compiling a -little easier but in this tutorial we'll be doing things by hand. +little easier, but in this tutorial we'll be doing things by hand to +understand the process. :ref:`GDNative ` can be used to create several types of -additions to Godot, from PluginScript to ARVR interfaces. In this tutorial we -are going to look at creating a :ref:`NativeScript ` module. -NativeScript allows you to write logic in C or C++ in similar fashion as you -would write a GDScript file. We'll be creating the C equivalent of this +additions to Godot, using interfaces such as +:ref:`PluginScript ` or +:ref:`ARVRInterfaceGDNative `. In this tutorial we +are going to look at creating a :ref:`NativeScript ` +module. NativeScript allows you to write logic in C or C++ in a similar fashion +as you would write a GDScript file. We'll be creating the C equivalent of this GDScript: :: @@ -37,24 +40,24 @@ GDScript: func get_data(): return data -We'll be writing separate tutorials on the other types of GDNative modules and -explain what each of them is for as we go through them. +Future tutorials will focus on the other types of GDNative modules and explain +when and how to use each of them. Prerequisites ------------- -Before we start you'll need a few things. +Before we start you'll need a few things: -1) A Godot 3.0 executable -2) A C compiler -3) A copy of this repository: https://github.com/GodotNativeTools/godot_headers +1) A Godot executable for your target version. +2) A C compiler. On Linux, install ``gcc`` or ``clang`` from your package + manager. On macOS, you can install Xcode from the Mac App Store. On Windows, + you can use Visual Studio 2015 or later, or MinGW-w64. +3) A Git clone of the `godot_headers + repository `_: these are + the C headers for Godot's public API exposed to GDNative. -The first two pretty much speak for themselves. On Linux, you'll likely have a C -compiler, on macOS, it's easiest to install Xcode from the Mac App Store and, on -Windows, we've tested this with both MSVC 2015 and 2017. - -For number 3, we suggest that you create a folder somewhere that you use to -store your code, open up a terminal and CD into that folder. Then execute: +For the latter, we suggest that you create a dedicated folder for this GDNative +example project, open a terminal in that folder and execute: .. code-block:: none @@ -62,24 +65,38 @@ store your code, open up a terminal and CD into that folder. Then execute: This will download the required files into that folder. +.. tip:: + + If you plan to use Git for your GDNative project, you can also add + ``godot_headers`` as a Git submodule. + .. note:: - On this repository you will now find different branches. As Godot evolves, so - does GDNative. With the exception of one breaking change in ARVR between 3.0 - and 3.1, GDNative modules build for older versions of Godot will work with - newer versions of Godot but not the other way around. + The ``godot_headers`` repository has different branches. As Godot evolves, + so does GDNative. While we try to preserve compatibility between version, + you should always build your GDNative module against headers matching the + Godot stable branch (e.g. ``3.1``) and ideally actual release (e.g. + ``3.1.1-stable``) that you use. + GDNative modules built against older versions of the Godot headers *may* + work with newer versions of the engine, but not the other way around. -The master branch of the ``godot_headers`` repository is kept in line with the -master branch of Godot and thus contains the GDNative class and structure -definitions that will work with the latest Godot master. +The ``master`` branch of the ``godot_headers`` repository is kept in line with +the ``master`` branch of Godot and thus contains the GDNative class and +structure definitions that will work with the latest development builds. -The 3.0 branch of the ``godot_headers`` repository contains the GDNative class -and structure definitions that will work with Godot 3.0. You can clone this -branch by executing: +If you want to write a GDNative module for a stable version of Godot, look at +the available Git tags (with ``git tags``) for the one matching your engine +version. In the ``godot_headers`` repository, such tags are prefixed with +``godot-``, so you can e.g. checkout the ``godot-3.1.1-stable`` tag for use with +Godot 3.1.1. In your cloned repository, you can do: .. code-block:: none - git clone https://github.com/GodotNativeTools/godot_headers -b 3.0 + git checkout godot-3.1.1-stable + +If a tag matching your stable release is missing for any reason, you can fall +back to the matching stable branch (e.g. ``3.1``), which you would also check +out with ``git checkout 3.1``. If you are building Godot from source with your own changes that impact GDNative, you can find the updated class and structure definition in @@ -88,8 +105,8 @@ GDNative, you can find the updated class and structure definition in Our C source ------------ -Let's start by writing our main code. Ideally, we want to end up with a file -structure that looks something like this: +Let's start by writing our main code. Eventually, we want to end up with a file +structure that looks along those lines: .. code-block:: none @@ -107,24 +124,35 @@ structure that looks something like this: main.tscn project.godot -Open up Godot and create a new project called simple. This will create the -``simple`` folder and ``project.godot`` file. Then manually create a ``bin`` and -``src`` subfolder in this folder. +Open up Godot and create a new project called "simple" alongside your +``godot_headers`` Git clone. This will create the ``simple`` folder and +``project.godot`` file. Then manually create ``bin`` and ``src`` subfolders in +this folder. We're going to start by having a look at what our ``simple.c`` file contains. Now, for our example here we're making a single C source file without a header to keep things simple. Once you start writing bigger projects it is advisable -you break your project up into multiple files. That however falls outside of the +to break your project up into multiple files. That however falls outside of the scope of this tutorial. We'll be looking at the source code bit by bit so all the parts below should all -be put together into one big file. I'll explain each section as we add it. +be put together into one big file. Each section will be explained as we add it. -The below code includes our header files that we need and then defines two -pointers to two different structs. GDNative supports a large collection for -functions for calling back into the main Godot executable. In order for your -module to have access to these functions, GDNative provides your application -with a struct containing pointers to all these functions. +.. code-block:: C + + #include + + #include + + const godot_gdnative_core_api_struct *api = NULL; + const godot_gdnative_ext_nativescript_api_struct *nativescript_api = NULL; + +The above code includes the GDNative API struct header and a standard header +that we will use further down for string operations. +It then defines two pointers to two different structs. GDNative supports a large +collection of functions for calling back into the main Godot executable. In +order for your module to have access to these functions, GDNative provides your +application with a struct containing pointers to all these functions. To keep this implementation modular and easily extendable, the core functions are available directly through the "core" API struct, but additional functions @@ -133,39 +161,29 @@ have their own "GDNative structs" that are accessible through extensions. In our example, we access one of these extension to gain access to the functions specifically needed for NativeScript. -.. code-block:: C - - #include - #include - #include - #include - - const godot_gdnative_core_api_struct *api = NULL; - const godot_gdnative_ext_nativescript_api_struct *nativescript_api = NULL; - A NativeScript behaves like any other script in Godot. Because the NativeScript API is rather low level, it requires the library to specify many things more verbosely than other scripting systems, such as GDScript. When a NativeScript instance gets created, a library-given constructor gets called. When that instance gets destroyed, the given destructor will be executed. -These are forward declarations for the functions we'll be implementing for our -object. A constructor and destructor is needed. Additionally, the object will -have a single method called get_data. - .. code-block:: C void *simple_constructor(godot_object *p_instance, void *p_method_data); void simple_destructor(godot_object *p_instance, void *p_method_data, void *p_user_data); - godot_variant simple_get_data(godot_object *p_instance, void *p_method_data - , void *p_user_data, int p_num_args, godot_variant **p_args); + godot_variant simple_get_data(godot_object *p_instance, void *p_method_data, + void *p_user_data, int p_num_args, godot_variant **p_args); + +These are forward declarations for the functions we'll be implementing for our +object. A constructor and destructor is needed. Additionally, the object will +have a single method called ``get_data``. Next up is the first of the entry points Godot will call when our dynamic -library is loaded. These methods are all prefixed with Godot (you can change -this later on) followed by their name. ``gdnative_init`` is a function that -initialises our dynamic library. Godot will give it a pointer to a structure -that contains various bits of information we may find useful amongst which the -pointers to our API structures. +library is loaded. These methods are all prefixed with ``godot_`` (you can +change this later on) followed by their name. ``gdnative_init`` is a function +that initializes our dynamic library. Godot will give it a pointer to a +structure that contains various bits of information we may find useful among +which the pointers to our API structures. For any additional API structures we need to loop through our extensions array and check the type of extension. @@ -175,7 +193,7 @@ and check the type of extension. void GDN_EXPORT godot_gdnative_init(godot_gdnative_init_options *p_options) { api = p_options->api_struct; - // now find our extensions + // Now find our extensions. for (int i = 0; i < api->num_extensions; i++) { switch (api->extensions[i]->type) { case GDNATIVE_EXT_NATIVESCRIPT: { @@ -200,32 +218,7 @@ to clear our API pointers. Finally we have ``nativescript_init`` which is the most important function we'll need today. This function will be called by Godot as part of loading a GDNative -library and communicates back to Godot what objects we make available to Godot. - -We first tell Godot which classes are implemented by calling -``nativescript_register_class``. The first parameter here is the handle pointer -given to us. The second is the name of our object class. The third is the type -of object in Godot that we 'inherit' from, this is not true inheritance but it's -close enough. Finally, our fourth and fifth parameters are descriptions for our -constructor and destructor. - -We then tell Godot about our methods (well our one method in this case), by -calling ``nativescript_register_method`` for each method of our class. In our -case, that is just ``get_data``. Our first parameter is yet again our handle -pointer. The second is again the name of the object class we're registering. The -third is the name of our function as it will be known to GDScript. The fourth is -our attributes setting. The fifth and final parameter is a description of which -function to call when the method gets called. - -The descriptions contain the function pointers to the functions themselves. The -other two fields in these structs are for specifying per-method userdata. The -value in the ``method_data`` field will be passed on every function call as the -``p_method_data`` argument. This is useful to reuse one function for different -methods on possibly multiple different script-classes. If the ``method_data`` -value is a pointer to memory that needs to be freed, the ``free_func`` field can -contain a pointer to a function that will free that memory. That free function -gets called when the script itself (not instance!) gets unloaded (so usually at -library-unload time). +library and communicates back to the engine what objects we make available. .. code-block:: C @@ -236,18 +229,45 @@ library-unload time). godot_instance_destroy_func destroy = { NULL, NULL, NULL }; destroy.destroy_func = &simple_destructor; - nativescript_api->godot_nativescript_register_class(p_handle, "SIMPLE", "Reference", - create, destroy); + nativescript_api->godot_nativescript_register_class(p_handle, "Simple", "Reference", + create, destroy); godot_instance_method get_data = { NULL, NULL, NULL }; get_data.method = &simple_get_data; godot_method_attributes attributes = { GODOT_METHOD_RPC_MODE_DISABLED }; - nativescript_api->godot_nativescript_register_method(p_handle, "SIMPLE", "get_data", - attributes, get_data); + nativescript_api->godot_nativescript_register_method(p_handle, "Simple", "get_data", + attributes, get_data); } +We first tell the engine which classes are implemented by calling +``nativescript_register_class``. The first parameter here is the handle pointer +given to us. The second is the name of our object class. The third is the type +of object in Godot that we 'inherit' from; this is not true inheritance but it's +close enough. Finally, our fourth and fifth parameters are descriptions for our +constructor and destructor. + +We then tell Godot about our methods (well our one method in this case), by +calling ``nativescript_register_method`` for each method of our class. In our +case, that is just ``get_data``. Our first parameter is yet again our handle +pointer. The second is again the name of the object class we're registering. The +third is the name of our function as it will be known to GDScript. The fourth is +our attributes setting (see ``godot_method_rpc_mode`` enum in +``godot_headers/nativescript/godot_nativescript.h`` for possible values). The +fifth and final parameter is a description of which function to call when the +method gets called. + +The description struct ``instance_method`` contains the function pointer to the +function itself as first field. The other two fields in these structs are for +specifying per-method userdata. The second is the ``method_data`` field which is +passed on every function call as the ``p_method_data`` argument. This is useful +to reuse one function for different methods on possibly multiple different +script-classes. If the ``method_data`` value is a pointer to memory that needs +to be freed, the third ``free_func`` field can contain a pointer to a function +that will free that memory. That free function gets called when the script +itself (not instance!) gets unloaded (so usually at library-unload time). + Now, it's time to start working on the functions of our object. First, we define a structure that we use to store the member data of an instance of our GDNative class. @@ -286,33 +306,18 @@ instances' member data. api->godot_free(p_user_data); } -And finally, we implement our get_data function. Data is always sent and +And finally, we implement our ``get_data`` function. Data is always sent and returned as variants so in order to return our data, which is a string, we first need to convert our C string to a Godot string object, and then copy that string object into the variant we are returning. -Strings are heap-allocated in Godot, so they have a destructor which frees the -memory. Destructors are named ``godot_TYPENAME_destroy``. When a Variant gets -created with a String, it references the String. That means that the original -String can be "destroyed" to decrease the ref-count. If that does not happen the -String memory will leak since the ref-count will never be zero and the memory -never deallocated. The returned variant gets automatically destroyed by Godot. - -(In more complex operations it can be confusing the keep track of which value -needs to be deallocated and which does not. As a general rule: call -godot_XXX_destroy when a C++ destructor would be called instead. The String -destructor would be called in C++ after the Variant was created, so the same is -necessary in C) - -The variant we return is destroyed automatically by Godot. - .. code-block:: C godot_variant simple_get_data(godot_object *p_instance, void *p_method_data, void *p_user_data, int p_num_args, godot_variant **p_args) { godot_string data; godot_variant ret; - user_data_struct * user_data = (user_data_struct *) p_user_data; + user_data_struct *user_data = (user_data_struct *)p_user_data; api->godot_string_new(&data); api->godot_string_parse_utf8(&data, user_data->data); @@ -322,59 +327,154 @@ The variant we return is destroyed automatically by Godot. return ret; } -And that is the whole source code of our module. +Strings are heap-allocated in Godot, so they have a destructor which frees the +memory. Destructors are named ``godot_TYPENAME_destroy``. When a Variant gets +created with a String, it references the String. That means that the original +String can be "destroyed" to decrease the ref-count. If that does not happen the +String memory will leak since the ref-count will never be zero and the memory +never deallocated. The returned variant gets automatically destroyed by Godot. -If you add a blank ``.gdignore`` file to the src folder, Godot will not try to -import the compiler-generated temporary files. +.. note:: + + In more complex operations it can be confusing the keep track of which value + needs to be deallocated and which does not. As a general rule: call + ``godot_TYPENAME_destroy`` when a C++ destructor would be called instead. + The String destructor would be called in C++ after the Variant was created, + so the same is necessary in C. + +The variant we return is destroyed automatically by Godot. + +And that is the whole source code of our module. Compiling --------- We now need to compile our source code. As mentioned our example project on -GitHub contains a Scons configuration that does all the hard work for you but +GitHub contains a SCons configuration that does all the hard work for you, but for our tutorial here we are going to call the compilers directly. -Assuming you are sticking to the folder structure suggested above it is best to -CD into the src subfolder in a terminal session and execute the commands from -there. Make sure to create the bin folder before you proceed. +Assuming you are sticking to the folder structure suggested above, it is best to +open a terminal session in the ``src`` folder and execute the commands from +there. Make sure to create the ``bin`` folder before you proceed. On Linux: .. code-block:: none - clang -std=c11 -fPIC -c -I/PATH/TO/GODOT/HEADERS simple.c -o simple.os - clang -shared simple.os -o ../bin/libsimple.so + gcc -std=c11 -fPIC -c -I../../godot_headers simple.c -o simple.os + gcc -shared simple.os -o ../bin/libsimple.so On macOS: .. code-block:: none - clang -std=c11 -fPIC -c -I/PATH/TO/GODOT/HEADERS simple.c -o simple.os -arch i386 -arch x86_64 - clang -dynamiclib simple.os -o ../bin/libsimple.dylib -arch i386 -arch x86_64 + clang -std=c11 -fPIC -c -I../../godot_headers simple.c -o simple.os + clang -dynamiclib simple.os -o ../bin/libsimple.dylib On Windows: .. code-block:: none - cl /Fosimple.obj /c simple.c /nologo -EHsc -DNDEBUG /MD /I. /IC:\PATH\TO\GODOT\HEADERS + cl /Fosimple.obj /c simple.c /nologo -EHsc -DNDEBUG /MD /I. /I..\..\godot_headers link /nologo /dll /out:..\bin\libsimple.dll /implib:..\bin\libsimple.lib simple.obj .. note:: - on the Windows build you also end up with a libsimple.lib library. This is a - library that you can compile into a project to provide access to the DLL. We - get it as a bonus and we do not need it :) When exporting your game for - release this file will be ignored. + On the Windows build you also end up with a ``libsimple.lib`` library. This + is a library that you can compile into a project to provide access to the + DLL. We get it as a byproduct and we do not need it :) + When exporting your game for release this file will be ignored. -Creating our GDNLIB file ------------------------- +.. tip:: -With our module compiled we now need to create a gdnlib file for our module -which we place alongside our dynamic libraries. This file tells Godot what -dynamic libraries are part of our module and need to be loaded per platform. At -the time of writing this tutorial work is still being done on making this -configurable from within Godot so for now grab your favourite text editor, -create a file called libsimple.gdnlib and add the following into this file: + If you add a blank ``.gdignore`` file to the ``src`` folder, Godot will not + try to import the compiler-generated files. This is necessary on Windows + were compiled objects have the ``.obj`` extension, which is also a 3D model + format supported by the engine. + +Creating the GDNativeLibrary (``.gdnlib``) file +----------------------------------------------- + +With our module compiled, we now need to create a corresponding +:ref:`GDNativeLibrary ` resource with ``.gdnlib`` +extension which we place alongside our dynamic libraries. This file tells Godot +what dynamic libraries are part of our module and need to be loaded per +platform. + +We can use Godot to generate this file, so open the "simple" project in the +editor. + +Start by clicking the create resource button in the Inspector: + +.. image:: img/new_resource.gif + +And select ``GDNativeLibrary``: + +.. image:: img/gdnativelibrary_resource.png + +You should see a contextual editor appear in the bottom panel. Use the "Expand +Bottom Panel" button in the bottom right to expand it to full height: + +.. image:: img/gdnativelibrary_editor.png + +General properties +~~~~~~~~~~~~~~~~~~ + +In the Inspector, you have various properties to control loading the library. + +If *Load Once* is enabled, our library is loaded only once and each individual +script that uses our library will use the same data. Any variable you define +globally will be accessible from any instance of your object you create. If +*Load Once* is disabled, a new copy of the library is loaded into memory each +time a script accesses the library. + +If *Singleton* is enabled, our library is automatically loaded and a function +called ``godot_singleton_init`` is called. We'll leave that for another +tutorial. + +The *Symbol Prefix* is a prefix for our core functions, such as ``godot_`` in +``godot_nativescript_init`` seen earlier. If you use multiple GDNative libraries +that you wish to statically link, you will have to use different prefixes. This +again is a subject to dive into deeper in a separate tutorial, it is only needed +at this time for deployment to iOS as this platform does not like dynamic +libraries. + +*Reloadable* defines whether the library should be reloaded when the editor +loses and gains focus, typically to pick up new or modified symbols from any +change made to the library externally. + +Platform libraries +~~~~~~~~~~~~~~~~~~ + +The GDNativeLibrary editor plugin lets you configure two things for each +platform and architecture that you aim to support. + +The *Dynamic Library* column (``entry`` section in the saved file) tells us for +each platform and feature combination which dynamic library has to be loaded. +This also informs the exporter which files need to be exported when exporting to +a specific platform. + +The *Dependencies* column (also ``dependencies`` section) tells Godot what other +files need to be exported for each platform in order for our library to work. +Say that your GDNative module uses another DLL to implement functionality from a +3rd party library, this is where you list that DLL. + +For our example, we only built libraries for Linux, macOS and/or Windows, so you +can link them in the relevant fields by clicking the folder button. If you built +all three libraries, you should have something like this: + +.. image:: img/gdnativelibrary_complete.png + +Saving the resource +~~~~~~~~~~~~~~~~~~~ + +We can then save our GDNativeLibrary resource as ``bin/libsimple.gdnlib`` with +the Save button in the Inspector: + +.. image:: img/gdnativelibrary_save.png + +The file is saved in a text-based format and should have contents similar to +this: .. code-block:: none @@ -383,111 +483,75 @@ create a file called libsimple.gdnlib and add the following into this file: singleton=false load_once=true symbol_prefix="godot_" + reloadable=true [entry] - X11.64="res://bin/libsimple.so" - Windows.64="res://bin/libsimple.dll" OSX.64="res://bin/libsimple.dylib" + OSX.32="res://bin/libsimple.dylib" + Windows.64="res://bin/libsimple.dll" + X11.64="res://bin/libsimple.so" [dependencies] - X11.64=[] - Windows.64=[] - OSX.64=[] + OSX.64=[ ] + OSX.32=[ ] + Windows.64=[ ] + X11.64=[ ] -This file contains 3 sections. +Creating the NativeScript (``.gdns``) file +------------------------------------------ -The **general** section contains some info that tells Godot how to use our -module. +With our ``.gdnlib`` file we've told Godot how to load our library, now we need +to tell it about our "Simple" object class. We do this by creating a +:ref:`NativeScript ` resource file with ``.gdns`` extension. -If singleton is true our library is automatically loaded and a function called -godot_singleton_init is called. We'll leave that for another tutorial. - -If load_once is true our library is loaded only once and each individual script -that uses our library will use the same data. Any variable you define globally -will be accessible from any instance of your object you create. If load_once is -false a new copy of the library is loaded into memory each time a script access -the library. - -The symbol_prefix is a prefix for our core functions. So the Godot in -godot_nativescript_init for instance. If you use multiple GDnative libraries -that you wish to statically link you'll have to use different prefixes. This -again is a subject to dive into deeper in a separate tutorial, it is only needed -at this time for deployment to iOS as this platform does not like dynamic -libraries. - -The **entry** section tells us for each platform and feature combination which -dynamic library has to be loaded. This also informs the exporter which files -need to be exported when exporting to a specific platform. - -The **dependencies** section tells Godot what other files need to be exported -for each platform in order for our library to work. Say that your GDNative -module uses another DLL to implement functionality from a 3rd party library, -this is where you list that DLL. - -Putting it all together ------------------------ - -Now that we should have a working GDNative library it is time to fire up Godot -and use it. Open up the sample project if you haven't left it open after -creating the project all the way at the beginning of this tutorial. - -Creating our GDNS file ----------------------- - -With our GDNLIB file we've told Godot how to load our library, now we need to -tell it about our "Simple" object class. This we do by creating a GDNS resource -file. - -Start by clicking the create resource button in the Inspector: - -.. image:: img/new_resource.gif - -And select NativeScript: +Like done for the GDNativeLibrary resource, click the button to create a new +resource in the Inspector and select ``NativeScript``: .. image:: img/nativescript_resource.png -Press Create, now the inspector will show a few fields we need to enter. In -Class Name we enter "SIMPLE" which is the object class name we used in our C -source when calling godot_nativescript_register_class. We also need to select -our GDNLIB file by clicking on Library and selecting Load: +The inspector will show a few properties that we need to fill. As *Class Name* +we enter "Simple" which is the object class name that we declared in our C +source when calling ``godot_nativescript_register_class``. We also need to +select our ``.gdnlib`` file by clicking on *Library* and selecting *Load*: .. image:: img/nativescript_library.png -Finally click on the save icon and save this as bin/simple.gdns: +Finally click on the save icon and save this as ``bin/simple.gdns``: .. image:: img/save_gdns.gif -Now it's time to build our scene. Add a control node to your scene as your root -and call it main. Then add a button and a label as subnodes. Place them +Now it's time to build our scene. Add a Control node to your scene as your root +and call it ``main``. Then add a Button and a Label as child nodes. Place them somewhere nice on screen and give your button a name. .. image:: img/c_main_scene_layout.png -Select the control node and create a script for the control node: +Select the control node and attach a script to it: .. image:: img/add_main_script.gif -Next link up the pressed signal on the button to your script: +Next link up the ``pressed`` signal on the button to your script: .. image:: img/connect_button_signal.gif -Don't forget to save your scene, call it main.tscn. +Don't forget to save your scene, call it ``main.tscn``. -Now we can implement our main.gd code: +Now we can implement our ``main.gd`` code: :: extends Control - # load the SIMPLE library + # load the Simple library onready var data = preload("res://bin/simple.gdns").new() func _on_Button_pressed(): $Label.text = "Data = " + data.get_data() After all that, our project should work. The first time you run it Godot will -ask you what your main scene is and you select your main.tscn file and presto: +ask you what your main scene is and you select your ``main.tscn`` file and +presto: .. image:: img/c_sample_result.png diff --git a/tutorials/plugins/gdnative/gdnative-cpp-example.rst b/tutorials/plugins/gdnative/gdnative-cpp-example.rst index f1d42a1c0..95cd6723d 100644 --- a/tutorials/plugins/gdnative/gdnative-cpp-example.rst +++ b/tutorials/plugins/gdnative/gdnative-cpp-example.rst @@ -689,7 +689,7 @@ need to make additional choices based on the state of your object. Modern C++ compilers are able to infer the class and variable type and allow you to omit the ```` part of our ``register_property`` - method. we've had mixed experiences with this however. + method. We've had mixed experiences with this however. Signals ------- diff --git a/tutorials/plugins/gdnative/img/gdnativelibrary_editor.png b/tutorials/plugins/gdnative/img/gdnativelibrary_editor.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3e61d106723a374b882a129bf9e41269b07f19 GIT binary patch literal 55392 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%0AZcj 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 PK8rn*ewr)v>cjs5qx9-S literal 0 HcmV?d00001 diff --git a/tutorials/plugins/gdnative/img/gdnativelibrary_editor_complete.png b/tutorials/plugins/gdnative/img/gdnativelibrary_editor_complete.png new file mode 100644 index 0000000000000000000000000000000000000000..484e294e925e5d630a3ca1450424bc8d33758285 GIT binary patch literal 40089 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%0AubaVtqo~h0 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 NaZgu2mvv4FO#oc>{Cxlb literal 0 HcmV?d00001 diff --git a/tutorials/plugins/gdnative/img/gdnativelibrary_resource.png b/tutorials/plugins/gdnative/img/gdnativelibrary_resource.png new file mode 100644 index 0000000000000000000000000000000000000000..5246e247e51ba4ec26a33a90d51c726eae585388 GIT binary patch literal 9977 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 YKR9qh>`(xoWxJy&s|NoBdlvS;06F-2zyJUM literal 0 HcmV?d00001 diff --git a/tutorials/plugins/gdnative/img/gdnativelibrary_save.png b/tutorials/plugins/gdnative/img/gdnativelibrary_save.png new file mode 100644 index 0000000000000000000000000000000000000000..5ef36a136105ccd287d62569fa7057bf86d920b3 GIT binary patch literal 9349 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 literal 0 HcmV?d00001 diff --git a/tutorials/plugins/gdnative/img/nativescript_resource.png b/tutorials/plugins/gdnative/img/nativescript_resource.png index 3d323fa0c8a32040a0f4074af5e7f237a39d02ab..fa31dd7b85422947e903dd619d9ff4e1619f4d85 100644 GIT binary patch literal 11725 zcmaiaby!sG+C7R&Hxk1TLnG1*-Q6*C3j)GWf^rOg5J{1}oN073dw66F3Zr+&*Sg~b)w9_@HNpkQl2Rq^( z{f}3acVrV}N9aNrNu};W5ROcw(l3+bMxtI}XdN#4jqK$&oH~n`*Up^M_<6PWJM3TM zGc|lkrMSacS^-;codddR1`W91`QEJj zoE=J^|1vlW4h&?49!}CTwYq!m1vlwKpxQzK9iHb3aVkSWM3+jo*?B=5TU19|r2^u9 z79!d&a1x93M95j}i<*RLrx#s+#?4xP`>{&W?qJanq;zjMhAHH*ZH)TM$$5>#9!%FhF0 zMqRS%Ds^auW_|N?a4}U$b|29H@^UBd8(yPGghF|_?ViUm?(TdLZo1X}(qU@Un{}%c zeEx~@8ly2->H|)(LtHg(MyM>c0`qz--REh&Xm!C(L)V=KDvqMA4%zZIbJIREQK%jV zqTpOMuC7n)haYh~LK$@ImKO!xe$C4JopIOU1XeZA^9u+ILj7u++qpQN6(ESTlM47{ z_cdPfp3KMFqP|`=dg0lAr}Zx5Q$r>{#ElEZSwl5%_dQLmS+Z1b5j^`k5Dn7xebBdN zOx&2kD64ERVC&GCum`C#P?^Nn&wJ?C&+?;$5#NSxEB*{Q^Y}!4m({dsq2la9a01aB zkd$R8V~i!>Ivi`8B+8taQ}*3?_*LR7C}+dlLB3fqWdZaX(?Z+g38RC#+9`sH{RiQ> zHa&tYeDN|dn-#j~)h{TdEV66$*tKc%Sr&|eo#KFvi$m1X6dpwfJip%i1S95c!GrS= z`Z#{Q0<9ln4VEBon6{j-1#h=bLD$0UCEU6Uk^>xG8$T- zOOUNPpYQ&!BtkP z(PWL9Y*#pBcqHF44I_fN)mM>t(hI>{+jO^uC^;>Sce_20Wn+^z{jJg(gL#W5POi|( z8?h3u6Jap{hD7Y-(wKY_Sgd+l&U7n-NR^PUxx-;ufu%}()swH(i~9t*N$J7|Vb~8V7*jgcX9UU2%)FfKrln9I$ zIAEePm8mK*_hxjyPg5awv|iDROO%qnrxa7{hE1@QU%A?@=uukc!7QI;r0Xm9uPe*# zg%+%|Xh$c1RwyyMB*>fai;BVoIeX9*$Xw_&l@F34DfcG_(m2f=y1&Qg?i!z{dI|}N zg+KVFN4t6pz$O;*MNaW-?Bs%s=q)8BsJyb_h;uNiGk=qbj;X5ISLc|7IGt%#&gTh} zJbbk>qzE@Nx}9DaD7CuY){Mx6SCgRm<3EZ#j#og@lmcpy`>MTI>**#bI6H|JlxMSZ zGgE|(p;+c0n#zB+xEqqjGY6E5)&52p$j|j0;kZu}*xF#A3a1}JikR1b8XTQx>PeG` zR~mj633ukX8t*87uNxUPGFI5`M|jKdd~zYaWg&{SDoE={9?#1tqQcA0ojs&#p-8qY zE-Gzdjs=^GvMX+ZBD%dQ2tO6IfrI$EFZjXGMM_7QA-V>)m14IC0h+)B8# zT7KV3e1&0cU&9dwxodrpOOS=27rV|L;r_e(z!-jaA3_;cs0=0og$W4*4*c#&|D{F! z=ZF6I)<64L8xITzTQ#@yEIB+h#03{(Ooj`aYAvYn5I1MIg4X>k@gkBD z2iaRr=5>>XuTQ z80lJJTYM^8^cHnQAZT(K&H7lNSqsIW_HhNE+m_ApcW}W&Q|}~BhOoA)@&Y9ezC!}K z5t+AG{fNFrN&LGqgn|;n7|dnlZ?N>TIXFdvwiZqj@)6^%4He6_c_X zhT-y5CW58@B>jg0^kI)@3`8C!eg$B!iOH4*0Cvb)c!;RDJ@Q$+OyV* zMa$UFjbD@r%#L-b-{ITis4N5i#%FdYYo8#if@8N4-_~Wz*}#~T`0eu(5rOlqylhFqCRn>%9kl zg@jLC^@}IgjpJ?$X<>t`%kQ(xhNYa(ynq%~$UNi@)~%X6k>HS{evgiod!0Pg-{6 zc`7qN)sn>n39HijP3?cv{omC7PrCmX|CgTTVE&82_c0*rdP?d_&-~#_3ld7^F56|V z^88+!ec8Di4_+GQvoId2t3M?o)x~Qm8*?JCv8;nPz3sY4Q zXN9dnC`m@6W7-1ag(=aHr!GsIhx&{$koWTsz{0Nfj&6T-hUUdoEh69DE$V#z<$YT4 zaziZ$ichoBj{Y>a>grb+u?#Ys5eg`Ux%0@VHaS3`QWIlgYo?ai?$czL8SXty`?^DN zzqP>=_k#r?B}m9majq%CiewmH_toAeEne)f>tRfs%Hub03<__X!xaTxyzaB=m<2qo zS+t8F>173ETDNObv6mM8BLct|+`zcRR6Z~M_)19x%6mwYS&2N3lWGJODs7%`VW87^ zrmgX+q(Ut4yNdlBR-LNgHE#4EY*cc=ako6(xZ6Re{>&;B+vAcTeuOOdCtZlp29_lV z#IQBPy%-dW|GIl<#Bk%WM?kLAb94V^GQCBI}p^Nv8A)Ad#*Odky- z#69FqTAlD_^Q8lo@wdC(H9)Hc1Y<}suVqbB8htzL2s5g`tX%@B>{KElPF5Q6iuAlH zEbR&XvYcCtmh&<~$DaWUGRgo=t4y#Edx5Aq@Oou>I^TL|$w#L!J2SwVoQF5NZ3 zX4rC&h~hPFm?T9ac)EG2`-~aO_H%NY`%Ub_l76J+SSTItETA)nu1c3M(y^C6!K`>< zP+I&<&RQnWq5oxtA`F=yl%=O-yG9J(Y(kIJ)wkH#qr!?Gk@@_y$<$!kP8KHHTy?0n z|A8V0Q3rUEEL1OxNb4K0EBJ2X)ACyP6a3h64AwDcKnfYb=KebO`2hCxIO7KAo)M~%|E`X z693<{8qDtw(&v{v(3LQUM#KTLB<%eQ72(7w))|(R&e5>zDPi(h-2ZNI?iXK;y!P%R zRZOEfm`UrLwqt}sS)Ar@^x-AdF1}tKWnLCFIA88wW8aWDs{gf{Xv@CF=+Ztl#W2?+ zlJxzWMmDzU9V&`k?PZs3uoPAMb?hHRzOhN=dZI5=yn(GB;L<+4cdhu~LI1d{!9JlU zWi~owog>}Y+El?G#)+cy!OkVB+l(lA&md;+W-Fbh`Z-}*utB&5L$rwvDyWqWzJK9BnYtq;tPPE>{$`YLM>r5Ee+Y0F=p zh(hb>x|s-xlX~;+2tn!a3Jiu9bYX4n zu+V{tx2jmTo|J*FED=)wxC}>%n zX!p&74*H$aZthXxV@3-$9vmJg#wiael$N%;sMzvYvEEZ3&;trcg#g9b~lC2_(?Pqq)A_;CrM5UKuE$TzCEQ^TWgMf!T6!@XW!oMhU&;dckrw6BcFG7%@ zX7g?TVerJCO|eG{P*s$|t@5ir?KdN{>)>~KCd)fJl=S#=Z5amch2=qV{-q2MCJWGA zguY+qcXqm*XL(%*5hW3WZ(~v^sKpE0i~ZgpfYttgnjupAk4*00XRM7%ZSD6z*Z=Q6 z`|r;Q>*IHHnqNiUUB&{Cn{F(llJ6zOh|NYBE(2$MLXtjvLe_!N5=5Lp_|~cipUbyM z{4S=d3Lclfs^DnjgLH^f^iuwgnQ1{9;oHNBQB{L2TxGmgTxyTip;FOm@rYMN4)G@@ zuK=)n?N_DdOx4A3rc+L&JqJs}$22r)8vJ z9DMQt5d(r~vSNn5` zX4HE_-x6!GFRhQh;zyx}yp#%+At^y4%$;EM3C9?d0#$rhk@flZNiSk1SWq6GS+n@g z3s0um>j{7D#!I`xhF@)aj2^kvH4=V%R@M9}4vLbtp9w?|s0?|yv1@iiaX~c3DxBPn zDEIZdJS!tBy8F2s>9R5Xg(GuKRyi1#u;{-c_AO2+nUL$uI$NnzcFi7&R$RMx>Wu zVE%RWkHG^9YbpGr$v82e3Aqn-G*}yK)Fdb0#*`i(P3H-;!&0${0iZH`m*KVBm@7pb zlYGjoNu&cYIuERs&=6YV;U)k{#SvEAd(Y!ccY8Uw@}|5~Ud~9Zsmr5zow~sdk)LHs zPDiIKFdWQ;NR)dbuWL%7_5Mmu?~k?tWxgYob2gT=`9lfTChul_)}6KfL?G+yqi#^2 z+1?-M)c75cnqEBUBYeG~j+V@bpQsV3P!>h=E+Z&Wd5Gx5S;8_$)D=+qqT_$5e9Q-k zdOd|dp0)XnCe5Yo`c6i9!Gv}MGxCe@_t0j@vwqDGC(SP;z&gjG+O8NR0x#0>&5*n7 zqIZu~@G_4#dK{es>Sd7KV8VN)KX#^5K#!7p=9=%(GwtkADXg6pEOAY?9|DbyK7mA> zjyNol5S8`C8xhpwT0}FR>U#qT;bnEZCS$4A7@0vqnjKmu*-q^3sJ&h3NH@Qh5jxI( zr_TiKyr|w2*wT)O?X3=2JVBgjz-oDT*wqN0y`*&oZmbri`<81NKQV4Q;ANo!98Gwp zP6z50$pXniX5SCvQ%oqZXdf}&{@l2x^Wr()D)sr9Kj(ehdwh34g^Kq_s+vz!blbVNBJM5DBM{CPi z3}G-6Ph|4958cxy2wiox(Myc}14lp`!AuU~)GHzt%6Z++e(L@{@L!UsKfLvC=kvFb z`R#0g>+8Um?htthf_(k_Bri4?s+VmGay!Y1lY0as2;ZiZc($J^xGbZ^P0!4fUwTE_ zP96C_1-!U2JTEV=+X80!sk8k3_yUtsHbv!NwB`t2qH?_#9~I78*p@7w*wv~;4V);+80z@laVBq>y%cDwu*Z2JHUOFp1PGV z-#)9j?sMY&iEqW(-tBgzt-xZ}6#&M4l zV@BgNM~?7fBG`%00Nae-#n+rdco?CIrxC3=m_98cedo7yQYf)qwK#}KSxs>>Ym@P) zR}yq#>RYtkZT3tJ4X&p;j8**n6EIC z5qFGh=Iow{l>s4>87#D0MTH$!AA{g~c~?ODd=-YSMZi1uGm9TXu=kS6v6LH+C-a?K zE81a5Nr_4wTS>%SdLiw^z_90~53cwL4>MHM_qVp``Bgu25}A`Id@LhvYA;0bAIyt5 znEXHsd!j@kpWhT1o9b-*h>fIl? zz@OG$_m*-)VSJMeP-U1g%;e}@T@r`^D#O~qL_;cN{rX*q+=gtw-QlylT=dW|`vDOm z>uU37c}XcQmfKD(0Nc03`YN7L(_b%GBalJ+_A08si{)V3UbDlau6Mjk-O_d?M(xF< zXXDqOjJMQvFccY4Zr#-2(_Lnadlq&8Luu_MJf8xd->P(Qs^XizZd=c2HPVmzHE&4?!Dm(FyrP}QOQDG!Hy5=*x8HMb&vKW| znslG72A9RL7C<1@;mUX`6hkKt=(lfF@3}^loJ!sv?XDC*Q_IYGa{@yGbY3Q<{^0c=%CE;A$_V?z$RN5q8YN-b6VaKZKY z3me^-8X)}f(ojR*UY(OK`yVA1+#VYE$Y0hUs&-ynYzK*7V~|9ja$^=%w?v4-ew0hJ z9e>LV3Jw^1xE>z06U%iwu_($)rZzCN7+*~IV)Nm2UIr)b#ct#B%?wM>5c@(RgfPeQ zxWDs;gVfY@{T&6-NtSTj)n`@ zDYF0*a%y^60Udc1ewirZw^uYaF&%od0*b=5b#&U7XPUn~aS3v0n<~qd2Sm}uda9-> z0a#gSguPOTh&VY8Lf2#waJAiTqsZgDQWKhj>bSkRJP(iDoNEQZE^&JmONBSw!naiKVF$`khQ_DWM$X&jW@7UMa>kTw%8cD@dI%yZjc~gj&ak*T zTzmP|yBS5e3Ms$b-M{%cWngi8y&pt=0;u`J(VJ^>JoReUSHfNovl+0F*}b!|g*&xD zQ*25`cP3dQG<>!b+UQiXx-%z2y#c6|-vV`q?g+*iU4L_n1Uax;Myn+I#Ih~^VpNuN@DlAtsk=WNeFHxFg3Ddm+( zgbZ%$2FiQCHt7P($L8vn`OSe2xqLw2_#M*jqDgmAqal$_js?A&(V!a=5m~$;%yDp) znElneJ@#6KX{<8n{*p3MM8x;D}{uj0qv?Nw&y#i)gN#)YHv z?#+5)0ezf|qJl^q^n0l6y;D6uYjZ z#-QZ+v*n=MpukgFBOkw*Gw{XL5f^+LnrP8rJD|w{Vb=sop0tjlVow};Uc*#M2F^de zl=P=x)Txy4S(%g!c+em%lHJ@&BpdCUh0n9Nd~@n0XK0)U7WO2|wWB+Uep21geg@z( ztE{S^JgI8evJy5+O9fhCXxw^ zf#Jkzyg0>8o~c^gNy;*QvpB-S%XySXP-R|&63A)2$42s0Px#uB?Xm{l3?_M;YNYvCi!+bFMsoV~mT{hB3&_CYol z+c|exL-B1Yw^J@o!u6BXcKw|Qni8hMLSfu^I@i>2cH0nXgczVq;sRqG?)R|#2$y4C zBSe^iodL&6l$-Dos4H8t8Uc+P?uIfWxkH7ySf;QlF{C}`_mYJ(!TD%)(l^mK=5RuA z{`wvX^B`awK0e-V6!}#8y|D>(9^o`%@_5m;kP!-I0^c#|V%zJ`6bT;Z-VmVT`ZX~B zNs^O|JVsjFS9Y$KT{nM4qsPO$_eJJy7R7^Z zMu;>7Y6s$ir-pyI;LsT3(T)0u5UY#km9+eAmZdG3N*^MPddDcG?&Maafj;0wy$-Yc z%J557g%1Hq%E}?=jOqiPi3}VqI1w}9Wq6(-Ju`$2<$pg~Jr#c{_+}!uA(drdsE4h2^GBN|2s_@F=>JH9u zTfpdbJ9OL4rri}(55;>Q6-OA302AfjSsaiL6~YXM+G@Hf%&IHljf1hH+8Fsy912iD zPfleMu&R4Lfn(Ok0Y?{1F`?|Lsa}gJp#*`Hb`J4k6e414@=>+*WRbNz^{Hp4ONsXf z%NxV0(2$gt!#cHC#ns7_>V$;g{cp6lWKQj|hJ0&lbIH7VN8badE-a&L9CVJ6k)H~nQ#{e)6nU&PN)zkHpFvT}1 z)a85#!zvqjm9i^rGJ21XA|3IiGtvU-6YJlcOb7Ht7b@rDxB7}J+cy}d3hHEI^m_s+2lZYF#<23eTN2G6}yZW9dSpAYX4LV(c} z{kO3BcfiF8&-jgA(1^$}^P>K;0G3NkZbA^n6P<0fjj+IVBh=R%e@H$k%fSd zg)%!aai2*A*Z3_qe|;GI#9(-#5*e@aVY2o_WDnDz_qCf=V!M)L=>~3p5$*7ciQZaw zJLTaqDgA`N*y8oBL?yqv%-?G6A4B)Q_~hTy_djA{WIHL+l^XrOlFFaM`GGI&P@p8w z{b)C@Nm_v!=I)7VHQ@XUOH9q5T5gLs{$ypOZ!ULP2QbZL0N0@D0^$sCURGXKzRTu@ z>hL3?6Q?|M2SL$}3qkZyvRw((#8Tur5CE?@T7TP5?}T*$Gy4}N1R5yNToGSUS1&u> zsBhppmuF=|`O=XZU~XQ)K65NAPtVorO-_l%b^Bdp=mil0oP-!h%IZC<0$)iPy5|@Q z+(}g|s5OTJWI(+bDhM)ps4^wspsA)zR0c%0nVl0rB5n75g9eIS3 zeD&eS{QM11L9RIN3m7oxBIG_DS0}v}vmb~w1KK`Js{r&}3H`I0;OxIcBYO~a~Xu1FTCw^22 zTS@HucRO|gI#isxv)JUoJPm6npnjfbXQSgrXxI*e^-r-4N zKB;D#ik?>P#r9YhhCX-SPo9Du`f_vZJXp3L*w-W~-p-{Tmtx>8HDsanq7>0~SdyFy zRDo?$$#M5mur>tr3zIVAD&@h}dE}ig%@kfXn4e21$6ZFnZ}$KMyR{Tjs`^2Sg2zRiId=`M8tFfN(tP$Ck(R>T|~!UkH&`0e2nNRJVSw#pO)|>ioxZe!nIfa*fGznXgT~8Esx* zvE84Lj}_w-qBlAtV!4Zbj^4F8F__yZ>W&evm1MF)>~VxOc~8eA?^p$3zS9~>-yOo# ztRpqpWK;3`P2X$kW`;ObysoFq9}J~kvzL5U6}x|K@E^9WU(>=VF}lEU?cf*dlOJ`H=*t7m){=(5Bm zpJ`ls{+wRyY;95z39g}86|@zhi(fMU^F=^&714x9S@ZJ>6x%OLh8*j(OohkNT8{ie zfx89Gj3_{?A`q(6Fww7yCGE49YA|#q+{C=s(rMV^bdHVyKONCcduIlnlaYivaMxS~ zX6%X0WX*ZG6R2Eo=j9)eQxRnbtMeNk{$A97>_7fLqJ=-Vg8k8q{+^Hg@7(RrEeQYU rWq%Jb{~6BxbDzS0#&$j?=eKuOb=5t*L~DWl*=Wl08gex!P zuC(`{vdR&YA@J1;TKE(CKtjrNLK#dvRp1Kx(?2cV$kb{l?WM!(kiyqu7oznT1@>u& zdM;X%RhjgoM+7RHbkqfT&f1?pg;E)w&o?|r%aDL5u*ZD2E=kX}>;mK9sdl5@*PTAN zfDP=ya@Z#t&O3e1x}NIe|9<&<-uCD^}?G?Rj+au6tC-dG7I&E31f3S89W=nl7C~^hPH&bVB$_mSmA0!J4;k<|sqedPP!I+fLPF%8y=ebAtA*?v);WOnR>xiE9To)3 zE92x87erbYZc|PVp&r1yJxDBj0vxiNQN0#F@f~)cQl^R}uM|<;BEP|~>eR|Wm>*gF ztd$D1hCj(BqB&I8oyi%BqBCHEk54i`3e5Uhnmzfpf6qMstE60fgM9=CTicXauU?YT zYZLH>BIi;tj>PcG>16Jz1FgBiJl-IrI%bR^Zvm`pi&N4Q&CLey9R@>laIPw*tKERl zFq@!=?@H0K6CO0Biu8U)wq>D35n9rG*;A&7+K>RF-ldPVW7NZb!xiJk5>JPQ=AH?H z$Jd%ajE+>e8ba7xP*bKHcvx~*wup!xB{G=6Tusy{(_=4D_0iuFYO0%q&Y5V~9CtT< znKr3N7RrxE*t>V5^{-QjvisU!U3Ux3Hhuq5SEVr7uJYWS&4;Lv_*F5#vnZjQn&NNE%cSM?%D&(5N+7BfuJ8nQ}#DZw}4|--irfrqnjt7!$>*Q z!l0|bt^f%;kjx&Dqmj)10xd1wEuKUsoXNXNiKFaTce1Lq$nGOihsixrwbuzkNidz` zY#)4zU%D}QY%ffJ=b5SXj8XjYi*1Xqa9e~6&IIP$X%-sCUM(8F#Y2-Ay?xw^**ZlVm+O9AiV2E&bhI^#NNaX zuCffn&sWZ+R*dDAmaD{mGycwE7)`?alo zEpB+($;a}@WM#~v#rldbCe$!o^#@sPUQAJf1(k7G<;D=~vA|c3E3RAdzG~x39de`5 zpZQG=^z1In0SHJ8SQkK(Q-aqxM$x*oF54Tw^qbL@_(MZY!&f{wd_T6!d&l04q$BtI z%gf$+&3;PgKnoodatkIsrC|Y|#$->E~$SjfWhL8u{ zdj9d()lK7LRc6j3r7Iic4JRj=GWVk$!Rf!y{WUi?Xt^n;6387ms7vO{*jX6odiZ$h zIY`KK>ytlMTj_uiO4{y6H2$RW{)TU$AC?btqbtIFObsf4aD}Bh^%qO9;d0SNKF4mc zwPSeE1zKt#U;l$FrSHAtXm!U0J(19j9f~5+iS+ci(pD%vKXc{r2G5uRFQ%H(V4sMu z0u5VXkOHM)eeB$JYAq5!J&B1bv9_@!3$IwvkyUeU&q&zGC|kydn?xe6g%x zS4{nbcvDrj%kqT8$=+fC9v76WwAdx6izn7<>%a(biT}z;|Cyow(UO4>{oh*v82pvl z{`CB-b<5y-9J)bAJ;Lv?q%4EU0PccM3{*^>CRM*Z_Vge~&=Z(#h;h#a?p$%EG?HD& z0+zKpO_M9=PfyP=&d&V-$ds{4W+3)1GyQQ;*7rkJPYI0AGu9V{QEv}HRJTiq?6=ztLiNDIwDpP7l z_DfjAS8~!ozS!ka_mZNApe(9^(}MrK9~WSE;k2QNnkpoeQV?B@PQyd@P3!aI#Oc zLu2`~6XQ>FYi`G=X$<2`FGF%e&t~J+ZWvg58(5s1%a?}Ox$ljHY@cI4l<5Wskjl$0 z@UXdx@NP^*OJdSIbZue%Vv{3&TIOK z_6ES}kS}0$3j_JWvE?s4_DI&ZfYkiv3P#SX}J3 z<$L{hybSjWIFF*zbJ9{o(9(c#17Wj;Y{-i<`M4U(QiD#ZA}bD zt#+BHM&W*>L4-2Rw_Ml^|6pwZSpB2*Zw~j5nD{%ERup)=HclJ@31yhkvdOOq0>&5v z33(6x4iMg9T^+Jf%x{_C4L50>e*6t=Qrr4bz#=6!Y0MaKDB4hX+) zIUz4AtCa@?;`9{Mrkk6aeRqMQz+Ib}N%zTCNJz+PLh8In4eGO%4~LsAPKAbsCY$=7 zmv_-#ZmI=@dr3>9s9x{bNcqAik{cStQgO0w*MwSlxVdAgot&JmH?m{C#wI1@=H>?L z3a9hgsM_1J{n@O3xcdI6niSr1*{MN^Q)(+t4r(f@2GC+_Y%Jl*ocejZnq-&<)x?YI zyu7@#GcW3w=tBJba%es9L8;rT**bTPp|P>6IfOq3@|P9wair|sQulIUO-)Tf-V7Td zbpHC@rc@-fe*4e8ts`nZFu!LLQc{MS$;h$jhpJcO|yx{@v_<|M{ng`R`Wg{ku^Cp9hKxOa`KPcr@+9 zYlv)Wu&Un^09U!FjL55tD+8b(vi*z(`;ruDB!N0HMo(KP_Zepb?*9h*i!!V@cboF)0a7Ym zRabxV>qzkHYcQfGwVqULQhhkU%k zxaFDw#X(8ONlOnARv%mq)D;hTj5Z7m7YcIwlj8|xAnX*gvs_=k-x9moKlC_^4CJAa zc+3RZPV;SNwgE~A3PZfY#-gvZ6~R>+u;0A^?Zykqs}=`8Xy09=v$5LTB})Hh2M@ft zL|2ua1u`;_>Piuu9rx*9^b7>xxfY@7M#C`Ih=Edbk4Bj0VawQ1>#u&HPCj~nVcW$Z zXMova;z?d`b?r&yC|68|!Be9e_$nvDwSc5hBFWQq{e5lYH``9E^b&x>ce&ykfXQ%K zMY_$p)av33MeCJA#=Sr3C9L(nvdb8dgjU!UFd3Ewywv3`%9owG-Q$F7JWn21CJ70D zI!2}~>Y;KM&NhQj8#WV(q9mV`CW{(mdq20 zEeHqZd@Q8{s6a~-Y#d2#W&^&h?LM=X@320smT&fJ%(wiXJhGLCZfZ*xD*M1)jRed~ zg6oW+b#`23XV{G=f9++x-V)684k)0S0|DT@IvETnE}E)#-G%}sTh?&Is*}SeIa8)l zNT*dez|YCC0V4TLEPk%(={xJ5WgcN&G^T0nL=wzsqp>N8?p+taaQ?oKnfl<9;|#~` z4WgJJ#p-br`287X&R)KX{X_hh9EEvgt`dBw^EX;NN(Q3L&OqiEW-0|KBg@|iEs&2L z1DU@3faVvR#b(v1sMtkbK>O`sB=N7{uqqcvH$h&HZ!3jDI|T(!k7|T8zVu=-@Yfcs zSH)Ca_=doYCFn$zw8DEy@1B2p*p5fAlznko#p7>)pZ$0X@OMa56o<#Xl*S zr<4O2ml85KSpzMs8k!!iIkw%sP-*b8#$vDNEFUe{UnOY7;&nE2=jSx)s{bP67;>&%2|v8_o1K-~gsx_bOTW(odWsaIGI!~qfW z4fgOL2z7fiQLywtA*#<9w?F+Qe$ulZHaT_UuCHLYhr0gP;OL;J_)LglY##1AJvxV0 z1|w?1M={nvr(|=d;oL~r2%GPuG=GYqteB=pzZ3fS0k^Q2KMg7VLs49lwEYbCFVyKsV~^I4?I%L z)Sx(TAXe(p*YNvdR0Y!jonp}yVvxAg2gb6RgL%NUmoXnq;_!A%E2!&-} z&!L^P9Yjl}Q%cT=_>n?8@&m_K0TrQoZ`Njc8dFg@~AKT%l)B2qW07h6uLk&eG zJ}x%XCsMB2nOCIUEsrtt0T||7ytJ$8wp^n^><0*8`U5P30Z9*^z2MAKi zak$xecvYf6l%T3VIX=XmYC2K?m@EsXz;pJ>b2)fz;B)&EMl_R8I=_d;KJ3)ymWZ%P z%I;(m?~2V%4`V2hkt9}Fc8OXknz^?Lw><||$3yXU(p>n0h!aO{02fTHlSBCp3P zM-KvQ*dXlEVWU8wm+x-Z^4BxZ0tQvBL1-+lfDEKmeR|#JUb+;3M|^_FzYb!5zx}=t zCh_MlyZvn;XH}IytdcSv{i#$D%*LLah}YU%Ugb7ub8ApiYWWs={($4{@|tNb^Vz&B z8i)oY08%;YJcF6xt75u?*5I@90F-}++1(M;yFq|V%`f~13hu^5C$pu{ZxK2Sx^MbG z1~Lk_dPFYH!U5}@rwS^|BR1b3>b9b04As)w-(tTFbN|zWky2ckWAW-746CM*@8{fY zg|oob+aX;^!qmyB{dOa%u=q92a?) z)EthLtT(RgtTS1jm+x?cPgf>VkexIC=b4_yx51O%nhYKLTKX*#vqesWs&nnEJ=^9# z@jfL;0phzltGF_xZ(cy%Bo1(SjsEW0C-h9s1=X9@DHI45iVppD$p= z3%f*nU2Z=%c4sQ>|13Qot0ki1-6XUeH(JZG>UD!_*J4F#Ich;sx86Eeo{Qrz{nzxS z_rko5WoIHqUi6|*3jUZXvlB|C4|*n|?`*#so%kiESmEU^%^W00W8YmGz&UyQv=+LSb=&iuI5)35_W>2Wj@4IeCq zSl_oyl2uK!{52wM;=}~;-qtSRM_;3?LcuxdpKZJ1nytr;QA!j96d_5`f#7bnEbfE2 zu4Oeh%lIUEqU2JPVlq16dcO`zYsldEYjV|_HcFjA_)MXuQFgncgV+jbPN2^ zH@56*nsu-J7jye(!oO+svTbo2Hh0{)6Z&m4i`A^?i|S=Z%qpz-a9IO6US5?C2_9PY6@0W%uwC5)4(Im6gUIxbas1P%=>QuVzci4wiVO#eR ze*b~%c=j(lnNS#ohqk?Y5<)^LQ_DRJfV!)&W%NVGy*(RgjotZZTbAP}}~i#V1Vx{-S&bd`yaFhV+D_AUd?O8|Zs<7dtzRG^D~8 z$#orft?VZ$5d$s0fE*I>w*Q>gh;4rQWnAj>KGs%p?&X1_T+UADoW zkMV5~8Re8#gD8J{JkC=QKY>nyP7w9-VFtoyS$cZOC`&J0pyuS~79#_#5k(AaeU`Vj zNtqtEWY#`C9yKCq#brU_YOEhNQm_%&;TNE$4*?2@s;VkFQIDaCPDWnF=iHUjPd`B(Bm9IWDd3Y@6)Y~ER%|}iW7|Jl22G3oG&hM$2*EuJ`H)Y9 zy(LPzRFuh~+TLFz5eyz2Cu0HgHhPcvwzf{-*h$WE;^G|D`vgV1r1!~M+V7`|ZrAAHu$Z2F-2!Wl$!1btDKxe*kaw*4v z;^b&b%};fVy7P{RWcm1|rFRp$Ye!=?DQT1?h7B)Jf%~c}=m-1SLG!Z))e|@x3eC5t z3%AlY`%5{$SUC6%hvw(^Y+WEFsswn(b#9!`gu1LgNcxl+*^UekXIbF$pJ@x#2F;EJ z_M)49s(KV@4>~K%Y5Ja5JJutcYi$NO7UboUg~2fk`h`Y?Tw~>#05&0GU9K!yAj?;& z%MeB?LEjbP7gsVcS|xYeJtR-FV}neiuAmqe#$OvGT5O;OFO`n3xb1o9684t9^UDR_E^0pCMs6IY6_! zOM^i`&BDs+ecI{^kRZd)RCFSm)3YNL-lGos=r5I(6EDd^9z1xeKJ-~^6gE&_P*G7; zygRm;HA^x@2sW6Co0zDUke7!%RW)h$^BfZyg7eoVafoYNL_u@csx?l#6a<8acq$B= z{4Wo3@%5`JeNn=;dIb#cBKs@~T0I~cN|I7^l^xQXnkG5(rK0}%>j!=i3qTqA(%tk# z!Ax_dj1k|G(NG~X+W9$lh8Kq1qPl+yMXkZP`23~$4xQ8q0gH-+l!T$S*H%^4=a+>cF)m7hArKHIo)F5?SvupXMLB1mKNZNiTlRpwln z=Z~=}{`D`hNvR$e$3tR>bUJGB53;-G?w(ZwDA>Ysxsl8clO<3gu&yHL=fQH9{L`;) zhK85Gd|`?zDgvT`-a1r`m4(XuBCbnJ_;HcS5{h%tf6YiR9W0nl+30m^-psTRpEDJ- z^oBX58@;r+*va1h?b{zJDoQ@o0}e&3&~BbEpoTir>BG} z66{Y241D!kGL%tDJKGoJ>-<(<8yco{&Zc;JB127^-8`WeMMCpl@4RAGwgj;97sm@H zBf{rDmu9`axeAI%=6d{mzRn%vTsIf$^KFYfF**zJ|XDUeKO*8^<}lvC!Aha9!J(T3cKD z^vMEMEtB?RejH6EE#*r!nYn7ZSIfJIpE(B1fW6>hb_E2{g~A} zQILpsM7s9$?Fssd&l>^ zf)hC4-PsSQMvnH$$#g-raVlbBQ#!i3(bgcQ!-x?ryyM`I%5q*82M2|Ei7o2C7~Yj3 zmvOV3&xT6Rx5<(@ucN*x9I|;j$wq(ov-5a98;yIp&HMA07Pl+KH8+7M(u;?yg_?Q@ z6E8$xihG{l$&Mjn&Ig@ZdNq{ZkW3Bw<-U(DxgPH6`Vk_0QJwCB_TOt8Xo7-NB>y!Qpz#1WA&lp2jnMgFk`r2Hyg%QcY@Z zeu#^gy8g$ctSCbMr92=V>=KdFkf)k0Z-_Ys<7@f`7*Mle?%A5t-;rws9mMxs0X?u? ziHPgEPw(;nZy+ zuh%}oAZ_u~vmf6SPz{drhV(~q8kM8`oX&fnI%>07I52?)EOY;I;=jt$g#|bY6p0g! zJdWVzclYtmg(kdzoCYm*d16YG8yvU3ZTO208#Tiz5AnVU zJ{LNEh9{}_%cwo7FQbDiJT-R{6qMovtN`)szy|8;2@J9@IQZ2sr0ZwPJGe_pTvp1c zqspjM0YzTFkoy64x%)}-A&`z)Ja>ai^C%dLU#O6vchxT~v8LsiGwxY&>2G|*9<|xV z2zk1dCfq2le4CTf*WPnFN0iySk0%X@X=QiEH8%lvnb$e(xB=57R^2Zv+R)kjNL zY!PIUH**1AiKW#x6*+`>-e<*5X0s$W0OTmGD4xm81o*S%HShI&Zf+9YcJgLWujz`v z5KxBQ;^$pKbRV2v5WGH!ega&`EV@&5?(p{Ss`5^!{kK{hd)W!+6Np5J?n#;hYHmkL zkw|Sur4%60xZbI>ci#U$-*=~Xw>(33ENQ{$$$5)9T9!O|m9!_OMQ54TnJdhsme z+IieLq=cOPLn#ESJj^&&DGsk+-YIgEyk+=*inQ=kI_P%?EcMuGt=4R<_NaahyuC%L zn~9l#lDq;f!CF($PSUQt#sNh|C{rHw{UDR%H)LOBKxg|;K}+hqUc=3@dGwx=pd}BT zeplk?gvl=fp(GQXyz06p5%gODz=1|GwRk}zh1-VWc$I??Z*nOvwsLo`@$wc;ID?t{ z)#q|12a-+|gM`NvS7|QIn{>h?6b&qZD4HE3*=hexT(;R1i-G9cfOydXNbs%z8l5lr zvaWaW3TtCNU<`>;Hu-8nW{*bk_44l8vlvT$1R68dC^PYf)}c`mzaU1-KguXg zHfnZLX}-UZ9~g_}1lp9{exmYA0eFoe;dEE(@H=?Es^y8T`F`l zXI*4}PJ<-f_tc(X^s4`^wLTqpnAE_GQEfB$Hj^138Mz_X8(}Oit4`E|w8?yjpY`|= zX+}X~17q+$ekdRkeY%dTzCFq`Wyt>y9HGSb!PyuKPGLctX5%;ram=ME&2qnhUl*bqoyf_3KA?kEY`c2Iuy z&E=crROF1DIFILf_nvp4+f&7mmW!>z1o>eXC;H6#g!0q`JTK?cj#TLL_7@xn8%BK)1oOB^k ztK0eA^i0y5RTtB0!)EY0Kf4eyuORp?su4SFElT1Zz28OA{JwB#AE*b~*@; zk-Vt2UD$8q#^zhOOeEyZ!rR*;3J>tTL{B({t*XsUz`39ddL>5jCor5zrzY1USug6~ zsOUlIw;W4Dq7}%N+iSY+3=&a;Iv*l@jptiLc3uYFyQWe%sQsl2wOFo?$*G~3NB)3M zV9wVbB!?G>Dpiqxt*F0Qj=Sj2w|vB>Lq)CJYI<`xOlImg^;`UkKg&Z;E0tlP^zIFW z{pOqJ){tLhdzH!0^Jd4z5)g_q-QO1E4R|Vac*k)E#F7GIFW3J%2an$o^2voSVBERO z-MQ8st@+RISBj9qF>dBSLN|q16V(5H1>>$4faQdLDf|E3`ZuQkf7YX0|0>|(GXt&1 U)16V^l}r>Rc~!X*8MBZ73ryvXr~m)}