From dfa28a29c86f1de68dc8274a62854cd92d45c960 Mon Sep 17 00:00:00 2001 From: gurpreetsinghmatharoo Date: Wed, 15 Jan 2025 14:57:38 +0530 Subject: [PATCH 1/9] docs(feature): Documented examples for when self and other change --- .../GML_Overview/Instance Keywords/other.htm | 39 +++++++++++++++++++ .../GML_Overview/Instance Keywords/self.htm | 26 +++++++++++++ 2 files changed, 65 insertions(+) diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/other.htm b/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/other.htm index edd41c570..11d57dddd 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/other.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/other.htm @@ -45,8 +45,47 @@

When 'other' changes

This section will describe those cases in relation to how other changes:

+

value = 40;
+
+ var _struct = {
+     value : 99
+ }
+
+ with (_struct) 
+ {
+     show_debug_message(other.value); // Prints 40
+ } +

+ +

value = 40;
+
+ var _struct = {
+     value : 99,
+     func : function () {
+         return other.value;
+     }
+ }
+
+ show_debug_message(_struct.func()); // Prints 40 +

+ +

value = 40;
+
+ item = function () constructor {
+     value = 99;
+     
+     copied_value = other.value;
+ }
+
+ my_item = new item();
+ show_debug_message(my_item.copied_value); // Prints 40 +

+

Legacy other Behaviour

diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm b/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm index c5924765d..30f1f798f 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm @@ -29,7 +29,33 @@

When 'self' changes

+

value = 40;
+
+ var _struct = {
+     value : 99,
+     func : function () {
+         return self.value;
+     }
+ }
+
+ show_debug_message(_struct.func()); // Prints 99 +

+ +

value = 40;
+
+ item = function () constructor {
+     value = 99;
+     
+     copied_value = self.value;
+ }
+
+ my_item = new item();
+ show_debug_message(my_item.copied_value); // Prints 99 +

+

In all of these cases, when self changes to a new scope, other will be set to be the previous scope. The only exception is when a bound constructor method is called. This is described more in When 'other' changes.

From 56307a1b670f5d42b8e18f4745ae82a12b77fdb7 Mon Sep 17 00:00:00 2001 From: gurpreetsinghmatharoo Date: Wed, 15 Jan 2025 15:25:25 +0530 Subject: [PATCH 2/9] docs(feature): Fixed link to handle_parse https://github.com/YoYoGames/GameMaker-Bugs/issues/9025 --- .../GML_Reference/Variable_Functions/Variable_Functions.htm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/Variable_Functions.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/Variable_Functions.htm index f5d34e25a..3f5f7417d 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/Variable_Functions.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/Variable_Functions.htm @@ -87,7 +87,7 @@

Data Type Functions

  • ptr
  • ref_create
  • int64
  • -
  • handle_parse
  • +
  • handle_parse
  •  

    Also see: Array Functions

    From d37949dbe5ce69454df99f63537f3df13887257e Mon Sep 17 00:00:00 2001 From: gurpreetsinghmatharoo Date: Thu, 16 Jan 2025 11:34:23 +0530 Subject: [PATCH 3/9] docs(feature): Other page's "When 'other' changes" section needs examples added for each scenario Also added for self https://github.com/YoYoGames/GameMaker-Bugs/issues/8727 --- .../GML_Overview/Instance Keywords/other.htm | 16 ++++++++++------ .../GML_Overview/Instance Keywords/self.htm | 13 ++++++++----- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/other.htm b/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/other.htm index 11d57dddd..6c5314f5e 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/other.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/other.htm @@ -42,7 +42,7 @@

    Collision Event

    other.hit = true;

    When 'other' changes

    The page on self contains a section on When 'self' changes.

    -

    This section will describe those cases in relation to how other changes:

    +

    This section describes those cases in relation to how other changes:

    • Inside a with block, other will be the instance or struct that called the with() function
    @@ -58,20 +58,24 @@

    When 'other' changes

    }

      +
    • Using dot notation on a struct or instance (struct.variable)
    • When calling a method that is bound to an instance or a struct, other will be the instance or struct that called that method

    value = 40;

    - var _struct = {
    + var _struct = instance_create_depth(0, 0, 0, Object2, {
        value : 99,
        func : function () {
            return other.value;
        }
    - }
    + });
    +
    + var _func = _struct.func;

    - show_debug_message(_struct.func()); // Prints 40 + show_message(_func()); // Prints 40

      +
    • In the above case, calling _struct.func() directly would return 99, as the scope first changes to _struct due to dot notation, and then it changes again when the bound method is called, making the other the previous scope at the moment the method is called, which is the struct (with value set to 99)
    • When calling an unbound constructor function, other will be the instance or struct that called that function. If the constructor is bound as a method, then other will be the instance or struct to which the constructor method is bound.

    value = 40;
    @@ -91,8 +95,8 @@

    When 'other' changes

    Legacy other Behaviour

    In previous versions of GameMaker other only changed in the following cases: 

      -
    • As part of the with statement.
    • -
    • When new is called when a constructor is executed other is set to the self at the point that new was called.
    • +
    • As part of the with statement
    • +
    • When new is called when a constructor is executed other is set to the self at the point that new was called

    This behaviour can be enabled by the Legacy Other Behaviour game option.

    Struct Declaration

    diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm b/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm index 30f1f798f..c797e7640 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm @@ -25,21 +25,24 @@

    self

    In this example you can see that we have a local variable called val and we want it to set the instance variable with the same name in the newly created object instance. To identify the instance variable correctly and tell GameMaker to set it in the instance calling the code block, we use the self keyword.

    self is used in the same way with structs to reference member variables of the struct. It can also be used within constructor functions to reference the struct being generated from the constructor.

    When 'self' changes

    -

    Within an event, the current self will change in the following situations:

    +

    Within an event or script, the current self will change in the following situations:

    • Inside a with block, as shown above
    • -
    • When calling a method that is bound to an instance or a struct, the self during the execution of that function will be the instance or struct to which the method is bound
    • +
    • Using dot notation on a struct or instance (struct.variable)
    • +
    • When calling a method that is bound to an instance or a struct, the self during the execution of that method will be the instance or struct to which the method is bound

    value = 40;

    - var _struct = {
    + var _struct = instance_create_depth(0, 0, 0, Object2, {
        value : 99,
        func : function () {
            return self.value;
        }
    - }
    + });
    +
    + var _func = _struct.func;

    - show_debug_message(_struct.func()); // Prints 99 + show_message(_func()); // Prints 99

    • When calling a constructor function, self will refer to the new struct that is being generated as a result of that function.
    • From 56500e17283f4dbdcb63b42fd4cfb4b06e575820 Mon Sep 17 00:00:00 2001 From: gurpreetsinghmatharoo Date: Thu, 16 Jan 2025 11:48:46 +0530 Subject: [PATCH 4/9] docs(feature): Documented the new MarkTagAsUsed gml_pragma https://github.com/YoYoGames/GameMaker-Bugs/issues/8313 --- .../GML_Reference/OS_And_Compiler/gml_pragma.htm | 6 +++++- Manual/contents/Introduction/Compiling.htm | 1 + Manual/contents/Introduction/The_Asset_Browser.htm | 2 +- Manual/contents/Settings/Game_Options.htm | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_pragma.htm b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_pragma.htm index 60f85e583..c1b7c3590 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_pragma.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/OS_And_Compiler/gml_pragma.htm @@ -39,9 +39,13 @@

      gml_pragma

      The benefit of doing a unity build is that builds are faster but the down side is that it does a full build each time so even if you change a single part of the code it will build everything again without using any cached files. This has been added specifically for the Xbox One export using the YYC although it can be called for other builds (YYC only). For more information on unity builds, please see here.
    • "AllowReentrantStatic" - This pragma reverts static initialisation to the old re-entrant initialisation behaviour of GameMaker versions up to 2024.8. It is a project-wide setting and so cannot be put around code sections. The following code enables this old behaviour:  -

      gml_pragma( "AllowReentrantStatic", true);

      +

      gml_pragma("AllowReentrantStatic", true);

       You should only use this in existing projects that make use of the old behaviour. GMRT (GameMaker Runtime) will no longer allow it.

    • +
    • "MarkTagAsUsed" - When "Automatically remove unused assets when compiling" is enabled in the Game Options, any unused assets are stripped from the compiled game. This can break games that dynamically load assets at runtime. With this pragma you can mark the Tags that should not be stripped and any assets with the assigned tags will always be present in the compiled game package. +

      gml_pragma("MarkTagAsUsed", "used");
      + gml_pragma("MarkTagAsUsed", "multiple", "tags", "can", "be", "specified");

      +

     The first argument to the gml_pragma function must be a compile-time string constant and not a variable.

    Compiler Optimisations diff --git a/Manual/contents/Introduction/Compiling.htm b/Manual/contents/Introduction/Compiling.htm index cc3191a3c..f8af2d24d 100644 --- a/Manual/contents/Introduction/Compiling.htm +++ b/Manual/contents/Introduction/Compiling.htm @@ -87,6 +87,7 @@

    You Should Know

    Compiler Optimisations

    The compiler performs optimisations on your game's code. See Compiler Optimisations.

    +

    By default, any assets that are unused or not referenced directly in your code are stripped from the game's executable. This can be disabled through the Game Options or you can mark tags that should always be preserved through gml_pragma("MarkTagAsUsed", <tags>).

    How Different Targets Build

    Each target option saves to a platform-specific format, listed below:

      diff --git a/Manual/contents/Introduction/The_Asset_Browser.htm b/Manual/contents/Introduction/The_Asset_Browser.htm index ed8d3d7b7..db6784942 100644 --- a/Manual/contents/Introduction/The_Asset_Browser.htm +++ b/Manual/contents/Introduction/The_Asset_Browser.htm @@ -89,7 +89,7 @@

      The Asset Browser

       

       

      -

      Tags

      +

      Tags

      As mentioned in various of the sections above, the asset browser gives you the ability to add tags to individual assets as well as to group folders. Tags are a very powerful tool, not only for organising and filtering the assets listed in the asset browser, but also when programming your game in general, as you can use assigned tags in code.

      To create a tag you need to use the RMB Icon RMB menu on an asset and then select the Edit Tags option. This will bring up the Tag Editor where you can type in the tag you want to use, and then either press Enter or type a comma to apply it:

      The Tag EditorYou can assign multiple tags to a single item, and you can also use Shift Key Icon or CTRL Key Icon / CMD Key Icon along with the left mouse button LMB Icon to select multiple assets and assign a tag to all of them at once. Once added, all tags will be visible under the Quick Access menu and also in the Filter options (as explained in the sections above), and so can be used to quickly filter the asset list and show only those items with the chosen tag or tags.

      diff --git a/Manual/contents/Settings/Game_Options.htm b/Manual/contents/Settings/Game_Options.htm index 09f143b77..5f3cb90ee 100644 --- a/Manual/contents/Settings/Game_Options.htm +++ b/Manual/contents/Settings/Game_Options.htm @@ -39,7 +39,7 @@

      Game Options

    • Enable Copy on Write Behaviour for Arrays: This enables the deprecated Copy on Write array behaviour.
    -
  • Automatically remove unused assets when compiling: This option enables automatic removal of unused assets when compiling. When enabled, any unused assets that are removed will be logged in the compile output of the project. This setting is enabled by default. This does not affect assets used from the Prefab Library (except for those that have been duplicated into the project) as unused Prefab assets will always be removed during compilation.
  • +
  • Automatically remove unused assets when compiling: This option enables automatic removal of unused assets when compiling. When enabled, any unused assets that are removed will be logged in the compile output of the project. This setting is enabled by default. You can mark tags as used with gml_pragma("MarkTagAsUsed", <tags>) and any assets with the specified tags will not be stripped when this option is enabled. This option does not affect assets used from the Prefab Library (except for those that have been duplicated into the project) as unused Prefab assets will always be removed during compilation.
  • The Main Options section also contains a menu for Template Info.

    The Asset Browser will also have other Game Options available to you depending on the target platforms that are available for the licence that you have and not all of them may be available or visible.

    From c6a1866a1d0aa2c1e6d10e81d441c979fae0f93b Mon Sep 17 00:00:00 2001 From: gurpreetsinghmatharoo Date: Fri, 17 Jan 2025 10:55:36 +0530 Subject: [PATCH 5/9] docs(feature): allow asset name in handle_parse https://github.com/YoYoGames/GameMaker-Bugs/issues/9020 --- .../Variable_Functions/handle.htm | 47 ++++++++++--------- .../assets/snippets/Handle_Format.hts | 2 +- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/handle.htm b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/handle.htm index 276210a7c..3dd5ac4eb 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/handle.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Variable_Functions/handle.htm @@ -1,16 +1,17 @@ - - + + + handle_parse - - + + - - - - - + + + + +

    handle_parse

    @@ -22,9 +23,9 @@

    Syntax:

    handle_parse(value_string);

    - - - + + + @@ -44,17 +45,17 @@

    Returns:

    Handle (or undefined in case of an invalid string)

     

    Example:

    -

    sprite = spr_player;
    - handle_as_string = string(sprite);
    - h = handle_parse(handle_as_string);
    -
    - show_debug_message($"{sprite} ({typeof(sprite)})");
    - show_debug_message($"{handle_as_string} ({typeof(handle_as_string)})");
    +

    sprite = spr_player;
    + handle_as_string = string(sprite);
    + h = handle_parse(handle_as_string);
    +
    + show_debug_message($"{sprite} ({typeof(sprite)})");
    + show_debug_message($"{handle_as_string} ({typeof(handle_as_string)})");
    show_debug_message($"{h} ({typeof(h)})");

    The code above converts the handle of a sprite named spr_player to its string representation (handle_as_string), and then back into a handle (h). It then outputs each of the created instance variables in a debug message, along with its type. This prints the following:

    -

    ref sprite 0 (ref)
    - ref sprite (string)
    +

    ref sprite 0 (ref)
    + ref sprite (string)
    ref sprite 0 (ref)

    You can see that the original reference is converted into a string, which is then parsed back as a reference, which can again be used in functions just like the original reference.

    The values of the handle variables are implicitly converted to their string representation to display them.

    @@ -67,7 +68,7 @@

    Example:

    Next: variable_instance_exists
    -
    © Copyright YoYo Games Ltd. 2023 All Rights Reserved
    +
    © Copyright YoYo Games Ltd. 2024 All Rights Reserved
    - - \ No newline at end of file + + \ No newline at end of file diff --git a/Manual/contents/assets/snippets/Handle_Format.hts b/Manual/contents/assets/snippets/Handle_Format.hts index 5745c5e41..0ed57f743 100644 --- a/Manual/contents/assets/snippets/Handle_Format.hts +++ b/Manual/contents/assets/snippets/Handle_Format.hts @@ -9,6 +9,6 @@ -

    "ref <type> <id>"

    +

    "ref <type> <id>" or "ref <type> <name>"

    \ No newline at end of file From d3da3beeb6e5c4db9d98e2a5beb85f92c5c94b4c Mon Sep 17 00:00:00 2001 From: gurpreetsinghmatharoo Date: Fri, 17 Jan 2025 11:00:27 +0530 Subject: [PATCH 6/9] docs(general): string(self) returns "-1" https://github.com/YoYoGames/GameMaker-Bugs/issues/8770 --- .../GameMaker_Language/GML_Overview/Instance Keywords/self.htm | 1 + 1 file changed, 1 insertion(+) diff --git a/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm b/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm index c797e7640..c61c5694a 100644 --- a/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm +++ b/Manual/contents/GameMaker_Language/GML_Overview/Instance Keywords/self.htm @@ -24,6 +24,7 @@

    self

    }

    In this example you can see that we have a local variable called val and we want it to set the instance variable with the same name in the newly created object instance. To identify the instance variable correctly and tell GameMaker to set it in the instance calling the code block, we use the self keyword.

    self is used in the same way with structs to reference member variables of the struct. It can also be used within constructor functions to reference the struct being generated from the constructor.

    +

     Due to compatibility reasons, converting self into a string will return -1.

    When 'self' changes

    Within an event or script, the current self will change in the following situations:

      From 9eb9709735da8c6bcac3be8c0ba995a329898bd7 Mon Sep 17 00:00:00 2001 From: gurpreetsinghmatharoo Date: Mon, 20 Jan 2025 15:01:28 +0530 Subject: [PATCH 7/9] docs(general): network_send_udp_raw() page contains confusing information about handling the stream yourself --- .../GML_Reference/Networking/Networking.htm | 2 +- .../Networking/network_send_udp_raw.htm | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/Networking.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/Networking.htm index b2724125a..fba391012 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/Networking.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/Networking.htm @@ -31,7 +31,7 @@

      Raw Functions

      Packet Separation

      When using raw TCP networking, multiple packets sent by one client may be received as a single packet by the receiving client, and the opposite may also happen where a single packet is split into multiple packets. Non-raw networking functions prevent this from happening as GameMaker inserts headers into each packet, allowing the receiving GameMaker client to separate or combine incoming packets to represent them as they were sent.

      When using raw TCP functions, it will fall on the game to read the incoming packets and separate/combine them as they were sent.

      -

      When using UDP or WebSockets, packets will be delivered in the form that they were sent, so using the non-raw functions for these protocols only adds unnecessary overhead.

      +

      When using UDP or WebSockets, packets will be delivered in the form that they were sent. Using the non-raw functions for these protocols only adds unnecessary overhead.

      Function Reference

      • network_create_server
      • diff --git a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp_raw.htm b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp_raw.htm index d21070b42..a38c717c2 100644 --- a/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp_raw.htm +++ b/Manual/contents/GameMaker_Language/GML_Reference/Networking/network_send_udp_raw.htm @@ -16,8 +16,8 @@

        network_send_udp_raw

        This function sends data over the network using UDP to a server.

        -

        The function takes the Network Socket ID to connect through, the URL to connect to and the port to use. You must then supply the Buffer which contains the data to be sent (for more information on buffers see Reference - Buffers) and finally the size (in bytes) of the data. The function returns the number of bytes of data sent, or a number less than 0 if the send has failed.

        -

        The data sent is not formatted by GameMaker in any way and the receiving devices will get the data as a stream which means you will have to handle it yourself.

        +

        The function takes the Network Socket ID to connect through, the URL to connect to and the port to use. You must then supply the Buffer which contains the data to be sent (for more information on buffers see Reference - Buffers) and finally the size (in bytes) of the data. The function returns the number of bytes of data sent, or a number less than 0 if the send has failed.

        +

        The data sent is not formatted by GameMaker in any way and the receiving devices will get the packets in the exact form they were sent in.

        UDP is "connectionless" in that you don't actually do a connect, you just send a packet directly to an IP, and the server gets incoming data from an IP address and has to deal with it "as is".

        NOTE This function will not work when used in a project running on the HTML5 target, and neither will HTML5 projects be able to receive UDP.

        @@ -33,34 +33,34 @@

        Syntax:

    - + - + - + - + - +
    socketNetwork Socket IDNetwork Socket ID The id of the socket to use.
    urlStringString The URL or IP to connect to (a string, can be IPv4 or IPv6).
    portRealReal The port to connect to.
    bufferidBufferBuffer The buffer to get the data from.
    sizeRealReal The size (in bytes) of the data.

     

    Returns:

    -

    Real

    +

    Real

     

    Example:

    network_send_udp_raw(sock, "www.macsweeneygames.com", 6510, buff, buffer_tell(buff));

    @@ -74,7 +74,7 @@

    Example:

    Next: network_destroy
    -
    © Copyright YoYo Games Ltd. 2023 All Rights Reserved
    +
    © Copyright YoYo Games Ltd. 2024 All Rights Reserved
    @@ -40,22 +41,22 @@

    Returns:

    DS Grid

     

    Example:

    -

    file_grid = load_csv("spreadsheet.csv");
    - var ww = ds_grid_width(file_grid);
    - var hh = ds_grid_height(file_grid);
    - var xx = 32;
    - var yy = 32;
    - for (var i = 0; i < ww; i++;)
    - {
    -     for (var j = 0; j < hh; j++;)
    -     {
    -         draw_text(xx, yy, file_grid[# i, j]);
    -         yy += 32;
    -     }
    -     yy = 32;
    -     xx += 32;
    +

    file_grid = load_csv("spreadsheet.csv");
    + var ww = ds_grid_width(file_grid);
    + var hh = ds_grid_height(file_grid);
    + var xx = 32;
    + var yy = 32;
    + for (var i = 0; i < ww; i++;)
    + {
    +     for (var j = 0; j < hh; j++;)
    +     {
    +         draw_text(xx, yy, file_grid[# i, j]);
    +         yy += 32;
    +     }
    +     yy = 32;
    +     xx += 32;
    }

    -

    The above code will open the given CSV file and store the returned DS grid in the variable "file_grid". This grid is then parsed in a couple of for lops and the contents drawn to the screen.

    +

    The above code will open the given CSV file and store the returned DS grid in the variable "file_grid". This grid is then parsed in a couple of for loops and the contents drawn to the screen.

     

     

     

    @@ -74,5 +75,5 @@
    © Copyright YoYo Games Ltd. 2024 All R - - \ No newline at end of file + + \ No newline at end of file From 1926478472bd363296a8988f1e8275c4a50b6c5c Mon Sep 17 00:00:00 2001 From: gurpreetsinghmatharoo Date: Tue, 21 Jan 2025 10:43:00 +0530 Subject: [PATCH 9/9] docs(feature): Fixed back links on CE pages, added asset editors link to The IDE page --- .../Code_Editor_Properties/Code_Snippets.htm | 4 ++-- .../Code_Editor_Properties/Editing_Text.htm | 24 +++++++++---------- .../Feather_Data_Types.htm | 2 +- .../Feather_Directives.htm | 14 +++++------ .../Feather_Features.htm | 6 ++--- .../JSDoc_Script_Comments.htm | 6 ++--- Manual/contents/The_IDE/The_IDE.htm | 6 ++--- 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Code_Snippets.htm b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Code_Snippets.htm index 1b454faa9..91089dbda 100644 --- a/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Code_Snippets.htm +++ b/Manual/contents/The_Asset_Editors/Code_Editor_Properties/Code_Snippets.htm @@ -19,7 +19,7 @@

    Code Snippets

    A very handy tool you have at your disposal when editing your code is the use of Code Snippets.

    These are pre-made blocks of code you can insert into your code at any time. A snippet can have placeholders, where you can insert expressions while entering the snippet.

    Using Snippets

    -

    In The Code Editor (Beta), code snippets are inserted through Code Completion. For example, writing for will show its snippet in the Candidate Window, and pressing enter will insert that snippet.

    +

    In Code Editor 2 (Beta), code snippets are inserted through Code Completion. For example, writing for will show its snippet in the Candidate Window, and pressing enter will insert that snippet.

    Inserting a snippet will highlight its first placeholder. After entering text into that placeholder, press tab to cycle through each placeholder until you have gone through all of them.

    Custom Snippets

    @@ -126,7 +126,7 @@

    Legacy Code Editor

    © Copyright YoYo Games Ltd. 2024 All Rights Reserved