Procházet zdrojové kódy

Sync classref with current source

Rémi Verschelde před 6 roky
rodič
revize
33ce099dda

+ 42 - 1
classes/class_animatedtexture.rst

@@ -14,7 +14,7 @@ AnimatedTexture
 Brief Description
 Brief Description
 -----------------
 -----------------
 
 
-
+Proxy texture for simple frame-based animations.
 
 
 Properties
 Properties
 ----------
 ----------
@@ -38,6 +38,22 @@ Methods
 | void                          | :ref:`set_frame_texture<class_AnimatedTexture_method_set_frame_texture>` **(** :ref:`int<class_int>` frame, :ref:`Texture<class_Texture>` texture **)** |
 | void                          | :ref:`set_frame_texture<class_AnimatedTexture_method_set_frame_texture>` **(** :ref:`int<class_int>` frame, :ref:`Texture<class_Texture>` texture **)** |
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
+Constants
+---------
+
+.. _class_AnimatedTexture_constant_MAX_FRAMES:
+
+- **MAX_FRAMES** = **256** --- The maximum number of frames supported by ``AnimatedTexture``. If you need more frames in your animation, use :ref:`AnimationPlayer<class_AnimationPlayer>` or :ref:`AnimatedSprite<class_AnimatedSprite>`.
+
+Description
+-----------
+
+``AnimatedTexture`` is a resource format for simple frame-based animations, where multiple frames textures can be chained automatically with a predefined delay for each frame. It's not a :ref:`Node<class_Node>`, contrarily to :ref:`AnimationPlayer<class_AnimationPlayer>` or :ref:`AnimatedSprite<class_AnimatedSprite>`, but has the advantage of being usable at any place where a :ref:`Texture<class_Texture>` resource can be used, e.g. in a :ref:`TileSet<class_TileSet>`.
+
+The playback of the animation is controlled by the :ref:`fps<class_AnimatedTexture_property_fps>` property as well as each frame's optional delay (see :ref:`set_frame_delay<class_AnimatedTexture_method_set_frame_delay>`). The animation loops, i.e. it will restart at frame 0 automatically after playing the last frame.
+
+``AnimatedTexture`` currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one.
+
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------
 
 
@@ -51,6 +67,10 @@ Property Descriptions
 | *Getter* | get_fps()      |
 | *Getter* | get_fps()      |
 +----------+----------------+
 +----------+----------------+
 
 
+Number of frames per second. This value defines the default time interval between two frames of the animation, and thus the overall duration of the animation loop based on the :ref:`frames<class_AnimatedTexture_property_frames>` property. A value of 0 means no predefined number of frames per second, the animation will play according to each frame's frame delay (see :ref:`set_frame_delay<class_AnimatedTexture_method_set_frame_delay>`). Default value: 4.
+
+For example, an animation with 8 frames, no frame delay and a ``fps`` value of 2 will run over 4 seconds, with one frame each 0.5 seconds.
+
 .. _class_AnimatedTexture_property_frames:
 .. _class_AnimatedTexture_property_frames:
 
 
 - :ref:`int<class_int>` **frames**
 - :ref:`int<class_int>` **frames**
@@ -61,6 +81,8 @@ Property Descriptions
 | *Getter* | get_frames()      |
 | *Getter* | get_frames()      |
 +----------+-------------------+
 +----------+-------------------+
 
 
+Number of frames to use in the animation. While you can create the frames independently with :ref:`set_frame_texture<class_AnimatedTexture_method_set_frame_texture>`, you need to set this value for the animation to take new frames into account. The maximum number of frames is :ref:`MAX_FRAMES<class_AnimatedTexture_constant_MAX_FRAMES>`. Default value: 1.
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
@@ -68,15 +90,34 @@ Method Descriptions
 
 
 - :ref:`float<class_float>` **get_frame_delay** **(** :ref:`int<class_int>` frame **)** const
 - :ref:`float<class_float>` **get_frame_delay** **(** :ref:`int<class_int>` frame **)** const
 
 
+Retrieves the delayed assigned to the given ``frame`` ID.
+
 .. _class_AnimatedTexture_method_get_frame_texture:
 .. _class_AnimatedTexture_method_get_frame_texture:
 
 
 - :ref:`Texture<class_Texture>` **get_frame_texture** **(** :ref:`int<class_int>` frame **)** const
 - :ref:`Texture<class_Texture>` **get_frame_texture** **(** :ref:`int<class_int>` frame **)** const
 
 
+Retrieves the :ref:`Texture<class_Texture>` assigned to the given ``frame`` ID.
+
 .. _class_AnimatedTexture_method_set_frame_delay:
 .. _class_AnimatedTexture_method_set_frame_delay:
 
 
 - void **set_frame_delay** **(** :ref:`int<class_int>` frame, :ref:`float<class_float>` delay **)**
 - void **set_frame_delay** **(** :ref:`int<class_int>` frame, :ref:`float<class_float>` delay **)**
 
 
+Defines an additional delay (in seconds) between this frame and the next one, that will be added to the time interval defined by :ref:`fps<class_AnimatedTexture_property_fps>`. By default, frames have no delay defined. If a delay value is defined, the final time interval between this frame and the next will be ``1.0 / fps + delay``.
+
+For example, for an animation with 3 frames, 2 FPS and a frame delay on the second frame of 1.2, the resulting playback will be:
+
+::
+
+    Frame 0: 0.5 s (1 / fps)
+    Frame 1: 1.7 s (1 / fps + 1.2)
+    Frame 2: 0.5 s (1 / fps)
+    Total duration: 2.7 s
+
 .. _class_AnimatedTexture_method_set_frame_texture:
 .. _class_AnimatedTexture_method_set_frame_texture:
 
 
 - void **set_frame_texture** **(** :ref:`int<class_int>` frame, :ref:`Texture<class_Texture>` texture **)**
 - void **set_frame_texture** **(** :ref:`int<class_int>` frame, :ref:`Texture<class_Texture>` texture **)**
 
 
+Assigns a :ref:`Texture<class_Texture>` to the given ``frame`` ID. IDs start at 0 (so the first frame has ID 0, and the last frame of the animation has ID :ref:`frames<class_AnimatedTexture_property_frames>` - 1).
+
+You can define any frame texture up to :ref:`MAX_FRAMES<class_AnimatedTexture_constant_MAX_FRAMES>`, but keep in mind that only frames from 0 to :ref:`frames<class_AnimatedTexture_property_frames>` - 1 will be part of the animation.
+

+ 6 - 0
classes/class_camera.rst

@@ -57,6 +57,8 @@ Methods
 +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`           | :ref:`get_cull_mask_bit<class_Camera_method_get_cull_mask_bit>` **(** :ref:`int<class_int>` layer **)** const                                                            |
 | :ref:`bool<class_bool>`           | :ref:`get_cull_mask_bit<class_Camera_method_get_cull_mask_bit>` **(** :ref:`int<class_int>` layer **)** const                                                            |
 +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>`         | :ref:`get_frustum<class_Camera_method_get_frustum>` **(** **)** const                                                                                                    |
++-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`           | :ref:`is_position_behind<class_Camera_method_is_position_behind>` **(** :ref:`Vector3<class_Vector3>` world_point **)** const                                            |
 | :ref:`bool<class_bool>`           | :ref:`is_position_behind<class_Camera_method_is_position_behind>` **(** :ref:`Vector3<class_Vector3>` world_point **)** const                                            |
 +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | void                              | :ref:`make_current<class_Camera_method_make_current>` **(** **)**                                                                                                        |
 | void                              | :ref:`make_current<class_Camera_method_make_current>` **(** **)**                                                                                                        |
@@ -292,6 +294,10 @@ Gets the camera transform. Subclassed cameras (such as CharacterCamera) may prov
 
 
 - :ref:`bool<class_bool>` **get_cull_mask_bit** **(** :ref:`int<class_int>` layer **)** const
 - :ref:`bool<class_bool>` **get_cull_mask_bit** **(** :ref:`int<class_int>` layer **)** const
 
 
+.. _class_Camera_method_get_frustum:
+
+- :ref:`Array<class_Array>` **get_frustum** **(** **)** const
+
 .. _class_Camera_method_is_position_behind:
 .. _class_Camera_method_is_position_behind:
 
 
 - :ref:`bool<class_bool>` **is_position_behind** **(** :ref:`Vector3<class_Vector3>` world_point **)** const
 - :ref:`bool<class_bool>` **is_position_behind** **(** :ref:`Vector3<class_Vector3>` world_point **)** const

+ 17 - 11
classes/class_csgshape.rst

@@ -38,17 +38,19 @@ Properties
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`get_collision_layer_bit<class_CSGShape_method_get_collision_layer_bit>` **(** :ref:`int<class_int>` bit **)** const                          |
-+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`get_collision_mask_bit<class_CSGShape_method_get_collision_mask_bit>` **(** :ref:`int<class_int>` bit **)** const                            |
-+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>` | :ref:`is_root_shape<class_CSGShape_method_is_root_shape>` **(** **)** const                                                                        |
-+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`set_collision_layer_bit<class_CSGShape_method_set_collision_layer_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)** |
-+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                    | :ref:`set_collision_mask_bit<class_CSGShape_method_set_collision_mask_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**   |
-+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
++---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`get_collision_layer_bit<class_CSGShape_method_get_collision_layer_bit>` **(** :ref:`int<class_int>` bit **)** const                          |
++---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`get_collision_mask_bit<class_CSGShape_method_get_collision_mask_bit>` **(** :ref:`int<class_int>` bit **)** const                            |
++---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Array<class_Array>` | :ref:`get_meshes<class_CSGShape_method_get_meshes>` **(** **)** const                                                                              |
++---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`   | :ref:`is_root_shape<class_CSGShape_method_is_root_shape>` **(** **)** const                                                                        |
++---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`set_collision_layer_bit<class_CSGShape_method_set_collision_layer_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)** |
++---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                      | :ref:`set_collision_mask_bit<class_CSGShape_method_set_collision_mask_bit>` **(** :ref:`int<class_int>` bit, :ref:`bool<class_bool>` value **)**   |
++---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Enumerations
 Enumerations
 ------------
 ------------
@@ -166,6 +168,10 @@ Returns an individual bit on the collision mask.
 
 
 Returns an individual bit on the collision mask.
 Returns an individual bit on the collision mask.
 
 
+.. _class_CSGShape_method_get_meshes:
+
+- :ref:`Array<class_Array>` **get_meshes** **(** **)** const
+
 .. _class_CSGShape_method_is_root_shape:
 .. _class_CSGShape_method_is_root_shape:
 
 
 - :ref:`bool<class_bool>` **is_root_shape** **(** **)** const
 - :ref:`bool<class_bool>` **is_root_shape** **(** **)** const

+ 55 - 31
classes/class_editorspatialgizmo.rst

@@ -19,40 +19,46 @@ Custom gizmo for editing Spatial objects.
 Methods
 Methods
 -------
 -------
 
 
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`add_collision_segments<class_EditorSpatialGizmo_method_add_collision_segments>` **(** :ref:`PoolVector3Array<class_PoolVector3Array>` segments **)**                                                                                                      |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`add_collision_triangles<class_EditorSpatialGizmo_method_add_collision_triangles>` **(** :ref:`TriangleMesh<class_TriangleMesh>` triangles **)**                                                                                                           |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`add_handles<class_EditorSpatialGizmo_method_add_handles>` **(** :ref:`PoolVector3Array<class_PoolVector3Array>` handles, :ref:`Material<class_Material>` material, :ref:`bool<class_bool>` billboard=false, :ref:`bool<class_bool>` secondary=false **)** |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`add_lines<class_EditorSpatialGizmo_method_add_lines>` **(** :ref:`PoolVector3Array<class_PoolVector3Array>` lines, :ref:`Material<class_Material>` material, :ref:`bool<class_bool>` billboard=false **)**                                                |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`add_mesh<class_EditorSpatialGizmo_method_add_mesh>` **(** :ref:`ArrayMesh<class_ArrayMesh>` mesh, :ref:`bool<class_bool>` billboard=false, :ref:`RID<class_RID>` skeleton **)**                                                                           |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`add_unscaled_billboard<class_EditorSpatialGizmo_method_add_unscaled_billboard>` **(** :ref:`Material<class_Material>` material, :ref:`float<class_float>` default_scale=1 **)**                                                                           |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`clear<class_EditorSpatialGizmo_method_clear>` **(** **)**                                                                                                                                                                                                 |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`commit_handle<class_EditorSpatialGizmo_method_commit_handle>` **(** :ref:`int<class_int>` index, :ref:`Variant<class_Variant>` restore, :ref:`bool<class_bool>` cancel=false **)** virtual                                                                |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`String<class_String>`   | :ref:`get_handle_name<class_EditorSpatialGizmo_method_get_handle_name>` **(** :ref:`int<class_int>` index **)** virtual                                                                                                                                         |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`Variant<class_Variant>` | :ref:`get_handle_value<class_EditorSpatialGizmo_method_get_handle_value>` **(** :ref:`int<class_int>` index **)** virtual                                                                                                                                       |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`redraw<class_EditorSpatialGizmo_method_redraw>` **(** **)** virtual                                                                                                                                                                                       |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`set_handle<class_EditorSpatialGizmo_method_set_handle>` **(** :ref:`int<class_int>` index, :ref:`Camera<class_Camera>` camera, :ref:`Vector2<class_Vector2>` point **)** virtual                                                                          |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`set_hidden<class_EditorSpatialGizmo_method_set_hidden>` **(** :ref:`bool<class_bool>` hidden **)**                                                                                                                                                        |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| void                          | :ref:`set_spatial_node<class_EditorSpatialGizmo_method_set_spatial_node>` **(** :ref:`Node<class_Node>` node **)**                                                                                                                                              |
-+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`add_collision_segments<class_EditorSpatialGizmo_method_add_collision_segments>` **(** :ref:`PoolVector3Array<class_PoolVector3Array>` segments **)**                                                                                                      |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`add_collision_triangles<class_EditorSpatialGizmo_method_add_collision_triangles>` **(** :ref:`TriangleMesh<class_TriangleMesh>` triangles **)**                                                                                                           |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`add_handles<class_EditorSpatialGizmo_method_add_handles>` **(** :ref:`PoolVector3Array<class_PoolVector3Array>` handles, :ref:`Material<class_Material>` material, :ref:`bool<class_bool>` billboard=false, :ref:`bool<class_bool>` secondary=false **)** |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`add_lines<class_EditorSpatialGizmo_method_add_lines>` **(** :ref:`PoolVector3Array<class_PoolVector3Array>` lines, :ref:`Material<class_Material>` material, :ref:`bool<class_bool>` billboard=false **)**                                                |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`add_mesh<class_EditorSpatialGizmo_method_add_mesh>` **(** :ref:`ArrayMesh<class_ArrayMesh>` mesh, :ref:`bool<class_bool>` billboard=false, :ref:`RID<class_RID>` skeleton **)**                                                                           |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`add_unscaled_billboard<class_EditorSpatialGizmo_method_add_unscaled_billboard>` **(** :ref:`Material<class_Material>` material, :ref:`float<class_float>` default_scale=1 **)**                                                                           |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`clear<class_EditorSpatialGizmo_method_clear>` **(** **)**                                                                                                                                                                                                 |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`commit_handle<class_EditorSpatialGizmo_method_commit_handle>` **(** :ref:`int<class_int>` index, :ref:`Variant<class_Variant>` restore, :ref:`bool<class_bool>` cancel=false **)** virtual                                                                |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`String<class_String>`                                     | :ref:`get_handle_name<class_EditorSpatialGizmo_method_get_handle_name>` **(** :ref:`int<class_int>` index **)** virtual                                                                                                                                         |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Variant<class_Variant>`                                   | :ref:`get_handle_value<class_EditorSpatialGizmo_method_get_handle_value>` **(** :ref:`int<class_int>` index **)** virtual                                                                                                                                       |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`EditorSpatialGizmoPlugin<class_EditorSpatialGizmoPlugin>` | :ref:`get_plugin<class_EditorSpatialGizmo_method_get_plugin>` **(** **)** const                                                                                                                                                                                 |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Spatial<class_Spatial>`                                   | :ref:`get_spatial_node<class_EditorSpatialGizmo_method_get_spatial_node>` **(** **)** const                                                                                                                                                                     |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`bool<class_bool>`                                         | :ref:`is_handle_highlighted<class_EditorSpatialGizmo_method_is_handle_highlighted>` **(** :ref:`int<class_int>` index **)** virtual                                                                                                                             |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`redraw<class_EditorSpatialGizmo_method_redraw>` **(** **)** virtual                                                                                                                                                                                       |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`set_handle<class_EditorSpatialGizmo_method_set_handle>` **(** :ref:`int<class_int>` index, :ref:`Camera<class_Camera>` camera, :ref:`Vector2<class_Vector2>` point **)** virtual                                                                          |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`set_hidden<class_EditorSpatialGizmo_method_set_hidden>` **(** :ref:`bool<class_bool>` hidden **)**                                                                                                                                                        |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| void                                                            | :ref:`set_spatial_node<class_EditorSpatialGizmo_method_set_spatial_node>` **(** :ref:`Node<class_Node>` node **)**                                                                                                                                              |
++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
 Description
 Description
 -----------
 -----------
 
 
-Custom gizmo that is used for providing custom visualization and editing (handles) for 3D Spatial objects. These are created by :ref:`EditorSpatialGizmoPlugin.create_gizmo<class_EditorSpatialGizmoPlugin_method_create_gizmo>`.
+Custom gizmo that is used for providing custom visualization and editing (handles) for 3D Spatial objects. See :ref:`EditorSpatialGizmoPlugin<class_EditorSpatialGizmoPlugin>` for more information.
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
@@ -115,7 +121,25 @@ Handles can be named for reference to the user when editing.
 
 
 - :ref:`Variant<class_Variant>` **get_handle_value** **(** :ref:`int<class_int>` index **)** virtual
 - :ref:`Variant<class_Variant>` **get_handle_value** **(** :ref:`int<class_int>` index **)** virtual
 
 
-Get actual value of a handle. This value can be anything and used for eventually undoing the motion when calling :ref:`commit_handle<class_EditorSpatialGizmo_method_commit_handle>`
+Get actual value of a handle. This value can be anything and used for eventually undoing the motion when calling :ref:`commit_handle<class_EditorSpatialGizmo_method_commit_handle>`.
+
+.. _class_EditorSpatialGizmo_method_get_plugin:
+
+- :ref:`EditorSpatialGizmoPlugin<class_EditorSpatialGizmoPlugin>` **get_plugin** **(** **)** const
+
+Return the :ref:`EditorSpatialGizmoPlugin<class_EditorSpatialGizmoPlugin>` that owns this gizmo. It's useful to retrieve materials using :ref:`EditorSpatialGizmoPlugin.get_material<class_EditorSpatialGizmoPlugin_method_get_material>`.
+
+.. _class_EditorSpatialGizmo_method_get_spatial_node:
+
+- :ref:`Spatial<class_Spatial>` **get_spatial_node** **(** **)** const
+
+Returns the Spatial node associated with this gizmo.
+
+.. _class_EditorSpatialGizmo_method_is_handle_highlighted:
+
+- :ref:`bool<class_bool>` **is_handle_highlighted** **(** :ref:`int<class_int>` index **)** virtual
+
+Get whether a handle is highlighted or not.
 
 
 .. _class_EditorSpatialGizmo_method_redraw:
 .. _class_EditorSpatialGizmo_method_redraw:
 
 

+ 46 - 4
classes/class_editorspatialgizmoplugin.rst

@@ -14,7 +14,7 @@ EditorSpatialGizmoPlugin
 Brief Description
 Brief Description
 -----------------
 -----------------
 
 
-
+Used by the editor to define Spatial gizmo types.
 
 
 Methods
 Methods
 -------
 -------
@@ -44,7 +44,7 @@ Methods
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                             | :ref:`has_gizmo<class_EditorSpatialGizmoPlugin_method_has_gizmo>` **(** :ref:`Spatial<class_Spatial>` spatial **)** virtual                                                                                                                                                                |
 | :ref:`bool<class_bool>`                             | :ref:`has_gizmo<class_EditorSpatialGizmoPlugin_method_has_gizmo>` **(** :ref:`Spatial<class_Spatial>` spatial **)** virtual                                                                                                                                                                |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
-| :ref:`bool<class_bool>`                             | :ref:`is_gizmo_handle_highlighted<class_EditorSpatialGizmoPlugin_method_is_gizmo_handle_highlighted>` **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index **)** virtual                                                                           |
+| :ref:`bool<class_bool>`                             | :ref:`is_handle_highlighted<class_EditorSpatialGizmoPlugin_method_is_handle_highlighted>` **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index **)** virtual                                                                                       |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`bool<class_bool>`                             | :ref:`is_selectable_when_hidden<class_EditorSpatialGizmoPlugin_method_is_selectable_when_hidden>` **(** **)** virtual                                                                                                                                                                      |
 | :ref:`bool<class_bool>`                             | :ref:`is_selectable_when_hidden<class_EditorSpatialGizmoPlugin_method_is_selectable_when_hidden>` **(** **)** virtual                                                                                                                                                                      |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
@@ -53,6 +53,16 @@ Methods
 | void                                                | :ref:`set_handle<class_EditorSpatialGizmoPlugin_method_set_handle>` **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index, :ref:`Camera<class_Camera>` camera, :ref:`Vector2<class_Vector2>` point **)** virtual                                    |
 | void                                                | :ref:`set_handle<class_EditorSpatialGizmoPlugin_method_set_handle>` **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index, :ref:`Camera<class_Camera>` camera, :ref:`Vector2<class_Vector2>` point **)** virtual                                    |
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 
 
+Description
+-----------
+
+EditorSpatialGizmoPlugin allows you to define a new type of Gizmo. There are two main ways to do so: extending :ref:`EditorSpatialGizmoPlugin<class_EditorSpatialGizmoPlugin>` for the simpler gizmos, or creating a new :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` type. See the tutorial in the documentation for more info.
+
+Tutorials
+---------
+
+- :doc:`../tutorials/plugins/editor/spatial_gizmos`
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
@@ -60,63 +70,95 @@ Method Descriptions
 
 
 - void **add_material** **(** :ref:`String<class_String>` name, :ref:`SpatialMaterial<class_SpatialMaterial>` material **)**
 - void **add_material** **(** :ref:`String<class_String>` name, :ref:`SpatialMaterial<class_SpatialMaterial>` material **)**
 
 
+Adds a new material to the internal material list for the plugin. It can then be accessed with :ref:`get_material<class_EditorSpatialGizmoPlugin_method_get_material>`. Should not be overridden.
+
 .. _class_EditorSpatialGizmoPlugin_method_can_be_hidden:
 .. _class_EditorSpatialGizmoPlugin_method_can_be_hidden:
 
 
 - :ref:`bool<class_bool>` **can_be_hidden** **(** **)** virtual
 - :ref:`bool<class_bool>` **can_be_hidden** **(** **)** virtual
 
 
+Override this method to define whether the gizmo can be hidden or not. Defaults to true.
+
 .. _class_EditorSpatialGizmoPlugin_method_commit_handle:
 .. _class_EditorSpatialGizmoPlugin_method_commit_handle:
 
 
 - void **commit_handle** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index, :ref:`Variant<class_Variant>` restore, :ref:`bool<class_bool>` cancel=false **)** virtual
 - void **commit_handle** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index, :ref:`Variant<class_Variant>` restore, :ref:`bool<class_bool>` cancel=false **)** virtual
 
 
+Override this method to commit gizmo handles. Called for this plugin's active gizmos.
+
 .. _class_EditorSpatialGizmoPlugin_method_create_gizmo:
 .. _class_EditorSpatialGizmoPlugin_method_create_gizmo:
 
 
 - :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` **create_gizmo** **(** :ref:`Spatial<class_Spatial>` spatial **)** virtual
 - :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` **create_gizmo** **(** :ref:`Spatial<class_Spatial>` spatial **)** virtual
 
 
+Override this method to return a custom :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` for the spatial nodes of your choice, return ``null`` for the rest of nodes. (See also :ref:`has_gizmo<class_EditorSpatialGizmoPlugin_method_has_gizmo>`)
+
 .. _class_EditorSpatialGizmoPlugin_method_create_handle_material:
 .. _class_EditorSpatialGizmoPlugin_method_create_handle_material:
 
 
 - void **create_handle_material** **(** :ref:`String<class_String>` name, :ref:`bool<class_bool>` billboard=false **)**
 - void **create_handle_material** **(** :ref:`String<class_String>` name, :ref:`bool<class_bool>` billboard=false **)**
 
 
+Creates a handle material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with :ref:`get_material<class_EditorSpatialGizmoPlugin_method_get_material>` and used in :ref:`EditorSpatialGizmo.add_handles<class_EditorSpatialGizmo_method_add_handles>`. Should not be overridden.
+
 .. _class_EditorSpatialGizmoPlugin_method_create_icon_material:
 .. _class_EditorSpatialGizmoPlugin_method_create_icon_material:
 
 
 - void **create_icon_material** **(** :ref:`String<class_String>` name, :ref:`Texture<class_Texture>` texture, :ref:`bool<class_bool>` on_top=false, :ref:`Color<class_Color>` color=Color( 1, 1, 1, 1 ) **)**
 - void **create_icon_material** **(** :ref:`String<class_String>` name, :ref:`Texture<class_Texture>` texture, :ref:`bool<class_bool>` on_top=false, :ref:`Color<class_Color>` color=Color( 1, 1, 1, 1 ) **)**
 
 
+Creates an icon material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with :ref:`get_material<class_EditorSpatialGizmoPlugin_method_get_material>` and used in :ref:`EditorSpatialGizmo.add_unscaled_billboard<class_EditorSpatialGizmo_method_add_unscaled_billboard>`. Should not be overridden.
+
 .. _class_EditorSpatialGizmoPlugin_method_create_material:
 .. _class_EditorSpatialGizmoPlugin_method_create_material:
 
 
 - void **create_material** **(** :ref:`String<class_String>` name, :ref:`Color<class_Color>` color, :ref:`bool<class_bool>` billboard=false, :ref:`bool<class_bool>` on_top=false, :ref:`bool<class_bool>` use_vertex_color=false **)**
 - void **create_material** **(** :ref:`String<class_String>` name, :ref:`Color<class_Color>` color, :ref:`bool<class_bool>` billboard=false, :ref:`bool<class_bool>` on_top=false, :ref:`bool<class_bool>` use_vertex_color=false **)**
 
 
+Creates an unshaded material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with :ref:`get_material<class_EditorSpatialGizmoPlugin_method_get_material>` and used in :ref:`EditorSpatialGizmo.add_mesh<class_EditorSpatialGizmo_method_add_mesh>` and :ref:`EditorSpatialGizmo.add_lines<class_EditorSpatialGizmo_method_add_lines>`. Should not be overridden.
+
 .. _class_EditorSpatialGizmoPlugin_method_get_handle_name:
 .. _class_EditorSpatialGizmoPlugin_method_get_handle_name:
 
 
 - :ref:`String<class_String>` **get_handle_name** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index **)** virtual
 - :ref:`String<class_String>` **get_handle_name** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index **)** virtual
 
 
+Override this method to provide gizmo's handle names. Called for this plugin's active gizmos.
+
 .. _class_EditorSpatialGizmoPlugin_method_get_handle_value:
 .. _class_EditorSpatialGizmoPlugin_method_get_handle_value:
 
 
 - :ref:`Variant<class_Variant>` **get_handle_value** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index **)** virtual
 - :ref:`Variant<class_Variant>` **get_handle_value** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index **)** virtual
 
 
+Get actual value of a handle from gizmo. Called for this plugin's active gizmos.
+
 .. _class_EditorSpatialGizmoPlugin_method_get_material:
 .. _class_EditorSpatialGizmoPlugin_method_get_material:
 
 
 - :ref:`SpatialMaterial<class_SpatialMaterial>` **get_material** **(** :ref:`String<class_String>` name, :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo **)**
 - :ref:`SpatialMaterial<class_SpatialMaterial>` **get_material** **(** :ref:`String<class_String>` name, :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo **)**
 
 
+Get material from the internal list of materials. If an :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` is provided it will try to get the corresponding variant (selected and/or editable).
+
 .. _class_EditorSpatialGizmoPlugin_method_get_name:
 .. _class_EditorSpatialGizmoPlugin_method_get_name:
 
 
 - :ref:`String<class_String>` **get_name** **(** **)** virtual
 - :ref:`String<class_String>` **get_name** **(** **)** virtual
 
 
+Override this method to provide the name that will appear in teh gizmo visibility menu.
+
 .. _class_EditorSpatialGizmoPlugin_method_has_gizmo:
 .. _class_EditorSpatialGizmoPlugin_method_has_gizmo:
 
 
 - :ref:`bool<class_bool>` **has_gizmo** **(** :ref:`Spatial<class_Spatial>` spatial **)** virtual
 - :ref:`bool<class_bool>` **has_gizmo** **(** :ref:`Spatial<class_Spatial>` spatial **)** virtual
 
 
-.. _class_EditorSpatialGizmoPlugin_method_is_gizmo_handle_highlighted:
+Override this method to define which Spatial nodes have a gizmo from this plugin. Whenever a :ref:`Spatial<class_Spatial>` node is added to a scene this method is called, if it returns ``true`` the node gets a generic :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` assigned and is added to this plugin's list of active gizmos.
 
 
-- :ref:`bool<class_bool>` **is_gizmo_handle_highlighted** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index **)** virtual
+.. _class_EditorSpatialGizmoPlugin_method_is_handle_highlighted:
+
+- :ref:`bool<class_bool>` **is_handle_highlighted** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index **)** virtual
+
+Get whether a handle is highlighted or not. Called for this plugin's active gizmos.
 
 
 .. _class_EditorSpatialGizmoPlugin_method_is_selectable_when_hidden:
 .. _class_EditorSpatialGizmoPlugin_method_is_selectable_when_hidden:
 
 
 - :ref:`bool<class_bool>` **is_selectable_when_hidden** **(** **)** virtual
 - :ref:`bool<class_bool>` **is_selectable_when_hidden** **(** **)** virtual
 
 
+Override this method to define whether Spatial with this gizmo should be selecteble even when the gizmo is hidden.
+
 .. _class_EditorSpatialGizmoPlugin_method_redraw:
 .. _class_EditorSpatialGizmoPlugin_method_redraw:
 
 
 - void **redraw** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo **)** virtual
 - void **redraw** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo **)** virtual
 
 
+Callback to redraw the provided gizmo. Called for this plugin's active gizmos.
+
 .. _class_EditorSpatialGizmoPlugin_method_set_handle:
 .. _class_EditorSpatialGizmoPlugin_method_set_handle:
 
 
 - void **set_handle** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index, :ref:`Camera<class_Camera>` camera, :ref:`Vector2<class_Vector2>` point **)** virtual
 - void **set_handle** **(** :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` gizmo, :ref:`int<class_int>` index, :ref:`Camera<class_Camera>` camera, :ref:`Vector2<class_Vector2>` point **)** virtual
 
 
+Update the value of a handle after it has been updated. Called for this plugin's active gizmos.
+

+ 5 - 1
classes/class_expression.rst

@@ -48,7 +48,7 @@ In the following example we use a :ref:`LineEdit<class_LineEdit>` node to write
     func _on_text_entered(command):
     func _on_text_entered(command):
         var error = expression.parse(command, [])
         var error = expression.parse(command, [])
         if error != OK:
         if error != OK:
-            print(get_error_text())
+            print(expression.get_error_text())
             return
             return
         var result = expression.execute([], null, true)
         var result = expression.execute([], null, true)
         if not expression.has_execute_failed():
         if not expression.has_execute_failed():
@@ -63,6 +63,8 @@ Method Descriptions
 
 
 Executes the expression that was previously parsed by :ref:`parse<class_Expression_method_parse>` and returns the result. Before you use the returned object, you should check if the method failed by calling :ref:`has_execute_failed<class_Expression_method_has_execute_failed>`.
 Executes the expression that was previously parsed by :ref:`parse<class_Expression_method_parse>` and returns the result. Before you use the returned object, you should check if the method failed by calling :ref:`has_execute_failed<class_Expression_method_has_execute_failed>`.
 
 
+If you defined input variables in :ref:`parse<class_Expression_method_parse>`, you can specify their values in the inputs array, in the same order.
+
 .. _class_Expression_method_get_error_text:
 .. _class_Expression_method_get_error_text:
 
 
 - :ref:`String<class_String>` **get_error_text** **(** **)** const
 - :ref:`String<class_String>` **get_error_text** **(** **)** const
@@ -81,3 +83,5 @@ Returns ``true`` if :ref:`execute<class_Expression_method_execute>` has failed.
 
 
 Parses the expression and returns a :ref:`Error<enum_@GlobalScope_Error>`.
 Parses the expression and returns a :ref:`Error<enum_@GlobalScope_Error>`.
 
 
+You can optionally specify names of variables that may appear in the expression with ``input_names``, so that you can bind them when it gets executed.
+

+ 12 - 1
classes/class_image.rst

@@ -369,10 +369,21 @@ enum **CompressSource**:
 
 
 - **COMPRESS_SOURCE_NORMAL** = **2**
 - **COMPRESS_SOURCE_NORMAL** = **2**
 
 
+Constants
+---------
+
+.. _class_Image_constant_MAX_WIDTH:
+
+.. _class_Image_constant_MAX_HEIGHT:
+
+- **MAX_WIDTH** = **16384** --- The maximal width allowed for ``Image`` resources.
+
+- **MAX_HEIGHT** = **16384** --- The maximal height allowed for ``Image`` resources.
+
 Description
 Description
 -----------
 -----------
 
 
-Native image datatype. Contains image data, which can be converted to a :ref:`Texture<class_Texture>`, and several functions to interact with it. The maximum width and height for an ``Image`` is 16384 pixels.
+Native image datatype. Contains image data, which can be converted to a :ref:`Texture<class_Texture>`, and several functions to interact with it. The maximum width and height for an ``Image`` are :ref:`MAX_WIDTH<class_Image_constant_MAX_WIDTH>` and :ref:`MAX_HEIGHT<class_Image_constant_MAX_HEIGHT>`.
 
 
 Property Descriptions
 Property Descriptions
 ---------------------
 ---------------------

+ 24 - 10
classes/class_multimesh.rst

@@ -61,9 +61,9 @@ Enumerations
 
 
 enum **TransformFormat**:
 enum **TransformFormat**:
 
 
-- **TRANSFORM_2D** = **0**
+- **TRANSFORM_2D** = **0** --- Use this when using 2D transforms.
 
 
-- **TRANSFORM_3D** = **1**
+- **TRANSFORM_3D** = **1** --- Use this when using 3D transforms.
 
 
 .. _enum_MultiMesh_ColorFormat:
 .. _enum_MultiMesh_ColorFormat:
 
 
@@ -75,11 +75,11 @@ enum **TransformFormat**:
 
 
 enum **ColorFormat**:
 enum **ColorFormat**:
 
 
-- **COLOR_NONE** = **0**
+- **COLOR_NONE** = **0** --- Use when you are not using per-instance :ref:`Color<class_Color>`\ s.
 
 
-- **COLOR_8BIT** = **1**
+- **COLOR_8BIT** = **1** --- Compress :ref:`Color<class_Color>` data into 8 bits when passing to shader. This uses less memory and can be faster, but the :ref:`Color<class_Color>` loses precision.
 
 
-- **COLOR_FLOAT** = **2**
+- **COLOR_FLOAT** = **2** --- The :ref:`Color<class_Color>` passed into :ref:`set_instance_color<class_MultiMesh_method_set_instance_color>` will use 4 floats. Use this for highest precision :ref:`Color<class_Color>`.
 
 
 .. _enum_MultiMesh_CustomDataFormat:
 .. _enum_MultiMesh_CustomDataFormat:
 
 
@@ -91,18 +91,18 @@ enum **ColorFormat**:
 
 
 enum **CustomDataFormat**:
 enum **CustomDataFormat**:
 
 
-- **CUSTOM_DATA_NONE** = **0**
+- **CUSTOM_DATA_NONE** = **0** --- Use when you are not using per-instance custom data.
 
 
-- **CUSTOM_DATA_8BIT** = **1**
+- **CUSTOM_DATA_8BIT** = **1** --- Compress custom_data into 8 bits when passing to shader. This uses less memory and can be faster, but loses precision.
 
 
-- **CUSTOM_DATA_FLOAT** = **2**
+- **CUSTOM_DATA_FLOAT** = **2** --- The :ref:`Color<class_Color>` passed into :ref:`set_instance_custom_data<class_MultiMesh_method_set_instance_custom_data>` will use 4 floats. Use this for highest precision.
 
 
 Description
 Description
 -----------
 -----------
 
 
-MultiMesh provides low level mesh instancing. If the amount of :ref:`Mesh<class_Mesh>` instances needed goes from hundreds to thousands (and most need to be visible at close proximity) creating such a large amount of :ref:`MeshInstance<class_MeshInstance>` nodes may affect performance by using too much CPU or video memory.
+MultiMesh provides low level mesh instancing. Drawing thousands of :ref:`MeshInstance<class_MeshInstance>` nodes can be slow because each object is submitted to the GPU to be drawn individually.
 
 
-For this case a MultiMesh becomes very useful, as it can draw thousands of instances with little API overhead.
+MultiMesh is much faster because it can draw thousands of instances with a single draw call, resulting in less API overhead.
 
 
 As a drawback, if the instances are too far away of each other, performance may be reduced as every single instance will always rendered (they are spatially indexed as one, for the whole object).
 As a drawback, if the instances are too far away of each other, performance may be reduced as every single instance will always rendered (they are spatially indexed as one, for the whole object).
 
 
@@ -121,6 +121,8 @@ Property Descriptions
 | *Getter* | get_color_format()      |
 | *Getter* | get_color_format()      |
 +----------+-------------------------+
 +----------+-------------------------+
 
 
+Format of colors in color array that gets passed to shader.
+
 .. _class_MultiMesh_property_custom_data_format:
 .. _class_MultiMesh_property_custom_data_format:
 
 
 - :ref:`CustomDataFormat<enum_MultiMesh_CustomDataFormat>` **custom_data_format**
 - :ref:`CustomDataFormat<enum_MultiMesh_CustomDataFormat>` **custom_data_format**
@@ -131,6 +133,8 @@ Property Descriptions
 | *Getter* | get_custom_data_format()      |
 | *Getter* | get_custom_data_format()      |
 +----------+-------------------------------+
 +----------+-------------------------------+
 
 
+Format of custom data in custom data array that gets passed to shader.
+
 .. _class_MultiMesh_property_instance_count:
 .. _class_MultiMesh_property_instance_count:
 
 
 - :ref:`int<class_int>` **instance_count**
 - :ref:`int<class_int>` **instance_count**
@@ -141,6 +145,8 @@ Property Descriptions
 | *Getter* | get_instance_count()      |
 | *Getter* | get_instance_count()      |
 +----------+---------------------------+
 +----------+---------------------------+
 
 
+Number of instances that will get drawn.
+
 .. _class_MultiMesh_property_mesh:
 .. _class_MultiMesh_property_mesh:
 
 
 - :ref:`Mesh<class_Mesh>` **mesh**
 - :ref:`Mesh<class_Mesh>` **mesh**
@@ -151,6 +157,8 @@ Property Descriptions
 | *Getter* | get_mesh()      |
 | *Getter* | get_mesh()      |
 +----------+-----------------+
 +----------+-----------------+
 
 
+Mesh to be drawn.
+
 .. _class_MultiMesh_property_transform_format:
 .. _class_MultiMesh_property_transform_format:
 
 
 - :ref:`TransformFormat<enum_MultiMesh_TransformFormat>` **transform_format**
 - :ref:`TransformFormat<enum_MultiMesh_TransformFormat>` **transform_format**
@@ -161,6 +169,8 @@ Property Descriptions
 | *Getter* | get_transform_format()      |
 | *Getter* | get_transform_format()      |
 +----------+-----------------------------+
 +----------+-----------------------------+
 
 
+Format of transform used to transform mesh, either 2D or 3D.
+
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
 
 
@@ -180,6 +190,8 @@ Get the color of a specific instance.
 
 
 - :ref:`Color<class_Color>` **get_instance_custom_data** **(** :ref:`int<class_int>` instance **)** const
 - :ref:`Color<class_Color>` **get_instance_custom_data** **(** :ref:`int<class_int>` instance **)** const
 
 
+Return the custom data that has been set for a specific instance.
+
 .. _class_MultiMesh_method_get_instance_transform:
 .. _class_MultiMesh_method_get_instance_transform:
 
 
 - :ref:`Transform<class_Transform>` **get_instance_transform** **(** :ref:`int<class_int>` instance **)** const
 - :ref:`Transform<class_Transform>` **get_instance_transform** **(** :ref:`int<class_int>` instance **)** const
@@ -196,6 +208,8 @@ Set the color of a specific instance.
 
 
 - void **set_instance_custom_data** **(** :ref:`int<class_int>` instance, :ref:`Color<class_Color>` custom_data **)**
 - void **set_instance_custom_data** **(** :ref:`int<class_int>` instance, :ref:`Color<class_Color>` custom_data **)**
 
 
+Set custom data for a specific instance. Although :ref:`Color<class_Color>` is used, it is just a container for 4 numbers.
+
 .. _class_MultiMesh_method_set_instance_transform:
 .. _class_MultiMesh_method_set_instance_transform:
 
 
 - void **set_instance_transform** **(** :ref:`int<class_int>` instance, :ref:`Transform<class_Transform>` transform **)**
 - void **set_instance_transform** **(** :ref:`int<class_int>` instance, :ref:`Transform<class_Transform>` transform **)**

+ 8 - 0
classes/class_node.rst

@@ -87,6 +87,8 @@ Methods
 +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Array<class_Array>`         | :ref:`get_node_and_resource<class_Node_method_get_node_and_resource>` **(** :ref:`NodePath<class_NodePath>` path **)**                                                                              |
 | :ref:`Array<class_Array>`         | :ref:`get_node_and_resource<class_Node_method_get_node_and_resource>` **(** :ref:`NodePath<class_NodePath>` path **)**                                                                              |
 +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| :ref:`Node<class_Node>`           | :ref:`get_node_or_null<class_Node_method_get_node_or_null>` **(** :ref:`NodePath<class_NodePath>` path **)** const                                                                                  |
++-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`Node<class_Node>`           | :ref:`get_parent<class_Node_method_get_parent>` **(** **)** const                                                                                                                                   |
 | :ref:`Node<class_Node>`           | :ref:`get_parent<class_Node_method_get_parent>` **(** **)** const                                                                                                                                   |
 +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 +-----------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
 | :ref:`NodePath<class_NodePath>`   | :ref:`get_path<class_Node_method_get_path>` **(** **)** const                                                                                                                                       |
 | :ref:`NodePath<class_NodePath>`   | :ref:`get_path<class_Node_method_get_path>` **(** **)** const                                                                                                                                       |
@@ -661,6 +663,12 @@ Possible paths are:
 
 
 - :ref:`Array<class_Array>` **get_node_and_resource** **(** :ref:`NodePath<class_NodePath>` path **)**
 - :ref:`Array<class_Array>` **get_node_and_resource** **(** :ref:`NodePath<class_NodePath>` path **)**
 
 
+.. _class_Node_method_get_node_or_null:
+
+- :ref:`Node<class_Node>` **get_node_or_null** **(** :ref:`NodePath<class_NodePath>` path **)** const
+
+Similar to :ref:`get_node<class_Node_method_get_node>`, but does not raise an error when ``path`` does not point to a valid ``Node``.
+
 .. _class_Node_method_get_parent:
 .. _class_Node_method_get_parent:
 
 
 - :ref:`Node<class_Node>` **get_parent** **(** **)** const
 - :ref:`Node<class_Node>` **get_parent** **(** **)** const

+ 1 - 1
classes/class_physicsdirectbodystate.rst

@@ -252,7 +252,7 @@ This is equivalent to ``apply_impulse(Vector3(0, 0, 0), impulse)``.
 
 
 - void **apply_impulse** **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` j **)**
 - void **apply_impulse** **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` j **)**
 
 
-Apply a positioned impulse (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once. Both the impulse and the position are in global coordinates, and the position is relative to the object's origin.
+Applies a positioned impulse to the body. An impulse is time independent! Applying an impulse every frame would result in a framerate dependent force. For this reason it should only be used when simulating one-time impacts. The position uses the rotation of the global coordinate system, but is centered at the object's origin.
 
 
 .. _class_PhysicsDirectBodyState_method_apply_torque_impulse:
 .. _class_PhysicsDirectBodyState_method_apply_torque_impulse:
 
 

+ 1 - 1
classes/class_physicsdirectspacestate.rst

@@ -50,7 +50,7 @@ Method Descriptions
 
 
 Checks whether the shape can travel to a point. The method will return an array with two floats between 0 and 1, both representing a fraction of ``motion``. The first is how far the shape can move without triggering a collision, and the second is the point at which a collision will occur. If no collision is detected, the returned array will be ``[1, 1]``.
 Checks whether the shape can travel to a point. The method will return an array with two floats between 0 and 1, both representing a fraction of ``motion``. The first is how far the shape can move without triggering a collision, and the second is the point at which a collision will occur. If no collision is detected, the returned array will be ``[1, 1]``.
 
 
-If the shape can not move, the returned array will be ``[0, 0]``.
+If the shape can not move, the returned array will be ``[0, 0]`` under Bullet, and empty under GodotPhysics.
 
 
 .. _class_PhysicsDirectSpaceState_method_collide_shape:
 .. _class_PhysicsDirectSpaceState_method_collide_shape:
 
 

+ 1 - 1
classes/class_popupmenu.rst

@@ -445,7 +445,7 @@ Remember this is just cosmetic and you have to add the logic for checking/unchec
 
 
 - void **set_item_as_separator** **(** :ref:`int<class_int>` idx, :ref:`bool<class_bool>` enable **)**
 - void **set_item_as_separator** **(** :ref:`int<class_int>` idx, :ref:`bool<class_bool>` enable **)**
 
 
-Mark the item at index "idx" as a separator, which means that it would be displayed as just a line.
+Mark the item at index "idx" as a separator, which means that it would be displayed as a mere line.
 
 
 .. _class_PopupMenu_method_set_item_checked:
 .. _class_PopupMenu_method_set_item_checked:
 
 

+ 8 - 6
classes/class_resourcepreloader.rst

@@ -36,7 +36,7 @@ Methods
 Description
 Description
 -----------
 -----------
 
 
-Resource Preloader Node. This node is used to preload sub-resources inside a scene, so when the scene is loaded all the resources are ready to use and be retrieved from here.
+This node is used to preload sub-resources inside a scene, so when the scene is loaded, all the resources are ready to use and can be retrieved from the preloader.
 
 
 Method Descriptions
 Method Descriptions
 -------------------
 -------------------
@@ -45,33 +45,35 @@ Method Descriptions
 
 
 - void **add_resource** **(** :ref:`String<class_String>` name, :ref:`Resource<class_Resource>` resource **)**
 - void **add_resource** **(** :ref:`String<class_String>` name, :ref:`Resource<class_Resource>` resource **)**
 
 
+Adds a resource to the preloader with the given ``name``. If a resource with the given ``name`` already exists, the new resource will be renamed to "``name`` N" where N is an incrementing number starting from 2.
+
 .. _class_ResourcePreloader_method_get_resource:
 .. _class_ResourcePreloader_method_get_resource:
 
 
 - :ref:`Resource<class_Resource>` **get_resource** **(** :ref:`String<class_String>` name **)** const
 - :ref:`Resource<class_Resource>` **get_resource** **(** :ref:`String<class_String>` name **)** const
 
 
-Return the resource given a text-id.
+Returns the resource associated to ``name``.
 
 
 .. _class_ResourcePreloader_method_get_resource_list:
 .. _class_ResourcePreloader_method_get_resource_list:
 
 
 - :ref:`PoolStringArray<class_PoolStringArray>` **get_resource_list** **(** **)** const
 - :ref:`PoolStringArray<class_PoolStringArray>` **get_resource_list** **(** **)** const
 
 
-Return the list of resources inside the preloader.
+Returns the list of resources inside the preloader.
 
 
 .. _class_ResourcePreloader_method_has_resource:
 .. _class_ResourcePreloader_method_has_resource:
 
 
 - :ref:`bool<class_bool>` **has_resource** **(** :ref:`String<class_String>` name **)** const
 - :ref:`bool<class_bool>` **has_resource** **(** :ref:`String<class_String>` name **)** const
 
 
-Return true if the preloader has a given resource.
+Returns true if the preloader contains a resource associated to ``name``.
 
 
 .. _class_ResourcePreloader_method_remove_resource:
 .. _class_ResourcePreloader_method_remove_resource:
 
 
 - void **remove_resource** **(** :ref:`String<class_String>` name **)**
 - void **remove_resource** **(** :ref:`String<class_String>` name **)**
 
 
-Remove a resource from the preloader by text id.
+Removes the resource associated to ``name`` from the preloader.
 
 
 .. _class_ResourcePreloader_method_rename_resource:
 .. _class_ResourcePreloader_method_rename_resource:
 
 
 - void **rename_resource** **(** :ref:`String<class_String>` name, :ref:`String<class_String>` newname **)**
 - void **rename_resource** **(** :ref:`String<class_String>` name, :ref:`String<class_String>` newname **)**
 
 
-Rename a resource inside the preloader, from a text-id to a new text-id.
+Renames a resource inside the preloader from ``name`` to ``newname``.
 
 

+ 1 - 1
classes/class_rigidbody.rst

@@ -488,7 +488,7 @@ This is equivalent to ``apply_impulse(Vector3(0,0,0), impulse)``.
 
 
 - void **apply_impulse** **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` impulse **)**
 - void **apply_impulse** **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` impulse **)**
 
 
-Applies a positioned impulse which will be affected by the body mass and shape. This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once. Both the impulse and the position are in global coordinates, and the position is relative to the object's origin.
+Applies a positioned impulse to the body. An impulse is time independent! Applying an impulse every frame would result in a framerate dependent force. For this reason it should only be used when simulating one-time impacts. The position uses the rotation of the global coordinate system, but is centered at the object's origin.
 
 
 .. _class_RigidBody_method_apply_torque_impulse:
 .. _class_RigidBody_method_apply_torque_impulse:
 
 

+ 1 - 1
classes/class_rigidbody2d.rst

@@ -449,7 +449,7 @@ Applies a directional impulse without affecting rotation.
 
 
 - void **apply_impulse** **(** :ref:`Vector2<class_Vector2>` offset, :ref:`Vector2<class_Vector2>` impulse **)**
 - void **apply_impulse** **(** :ref:`Vector2<class_Vector2>` offset, :ref:`Vector2<class_Vector2>` impulse **)**
 
 
-Applies a positioned impulse to the body (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied instantaneously. Both the impulse and the offset from the body origin are in global coordinates.
+Applies a positioned impulse to the body. An impulse is time independent! Applying an impulse every frame would result in a framerate dependent force. For this reason it should only be used when simulating one-time impacts (use the "_force" functions otherwise). The position uses the rotation of the global coordinate system, but is centered at the object's origin.
 
 
 .. _class_RigidBody2D_method_apply_torque_impulse:
 .. _class_RigidBody2D_method_apply_torque_impulse:
 
 

+ 3 - 1
classes/class_websocketclient.rst

@@ -100,7 +100,9 @@ Method Descriptions
 
 
 Connect to the given URL requesting one of the given ``protocols`` as sub-protocol.
 Connect to the given URL requesting one of the given ``protocols`` as sub-protocol.
 
 
-If ``true``, is passed as ``gd_mp_api``, the client will behave like a network peer for the :ref:`MultiplayerAPI<class_MultiplayerAPI>`. Note: connections to non Godot servers will not work, and :ref:`data_received<class_WebSocketClient_signal_data_received>` will not be emitted when this option is true.
+If ``true`` is passed as ``gd_mp_api``, the client will behave like a network peer for the :ref:`MultiplayerAPI<class_MultiplayerAPI>`, connections to non Godot servers will not work, and :ref:`data_received<class_WebSocketClient_signal_data_received>` will not be emitted.
+
+If ``false`` is passed instead (default), you must call :ref:`PacketPeer<class_PacketPeer>` functions (``put_packet``, ``get_packet``, etc.) on the :ref:`WebSocketPeer<class_WebSocketPeer>` returned via ``get_peer(1)`` and not on this object directly (e.g. ``get_peer(1).put_packet(data)``).
 
 
 .. _class_WebSocketClient_method_disconnect_from_host:
 .. _class_WebSocketClient_method_disconnect_from_host:
 
 

+ 3 - 1
classes/class_websocketserver.rst

@@ -112,7 +112,9 @@ Start listening on the given port.
 
 
 You can specify the desired subprotocols via the "protocols" array. If the list empty (default), "binary" will be used.
 You can specify the desired subprotocols via the "protocols" array. If the list empty (default), "binary" will be used.
 
 
-You can use this server as a network peer for :ref:`MultiplayerAPI<class_MultiplayerAPI>` by passing ``true`` as ``gd_mp_api``. Note: :ref:`data_received<class_WebSocketServer_signal_data_received>` will not be fired and clients other than Godot will not work in this case.
+If ``true`` is passed as ``gd_mp_api``, the server will behave like a network peer for the :ref:`MultiplayerAPI<class_MultiplayerAPI>`, connections from non Godot clients will not work, and :ref:`data_received<class_WebSocketServer_signal_data_received>` will not be emitted.
+
+If ``false`` is passed instead (default), you must call :ref:`PacketPeer<class_PacketPeer>` functions (``put_packet``, ``get_packet``, etc.), on the :ref:`WebSocketPeer<class_WebSocketPeer>` returned via ``get_peer(ID)`` to communicate with the peer with given ``ID`` (e.g. ``get_peer(ID).get_available_packet_count``).
 
 
 .. _class_WebSocketServer_method_stop:
 .. _class_WebSocketServer_method_stop: