Browse Source

Merge pull request #7113 from akien-mga/gdextension-process-delta-double

GDExtension example: `_process` delta is a double
Max Hilbrunner 2 years ago
parent
commit
88091c556c
1 changed files with 33 additions and 33 deletions
  1. 33 33
      tutorials/scripting/gdextension/gdextension_cpp_example.rst

+ 33 - 33
tutorials/scripting/gdextension/gdextension_cpp_example.rst

@@ -37,7 +37,7 @@ of Godot. GDExtensions will not work in older versions of Godot (only Godot 4 an
     To use `GDExtension <https://godotengine.org/article/introducing-gd-extensions>`__
     To use `GDExtension <https://godotengine.org/article/introducing-gd-extensions>`__
     you need to use the ``4.0`` branch of godot-cpp,
     you need to use the ``4.0`` branch of godot-cpp,
     which is only compatible with Godot 4.0 and being used here as an example.
     which is only compatible with Godot 4.0 and being used here as an example.
-    The ``master`` branch is the development branch and is being updated 
+    The ``master`` branch is the development branch and is being updated
     regularly to work with godot's ``master`` branch.
     regularly to work with godot's ``master`` branch.
 
 
 If you are versioning your project using Git, it is recommended to add it as
 If you are versioning your project using Git, it is recommended to add it as
@@ -160,7 +160,7 @@ GDExtension node we'll be creating. We will name it ``gdexample.h``:
         GDCLASS(GDExample, Sprite2D)
         GDCLASS(GDExample, Sprite2D)
 
 
     private:
     private:
-        float time_passed;
+        double time_passed;
 
 
     protected:
     protected:
         static void _bind_methods();
         static void _bind_methods();
@@ -169,7 +169,7 @@ GDExtension node we'll be creating. We will name it ``gdexample.h``:
         GDExample();
         GDExample();
         ~GDExample();
         ~GDExample();
 
 
-        void _process(float delta);
+        void _process(double delta);
     };
     };
 
 
     }
     }
@@ -194,8 +194,8 @@ and destructor defined, but there are two other functions that will likely look
 familiar to some, and one new method.
 familiar to some, and one new method.
 
 
 The first is ``_bind_methods``, which is a static function that Godot will
 The first is ``_bind_methods``, which is a static function that Godot will
-call to find out which methods can be called and which properties it exposes. 
-The second is our ``_process`` function, which will work exactly the same 
+call to find out which methods can be called and which properties it exposes.
+The second is our ``_process`` function, which will work exactly the same
 as the ``_process`` function you're used to in GDScript.
 as the ``_process`` function you're used to in GDScript.
 
 
 Let's implement our functions by creating our ``gdexample.cpp`` file:
 Let's implement our functions by creating our ``gdexample.cpp`` file:
@@ -211,15 +211,15 @@ Let's implement our functions by creating our ``gdexample.cpp`` file:
     }
     }
 
 
     GDExample::GDExample() {
     GDExample::GDExample() {
-        // initialize any variables here
+        // Initialize any variables here.
         time_passed = 0.0;
         time_passed = 0.0;
     }
     }
 
 
     GDExample::~GDExample() {
     GDExample::~GDExample() {
-        // add your cleanup here
+        // Add your cleanup here.
     }
     }
 
 
-    void GDExample::_process(float delta) {
+    void GDExample::_process(double delta) {
         time_passed += delta;
         time_passed += delta;
 
 
         Vector2 new_position = Vector2(10.0 + (10.0 * sin(time_passed * 2.0)), 10.0 + (10.0 * cos(time_passed * 1.5)));
         Vector2 new_position = Vector2(10.0 + (10.0 * sin(time_passed * 2.0)), 10.0 + (10.0 * cos(time_passed * 1.5)));
@@ -286,9 +286,9 @@ initialize them, but you might have to set up more things depending on your
 needs. We call the function ``register_class`` for each of our classes in our library.
 needs. We call the function ``register_class`` for each of our classes in our library.
 
 
 The important function is the third function called ``example_library_init``.
 The important function is the third function called ``example_library_init``.
-We first call a function in our bindings library that creates an initilization object. 
-This object registrates the initialization and termination functions of the GDExtension. 
-Furthermore, it sets the level of initilization (core, servers, scene, editor, level). 
+We first call a function in our bindings library that creates an initilization object.
+This object registrates the initialization and termination functions of the GDExtension.
+Furthermore, it sets the level of initilization (core, servers, scene, editor, level).
 
 
 At last, we need the header file for the ``register_types.cpp`` named
 At last, we need the header file for the ``register_types.cpp`` named
 ``register_types.h``.
 ``register_types.h``.
@@ -319,7 +319,7 @@ build files in a subsequent tutorial.
     master, you may need to make small changes using it with older versions or
     master, you may need to make small changes using it with older versions or
     refer to the ``SConstruct`` file in the Godot 4.0 documentation.
     refer to the ``SConstruct`` file in the Godot 4.0 documentation.
 
 
-Once you've downloaded the ``SConstruct`` file, place it in your GDExtension folder 
+Once you've downloaded the ``SConstruct`` file, place it in your GDExtension folder
 structure alongside ``godot-cpp``, ``src`` and ``demo``, then run:
 structure alongside ``godot-cpp``, ``src`` and ``demo``, then run:
 
 
 .. code-block:: bash
 .. code-block:: bash
@@ -423,12 +423,12 @@ functions:
 
 
     ...
     ...
     private:
     private:
-        float time_passed;
-        float amplitude;
+        double time_passed;
+        double amplitude;
 
 
     public:
     public:
-        void set_amplitude(const float amplitude);
-        float get_amplitude() const;
+        void set_amplitude(const double amplitude);
+        double get_amplitude() const;
     ...
     ...
 
 
 In our ``gdexample.cpp`` file we need to make a number of changes, we will only
 In our ``gdexample.cpp`` file we need to make a number of changes, we will only
@@ -443,12 +443,12 @@ show the methods we end up changing, don't remove the lines we're omitting:
     }
     }
 
 
     void GDExample::GDExample() {
     void GDExample::GDExample() {
-        // initialize any variables here
+        // Initialize any variables here.
         time_passed = 0.0;
         time_passed = 0.0;
         amplitude = 10.0;
         amplitude = 10.0;
     }
     }
 
 
-    void GDExample::_process(float delta) {
+    void GDExample::_process(double delta) {
         time_passed += delta;
         time_passed += delta;
 
 
         Vector2 new_position = Vector2(
         Vector2 new_position = Vector2(
@@ -459,11 +459,11 @@ show the methods we end up changing, don't remove the lines we're omitting:
         set_position(new_position);
         set_position(new_position);
     }
     }
 
 
-    void GDExample::set_amplitude(const float p_amplitude) {
+    void GDExample::set_amplitude(const double p_amplitude) {
         amplitude = p_amplitude;
         amplitude = p_amplitude;
     }
     }
 
 
-    float GDExample::get_amplitude() const {
+    double GDExample::get_amplitude() const {
         return amplitude;
         return amplitude;
     }
     }
 
 
@@ -479,12 +479,12 @@ code:
 .. code-block:: C++
 .. code-block:: C++
 
 
     ...
     ...
-        float amplitude;
-        float speed;
+        double amplitude;
+        double speed;
     ...
     ...
-        void _process(float delta) override;
-        void set_speed(float p_speed);
-        float get_speed();
+        void _process(double delta) override;
+        void set_speed(double p_speed);
+        double get_speed();
     ...
     ...
 
 
 This requires a few more changes to our ``gdexample.cpp`` file, again we're only
 This requires a few more changes to our ``gdexample.cpp`` file, again we're only
@@ -505,7 +505,7 @@ showing the methods that have changed so don't remove anything we're omitting:
         speed = 1.0;
         speed = 1.0;
     }
     }
 
 
-    void GDExample::_process(float delta) {
+    void GDExample::_process(double delta) {
         time_passed += speed * delta;
         time_passed += speed * delta;
 
 
         Vector2 new_position = Vector2(
         Vector2 new_position = Vector2(
@@ -518,11 +518,11 @@ showing the methods that have changed so don't remove anything we're omitting:
 
 
     ...
     ...
 
 
-    void GDExample::set_speed(float p_speed) {
+    void GDExample::set_speed(double p_speed) {
         speed = p_speed;
         speed = p_speed;
     }
     }
 
 
-    float GDExample::get_speed() const {
+    double GDExample::get_speed() const {
         return speed;
         return speed;
     }
     }
 
 
@@ -533,7 +533,7 @@ The first two arguments are the minimum and maximum value and the third is the s
 
 
 .. note::
 .. note::
 
 
-    For simplicity, we've only used the hint_range of the property method. 
+    For simplicity, we've only used the hint_range of the property method.
     There are a lot more options to choose from. These can be used to
     There are a lot more options to choose from. These can be used to
     further configure how properties are displayed and set on the Godot side.
     further configure how properties are displayed and set on the Godot side.
 
 
@@ -563,9 +563,9 @@ In our ``gdexample.h`` header file, we need to define a new member ``time_emit``
 .. code-block:: C++
 .. code-block:: C++
 
 
     ...
     ...
-        float time_passed;
-        float time_emit;
-        float amplitude;
+        double time_passed;
+        double time_emit;
+        double amplitude;
     ...
     ...
 
 
 This time, the changes in ``gdexample.cpp`` are more elaborate. First,
 This time, the changes in ``gdexample.cpp`` are more elaborate. First,
@@ -592,7 +592,7 @@ Next, we'll need to change our ``_process`` method:
 
 
 .. code-block:: C++
 .. code-block:: C++
 
 
-    void GDExample::_process(float delta) {
+    void GDExample::_process(double delta) {
         time_passed += speed * delta;
         time_passed += speed * delta;
 
 
         Vector2 new_position = Vector2(
         Vector2 new_position = Vector2(