diff --git a/classes/class_@globalscope.rst b/classes/class_@globalscope.rst index 11ca3076501..2c1b9e30e0f 100644 --- a/classes/class_@globalscope.rst +++ b/classes/class_@globalscope.rst @@ -5416,7 +5416,7 @@ Decodes a byte array back to a :ref:`Variant` value. Decoding obj :ref:`Variant` **ceil** **(** :ref:`Variant` x **)** -Rounds ``x`` upward (towards positive infinity), returning the smallest whole number that is not less than ``x``. Supported types: :ref:`int`, :ref:`float`, :ref:`Vector2`, :ref:`Vector3`, :ref:`Vector4`. +Rounds ``x`` upward (towards positive infinity), returning the smallest whole number that is not less than ``x``. Supported types: :ref:`int`, :ref:`float`, :ref:`Vector2`, :ref:`Vector2i`, :ref:`Vector3`, :ref:`Vector3i`, :ref:`Vector4`, :ref:`Vector4i`. :: @@ -5718,7 +5718,7 @@ For exponents to other bases use the method :ref:`pow` **floor** **(** :ref:`Variant` x **)** -Rounds ``x`` downward (towards negative infinity), returning the largest whole number that is not more than ``x``. Supported types: :ref:`int`, :ref:`float`, :ref:`Vector2`, :ref:`Vector3`, :ref:`Vector4`. +Rounds ``x`` downward (towards negative infinity), returning the largest whole number that is not more than ``x``. Supported types: :ref:`int`, :ref:`float`, :ref:`Vector2`, :ref:`Vector2i`, :ref:`Vector3`, :ref:`Vector3i`, :ref:`Vector4`, :ref:`Vector4i`. :: @@ -6825,7 +6825,7 @@ If ``delta`` is negative, this function will rotate away from ``to``, toward the :ref:`Variant` **round** **(** :ref:`Variant` x **)** -Rounds ``x`` to the nearest whole number, with halfway cases rounded away from 0. Supported types: :ref:`int`, :ref:`float`, :ref:`Vector2`, :ref:`Vector3`, :ref:`Vector4`. +Rounds ``x`` to the nearest whole number, with halfway cases rounded away from 0. Supported types: :ref:`int`, :ref:`float`, :ref:`Vector2`, :ref:`Vector2i`, :ref:`Vector3`, :ref:`Vector3i`, :ref:`Vector4`, :ref:`Vector4i`. :: diff --git a/classes/class_aabb.rst b/classes/class_aabb.rst index 2b0a60ea6b6..113d74bdf4e 100644 --- a/classes/class_aabb.rst +++ b/classes/class_aabb.rst @@ -585,7 +585,11 @@ Returns ``true`` if the AABBs are not equal. :ref:`AABB` **operator *** **(** :ref:`Transform3D` right **)** -Inversely transforms (multiplies) the **AABB** by the given :ref:`Transform3D` transformation matrix. +Inversely transforms (multiplies) the **AABB** by the given :ref:`Transform3D` transformation matrix, under the assumption that the transformation basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). + +\ ``aabb * transform`` is equivalent to ``transform.inverse() * aabb``. See :ref:`Transform3D.inverse`. + +For transforming by inverse of an affine transformation (e.g. with scaling) ``transform.affine_inverse() * aabb`` can be used instead. See :ref:`Transform3D.affine_inverse`. .. rst-class:: classref-item-separator diff --git a/classes/class_button.rst b/classes/class_button.rst index 6016f5afe1b..5fed12417f8 100644 --- a/classes/class_button.rst +++ b/classes/class_button.rst @@ -598,9 +598,7 @@ Font size of the **Button**'s text. :ref:`Texture2D` **icon** -.. container:: contribute - - There is currently no description for this theme property. Please help us by :ref:`contributing one `! +Default icon for the **Button**. Appears only if :ref:`icon` is not assigned. .. rst-class:: classref-item-separator diff --git a/classes/class_graphedit.rst b/classes/class_graphedit.rst index 1a5b4b78488..325cd0d3184 100644 --- a/classes/class_graphedit.rst +++ b/classes/class_graphedit.rst @@ -1100,7 +1100,7 @@ Disallows to disconnect nodes when dragging from the right port of the :ref:`Gra void **set_connection_activity** **(** :ref:`StringName` from_node, :ref:`int` from_port, :ref:`StringName` to_node, :ref:`int` to_port, :ref:`float` amount **)** -Sets the coloration of the connection between ``from_node``'s ``from_port`` and ``to_node``'s ``to_port`` with the color provided in the :ref:`activity` theme property. +Sets the coloration of the connection between ``from_node``'s ``from_port`` and ``to_node``'s ``to_port`` with the color provided in the :ref:`activity` theme property. The color is linearly interpolated between the connection color and the activity color using ``amount`` as weight. .. rst-class:: classref-item-separator @@ -1129,9 +1129,7 @@ Theme Property Descriptions :ref:`Color` **activity** = ``Color(1, 1, 1, 1)`` -.. container:: contribute - - There is currently no description for this theme property. Please help us by :ref:`contributing one `! +Color of the connection's activity (see :ref:`set_connection_activity`). .. rst-class:: classref-item-separator diff --git a/classes/class_lineedit.rst b/classes/class_lineedit.rst index a3e997b1c4c..1988cc5418e 100644 --- a/classes/class_lineedit.rst +++ b/classes/class_lineedit.rst @@ -998,7 +998,7 @@ If ``true``, every character is replaced with the secret character (see :ref:`se - void **set_secret_character** **(** :ref:`String` value **)** - :ref:`String` **get_secret_character** **(** **)** -The character to use to mask secret input (defaults to "•"). Only a single character can be used as the secret character. +The character to use to mask secret input. Only a single character can be used as the secret character. If it is longer than one character, only the first one will be used. If it is empty, a space will be used instead. .. rst-class:: classref-item-separator diff --git a/classes/class_object.rst b/classes/class_object.rst index a1c25cbbfd8..7688daa326d 100644 --- a/classes/class_object.rst +++ b/classes/class_object.rst @@ -21,7 +21,7 @@ Description An advanced :ref:`Variant` type. All classes in the engine inherit from Object. Each class may define new properties, methods or signals, which are available to all inheriting classes. For example, a :ref:`Sprite2D` instance is able to call :ref:`Node.add_child` because it inherits from :ref:`Node`. -You can create new instances, using ``Object.new()`` in GDScript, or ``new Object`` in C#. +You can create new instances, using ``Object.new()`` in GDScript, or ``new GodotObject`` in C#. To delete an Object instance, call :ref:`free`. This is necessary for most classes inheriting Object, because they do not manage memory on their own, and will otherwise cause memory leaks when no longer in use. There are a few classes that perform memory management. For example, :ref:`RefCounted` (and by extension :ref:`Resource`) deletes itself when no longer referenced, and :ref:`Node` deletes its children when freed. @@ -449,7 +449,7 @@ The example below displays ``hammer_type`` in the Inspector dock, only if ``hold void **_init** **(** **)** |virtual| -Called when the object's script is instantiated, oftentimes after the object is initialized in memory (through ``Object.new()`` in GDScript, or ``new Object`` in C#). It can be also defined to take in parameters. This method is similar to a constructor in most programming languages. +Called when the object's script is instantiated, oftentimes after the object is initialized in memory (through ``Object.new()`` in GDScript, or ``new GodotObject`` in C#). It can be also defined to take in parameters. This method is similar to a constructor in most programming languages. \ **Note:** If :ref:`_init` is defined with *required* parameters, the Object with script may only be created directly. If any other means (such as :ref:`PackedScene.instantiate` or :ref:`Node.duplicate`) are used, the script's initialization will fail. @@ -542,6 +542,7 @@ Combined with :ref:`_get` and :ref:`_get_property_list # Storing the value in the fake property. internal_data["fake_property"] = value return true + return false func _get_property_list(): return [ @@ -552,7 +553,7 @@ Combined with :ref:`_get` and :ref:`_get_property_list private Godot.Collections.Dictionary _internalData = new Godot.Collections.Dictionary(); - public override void _Set(StringName property, Variant value) + public override bool _Set(StringName property, Variant value) { if (property == "FakeProperty") { diff --git a/classes/class_packedvector2array.rst b/classes/class_packedvector2array.rst index 35874ee6c2f..d41288c9db4 100644 --- a/classes/class_packedvector2array.rst +++ b/classes/class_packedvector2array.rst @@ -463,7 +463,11 @@ Returns ``true`` if contents of the arrays differ. :ref:`PackedVector2Array` **operator *** **(** :ref:`Transform2D` right **)** -Transforms (multiplies) all vectors in the array by the :ref:`Transform2D` matrix. +Returns a new **PackedVector2Array** with all vectors in this array inversely transformed (multiplied) by the given :ref:`Transform2D` transformation matrix, under the assumption that the transformation basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). + +\ ``array * transform`` is equivalent to ``transform.inverse() * array``. See :ref:`Transform2D.inverse`. + +For transforming by inverse of an affine transformation (e.g. with scaling) ``transform.affine_inverse() * array`` can be used instead. See :ref:`Transform2D.affine_inverse`. .. rst-class:: classref-item-separator diff --git a/classes/class_packedvector3array.rst b/classes/class_packedvector3array.rst index e6072f8f31a..98bc0ead1d4 100644 --- a/classes/class_packedvector3array.rst +++ b/classes/class_packedvector3array.rst @@ -456,7 +456,11 @@ Returns ``true`` if contents of the arrays differ. :ref:`PackedVector3Array` **operator *** **(** :ref:`Transform3D` right **)** -Transforms (multiplies) all vectors in the array by the :ref:`Transform3D` matrix. +Returns a new **PackedVector3Array** with all vectors in this array inversely transformed (multiplied) by the given :ref:`Transform3D` transformation matrix, under the assumption that the transformation basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). + +\ ``array * transform`` is equivalent to ``transform.inverse() * array``. See :ref:`Transform3D.inverse`. + +For transforming by inverse of an affine transformation (e.g. with scaling) ``transform.affine_inverse() * array`` can be used instead. See :ref:`Transform3D.affine_inverse`. .. rst-class:: classref-item-separator diff --git a/classes/class_plane.rst b/classes/class_plane.rst index 170d3ec128a..30c2675f7ed 100644 --- a/classes/class_plane.rst +++ b/classes/class_plane.rst @@ -475,6 +475,8 @@ Returns ``true`` if the planes are not equal. Inversely transforms (multiplies) the **Plane** by the given :ref:`Transform3D` transformation matrix. +\ ``plane * transform`` is equivalent to ``transform.affine_inverse() * plane``. See :ref:`Transform3D.affine_inverse`. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_projectsettings.rst b/classes/class_projectsettings.rst index 47b3ed2d3bd..eb52bad5aa1 100644 --- a/classes/class_projectsettings.rst +++ b/classes/class_projectsettings.rst @@ -129,6 +129,10 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`audio/general/3d_panning_strength` | ``0.5`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`audio/general/ios/mix_with_others` | ``false`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`audio/general/ios/session_category` | ``0`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`audio/general/text_to_speech` | ``false`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`audio/video/video_delay_compensation_ms` | ``0`` | @@ -2184,6 +2188,32 @@ The default value of ``0.5`` is tuned for headphones. When using speakers, you m ---- +.. _class_ProjectSettings_property_audio/general/ios/mix_with_others: + +.. rst-class:: classref-property + +:ref:`bool` **audio/general/ios/mix_with_others** = ``false`` + +Sets the `mixWithOthers `__ option for the AVAudioSession on iOS. This will override the mix behavior, if the category is set to ``Play and Record``, ``Playback``, or ``Multi Route``. + +\ ``Ambient`` always has this set per default. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_audio/general/ios/session_category: + +.. rst-class:: classref-property + +:ref:`int` **audio/general/ios/session_category** = ``0`` + +Sets the `AVAudioSessionCategory `__ on iOS. Use the ``Playback`` category to get sound output, even if the phone is in silent mode. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_audio/general/text_to_speech: .. rst-class:: classref-property diff --git a/classes/class_rect2.rst b/classes/class_rect2.rst index 2892e043973..82e576031db 100644 --- a/classes/class_rect2.rst +++ b/classes/class_rect2.rst @@ -520,7 +520,11 @@ Returns ``true`` if the :ref:`position` or :ref:` :ref:`Rect2` **operator *** **(** :ref:`Transform2D` right **)** -Inversely transforms (multiplies) the **Rect2** by the given :ref:`Transform2D` transformation matrix. +Inversely transforms (multiplies) the **Rect2** by the given :ref:`Transform2D` transformation matrix, under the assumption that the transformation basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). + +\ ``rect * transform`` is equivalent to ``transform.inverse() * rect``. See :ref:`Transform2D.inverse`. + +For transforming by inverse of an affine transformation (e.g. with scaling) ``transform.affine_inverse() * rect`` can be used instead. See :ref:`Transform2D.affine_inverse`. .. rst-class:: classref-item-separator diff --git a/classes/class_scrollbar.rst b/classes/class_scrollbar.rst index f6a7327bb66..30acc393f6c 100644 --- a/classes/class_scrollbar.rst +++ b/classes/class_scrollbar.rst @@ -64,8 +64,6 @@ Theme Properties +-----------------------------------+----------------------------------------------------------------------------+ | :ref:`StyleBox` | :ref:`grabber_pressed` | +-----------------------------------+----------------------------------------------------------------------------+ - | :ref:`StyleBox` | :ref:`hscroll` | - +-----------------------------------+----------------------------------------------------------------------------+ | :ref:`StyleBox` | :ref:`scroll` | +-----------------------------------+----------------------------------------------------------------------------+ | :ref:`StyleBox` | :ref:`scroll_focus` | @@ -227,20 +225,6 @@ Used when the grabber is being dragged. ---- -.. _class_ScrollBar_theme_style_hscroll: - -.. rst-class:: classref-themeproperty - -:ref:`StyleBox` **hscroll** - -.. container:: contribute - - There is currently no description for this theme property. Please help us by :ref:`contributing one `! - -.. rst-class:: classref-item-separator - ----- - .. _class_ScrollBar_theme_style_scroll: .. rst-class:: classref-themeproperty diff --git a/classes/class_transform2d.rst b/classes/class_transform2d.rst index 56c73be75db..cc9eb73dccc 100644 --- a/classes/class_transform2d.rst +++ b/classes/class_transform2d.rst @@ -300,7 +300,7 @@ Method Descriptions :ref:`Transform2D` **affine_inverse** **(** **)** |const| -Returns the inverse of the transform, under the assumption that the transformation is composed of rotation, scaling and translation. +Returns the inverse of the transform, under the assumption that the basis is invertible (must have non-zero determinant). .. rst-class:: classref-item-separator @@ -314,7 +314,7 @@ Returns the inverse of the transform, under the assumption that the transformati Returns a vector transformed (multiplied) by the basis matrix. -This method does not account for translation (the origin vector). +This method does not account for translation (the :ref:`origin` vector). .. rst-class:: classref-item-separator @@ -326,9 +326,13 @@ This method does not account for translation (the origin vector). :ref:`Vector2` **basis_xform_inv** **(** :ref:`Vector2` v **)** |const| -Returns a vector transformed (multiplied) by the inverse basis matrix. +Returns a vector transformed (multiplied) by the inverse basis matrix, under the assumption that the basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). -This method does not account for translation (the origin vector). +This method does not account for translation (the :ref:`origin` vector). + +\ ``transform.basis_xform_inv(vector)`` is equivalent to ``transform.inverse().basis_xform(vector)``. See :ref:`inverse`. + +For non-orthonormal transforms (e.g. with scaling) ``transform.affine_inverse().basis_xform(vector)`` can be used instead. See :ref:`affine_inverse`. .. rst-class:: classref-item-separator @@ -414,7 +418,7 @@ Returns a transform interpolated between this transform and another by a given ` :ref:`Transform2D` **inverse** **(** **)** |const| -Returns the inverse of the transform, under the assumption that the transformation is composed of rotation and translation (no scaling, use :ref:`affine_inverse` for transforms with scaling). +Returns the inverse of the transform, under the assumption that the transformation basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). Use :ref:`affine_inverse` for non-orthonormal transforms (e.g. with scaling). .. rst-class:: classref-item-separator @@ -651,7 +655,7 @@ Transforms (multiplies) the :ref:`Vector2` by the given **Transfo :ref:`Transform2D` **operator *** **(** :ref:`float` right **)** -This operator multiplies all components of the **Transform2D**, including the origin vector, which scales it uniformly. +This operator multiplies all components of the **Transform2D**, including the :ref:`origin` vector, which scales it uniformly. .. rst-class:: classref-item-separator @@ -663,7 +667,7 @@ This operator multiplies all components of the **Transform2D**, including the or :ref:`Transform2D` **operator *** **(** :ref:`int` right **)** -This operator multiplies all components of the **Transform2D**, including the origin vector, which scales it uniformly. +This operator multiplies all components of the **Transform2D**, including the :ref:`origin` vector, which scales it uniformly. .. rst-class:: classref-item-separator diff --git a/classes/class_transform3d.rst b/classes/class_transform3d.rst index 0e3b350a94d..68eb7cf7079 100644 --- a/classes/class_transform3d.rst +++ b/classes/class_transform3d.rst @@ -282,7 +282,7 @@ Method Descriptions :ref:`Transform3D` **affine_inverse** **(** **)** |const| -Returns the inverse of the transform, under the assumption that the transformation is composed of rotation, scaling and translation. +Returns the inverse of the transform, under the assumption that the basis is invertible (must have non-zero determinant). .. rst-class:: classref-item-separator @@ -306,7 +306,7 @@ Returns a transform interpolated between this transform and another by a given ` :ref:`Transform3D` **inverse** **(** **)** |const| -Returns the inverse of the transform, under the assumption that the transformation is composed of rotation and translation (no scaling, use :ref:`affine_inverse` for transforms with scaling). +Returns the inverse of the transform, under the assumption that the transformation basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). Use :ref:`affine_inverse` for non-orthonormal transforms (e.g. with scaling). .. rst-class:: classref-item-separator @@ -549,7 +549,7 @@ Transforms (multiplies) the :ref:`Vector3` by the given **Transfo :ref:`Transform3D` **operator *** **(** :ref:`float` right **)** -This operator multiplies all components of the **Transform3D**, including the origin vector, which scales it uniformly. +This operator multiplies all components of the **Transform3D**, including the :ref:`origin` vector, which scales it uniformly. .. rst-class:: classref-item-separator @@ -561,7 +561,7 @@ This operator multiplies all components of the **Transform3D**, including the or :ref:`Transform3D` **operator *** **(** :ref:`int` right **)** -This operator multiplies all components of the **Transform3D**, including the origin vector, which scales it uniformly. +This operator multiplies all components of the **Transform3D**, including the :ref:`origin` vector, which scales it uniformly. .. rst-class:: classref-item-separator diff --git a/classes/class_vector2.rst b/classes/class_vector2.rst index 5f387648ef1..f3c098c8578 100644 --- a/classes/class_vector2.rst +++ b/classes/class_vector2.rst @@ -951,7 +951,11 @@ Returns ``true`` if the vectors are not equal. :ref:`Vector2` **operator *** **(** :ref:`Transform2D` right **)** -Inversely transforms (multiplies) the **Vector2** by the given :ref:`Transform2D` transformation matrix. +Inversely transforms (multiplies) the **Vector2** by the given :ref:`Transform2D` transformation matrix, under the assumption that the transformation basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). + +\ ``vector * transform`` is equivalent to ``transform.inverse() * vector``. See :ref:`Transform2D.inverse`. + +For transforming by inverse of an affine transformation (e.g. with scaling) ``transform.affine_inverse() * vector`` can be used instead. See :ref:`Transform2D.affine_inverse`. .. rst-class:: classref-item-separator diff --git a/classes/class_vector3.rst b/classes/class_vector3.rst index 73ba23f1588..39304e75695 100644 --- a/classes/class_vector3.rst +++ b/classes/class_vector3.rst @@ -1023,7 +1023,11 @@ Returns ``true`` if the vectors are not equal. :ref:`Vector3` **operator *** **(** :ref:`Basis` right **)** -Inversely transforms (multiplies) the **Vector3** by the given :ref:`Basis` matrix. +Inversely transforms (multiplies) the **Vector3** by the given :ref:`Basis` matrix, under the assumption that the basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). + +\ ``vector * basis`` is equivalent to ``basis.transposed() * vector``. See :ref:`Basis.transposed`. + +For transforming by inverse of a non-orthonormal basis (e.g. with scaling) ``basis.inverse() * vector`` can be used instead. See :ref:`Basis.inverse`. .. rst-class:: classref-item-separator @@ -1037,6 +1041,8 @@ Inversely transforms (multiplies) the **Vector3** by the given :ref:`Basis`. +\ ``vector * quaternion`` is equivalent to ``quaternion.inverse() * vector``. See :ref:`Quaternion.inverse`. + .. rst-class:: classref-item-separator ---- @@ -1047,7 +1053,11 @@ Inversely transforms (multiplies) the **Vector3** by the given :ref:`Quaternion< :ref:`Vector3` **operator *** **(** :ref:`Transform3D` right **)** -Inversely transforms (multiplies) the **Vector3** by the given :ref:`Transform3D` transformation matrix. +Inversely transforms (multiplies) the **Vector3** by the given :ref:`Transform3D` transformation matrix, under the assumption that the transformation basis is orthonormal (i.e. rotation/reflection is fine, scaling/skew is not). + +\ ``vector * transform`` is equivalent to ``transform.inverse() * vector``. See :ref:`Transform3D.inverse`. + +For transforming by inverse of an affine transformation (e.g. with scaling) ``transform.affine_inverse() * vector`` can be used instead. See :ref:`Transform3D.affine_inverse`. .. rst-class:: classref-item-separator diff --git a/classes/class_vector4.rst b/classes/class_vector4.rst index 8866fc051a7..42f97b0b1b6 100644 --- a/classes/class_vector4.rst +++ b/classes/class_vector4.rst @@ -692,7 +692,9 @@ Returns ``true`` if the vectors are not equal. :ref:`Vector4` **operator *** **(** :ref:`Projection` right **)** -Inversely transforms (multiplies) the **Vector4** by the given :ref:`Projection` matrix. +Transforms (multiplies) the **Vector4** by the transpose of the given :ref:`Projection` matrix. + +For transforming by inverse of a projection ``projection.inverse() * vector`` can be used instead. See :ref:`Projection.inverse`. .. rst-class:: classref-item-separator diff --git a/classes/class_visibleonscreenenabler2d.rst b/classes/class_visibleonscreenenabler2d.rst index e6cf8369433..0b7e6354225 100644 --- a/classes/class_visibleonscreenenabler2d.rst +++ b/classes/class_visibleonscreenenabler2d.rst @@ -12,14 +12,18 @@ VisibleOnScreenEnabler2D **Inherits:** :ref:`VisibleOnScreenNotifier2D` **<** :ref:`Node2D` **<** :ref:`CanvasItem` **<** :ref:`Node` **<** :ref:`Object` -Automatically disables another node if not visible on screen. +A rectangular region of 2D space that, when visible on screen, enables a target node. .. rst-class:: classref-introduction-group Description ----------- -VisibleOnScreenEnabler2D detects when it is visible on screen (just like :ref:`VisibleOnScreenNotifier2D`) and automatically enables or disables the target node. The target node is disabled when **VisibleOnScreenEnabler2D** is not visible on screen (including when :ref:`CanvasItem.visible` is ``false``), and enabled when the enabler is visible. The disabling is achieved by changing :ref:`Node.process_mode`. +**VisibleOnScreenEnabler2D** contains a rectangular region of 2D space and a target node. The target node will be automatically enabled (via its :ref:`Node.process_mode` property) when any part of this region becomes visible on the screen, and automatically disabled otherwise. This can for example be used to activate enemies only when the player approaches them. + +See :ref:`VisibleOnScreenNotifier2D` if you only want to be notified when the region is visible on screen. + +\ **Note:** **VisibleOnScreenEnabler2D** uses the render culling code to determine whether it's visible on screen, so it won't function unless :ref:`CanvasItem.visible` is set to ``true``. .. rst-class:: classref-reftable-group @@ -94,7 +98,7 @@ Property Descriptions - void **set_enable_mode** **(** :ref:`EnableMode` value **)** - :ref:`EnableMode` **get_enable_mode** **(** **)** -Determines how the node is enabled. Corresponds to :ref:`ProcessMode`. Disabled node uses :ref:`Node.PROCESS_MODE_DISABLED`. +Determines how the target node is enabled. Corresponds to :ref:`ProcessMode`. When the node is disabled, it always uses :ref:`Node.PROCESS_MODE_DISABLED`. .. rst-class:: classref-item-separator @@ -111,7 +115,7 @@ Determines how the node is enabled. Corresponds to :ref:`ProcessMode` value **)** - :ref:`NodePath` **get_enable_node_path** **(** **)** -The path to the target node, relative to the **VisibleOnScreenEnabler2D**. The target node is cached; it's only assigned when setting this property (if the **VisibleOnScreenEnabler2D** is inside scene tree) and every time the **VisibleOnScreenEnabler2D** enters the scene tree. If the path is invalid, nothing will happen. +The path to the target node, relative to the **VisibleOnScreenEnabler2D**. The target node is cached; it's only assigned when setting this property (if the **VisibleOnScreenEnabler2D** is inside the scene tree) and every time the **VisibleOnScreenEnabler2D** enters the scene tree. If the path is invalid, an error will be printed in the editor and no node will be affected. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` diff --git a/classes/class_visibleonscreenenabler3d.rst b/classes/class_visibleonscreenenabler3d.rst index 814b032390a..a10caf07f74 100644 --- a/classes/class_visibleonscreenenabler3d.rst +++ b/classes/class_visibleonscreenenabler3d.rst @@ -12,20 +12,18 @@ VisibleOnScreenEnabler3D **Inherits:** :ref:`VisibleOnScreenNotifier3D` **<** :ref:`VisualInstance3D` **<** :ref:`Node3D` **<** :ref:`Node` **<** :ref:`Object` -Enables certain nodes only when approximately visible. +A box-shaped region of 3D space that, when visible on screen, enables a target node. .. rst-class:: classref-introduction-group Description ----------- -The VisibleOnScreenEnabler3D will disable :ref:`RigidBody3D` and :ref:`AnimationPlayer` nodes when they are not visible. It will only affect other nodes within the same scene as the VisibleOnScreenEnabler3D itself. +**VisibleOnScreenEnabler3D** contains a box-shaped region of 3D space and a target node. The target node will be automatically enabled (via its :ref:`Node.process_mode` property) when any part of this region becomes visible on the screen, and automatically disabled otherwise. This can for example be used to activate enemies only when the player approaches them. -If you just want to receive notifications, use :ref:`VisibleOnScreenNotifier3D` instead. +See :ref:`VisibleOnScreenNotifier3D` if you only want to be notified when the region is visible on screen. -\ **Note:** VisibleOnScreenEnabler3D uses an approximate heuristic for performance reasons. It doesn't take walls and other occlusion into account. The heuristic is an implementation detail and may change in future versions. If you need precise visibility checking, use another method such as adding an :ref:`Area3D` node as a child of a :ref:`Camera3D` node and/or :ref:`Vector3.dot`. - -\ **Note:** VisibleOnScreenEnabler3D will not affect nodes added after scene initialization. +\ **Note:** **VisibleOnScreenEnabler3D** uses an approximate heuristic that doesn't take walls and other occlusion into account, unless occlusion culling is used. It also won't function unless :ref:`Node3D.visible` is set to ``true``. .. rst-class:: classref-reftable-group @@ -62,7 +60,7 @@ enum **EnableMode**: :ref:`EnableMode` **ENABLE_MODE_INHERIT** = ``0`` - +Corresponds to :ref:`Node.PROCESS_MODE_INHERIT`. .. _class_VisibleOnScreenEnabler3D_constant_ENABLE_MODE_ALWAYS: @@ -70,7 +68,7 @@ enum **EnableMode**: :ref:`EnableMode` **ENABLE_MODE_ALWAYS** = ``1`` - +Corresponds to :ref:`Node.PROCESS_MODE_ALWAYS`. .. _class_VisibleOnScreenEnabler3D_constant_ENABLE_MODE_WHEN_PAUSED: @@ -78,7 +76,7 @@ enum **EnableMode**: :ref:`EnableMode` **ENABLE_MODE_WHEN_PAUSED** = ``2`` - +Corresponds to :ref:`Node.PROCESS_MODE_WHEN_PAUSED`. .. rst-class:: classref-section-separator @@ -100,9 +98,7 @@ Property Descriptions - void **set_enable_mode** **(** :ref:`EnableMode` value **)** - :ref:`EnableMode` **get_enable_mode** **(** **)** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one `! +Determines how the target node is enabled. Corresponds to :ref:`ProcessMode`. When the node is disabled, it always uses :ref:`Node.PROCESS_MODE_DISABLED`. .. rst-class:: classref-item-separator @@ -119,9 +115,7 @@ Property Descriptions - void **set_enable_node_path** **(** :ref:`NodePath` value **)** - :ref:`NodePath` **get_enable_node_path** **(** **)** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one `! +The path to the target node, relative to the **VisibleOnScreenEnabler3D**. The target node is cached; it's only assigned when setting this property (if the **VisibleOnScreenEnabler3D** is inside the scene tree) and every time the **VisibleOnScreenEnabler3D** enters the scene tree. If the path is invalid, an error will be printed in the editor and no node will be affected. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` diff --git a/classes/class_visibleonscreennotifier2d.rst b/classes/class_visibleonscreennotifier2d.rst index e51e708ff18..70fae8f0206 100644 --- a/classes/class_visibleonscreennotifier2d.rst +++ b/classes/class_visibleonscreennotifier2d.rst @@ -14,18 +14,18 @@ VisibleOnScreenNotifier2D **Inherited By:** :ref:`VisibleOnScreenEnabler2D` -Detects when the node extents are visible on screen. +A rectangular region of 2D space that detects whether it is visible on screen. .. rst-class:: classref-introduction-group Description ----------- -The VisibleOnScreenNotifier2D detects when it is visible on the screen. It also notifies when its bounding rectangle enters or exits the screen or a viewport. +:ref:`VisibleOnScreenEnabler2D` represents a rectangular region of 2D space. When any part of this region becomes visible on screen or in a viewport, it will emit a :ref:`screen_entered` signal, and likewise it will emit a :ref:`screen_exited` signal when no part of it remains visible. -If you want nodes to be disabled automatically when they exit the screen, use :ref:`VisibleOnScreenEnabler2D` instead. +If you want a node to be enabled automatically when this region is visible on screen, use :ref:`VisibleOnScreenEnabler2D`. -\ **Note:** VisibleOnScreenNotifier2D uses the render culling code to determine whether it's visible on screen, which also means that its :ref:`CanvasItem.visible` must be ``true`` to work correctly. +\ **Note:** **VisibleOnScreenNotifier2D** uses the render culling code to determine whether it's visible on screen, so it won't function unless :ref:`CanvasItem.visible` is set to ``true``. .. rst-class:: classref-introduction-group @@ -126,7 +126,7 @@ Method Descriptions If ``true``, the bounding rectangle is on the screen. -\ **Note:** It takes one frame for the node's visibility to be assessed once added to the scene tree, so this method will return ``false`` right after it is instantiated, even if it will be on screen in the draw pass. +\ **Note:** It takes one frame for the **VisibleOnScreenNotifier2D**'s visibility to be determined once added to the scene tree, so this method will always return ``false`` right after it is instantiated, before the draw pass. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` diff --git a/classes/class_visibleonscreennotifier3d.rst b/classes/class_visibleonscreennotifier3d.rst index 419d2b22306..529fba91d90 100644 --- a/classes/class_visibleonscreennotifier3d.rst +++ b/classes/class_visibleonscreennotifier3d.rst @@ -14,18 +14,18 @@ VisibleOnScreenNotifier3D **Inherited By:** :ref:`VisibleOnScreenEnabler3D` -Detects approximately when the node is visible on screen. +A box-shaped region of 3D space that detects whether it is visible on screen. .. rst-class:: classref-introduction-group Description ----------- -The VisibleOnScreenNotifier3D detects when it is visible on the screen. It also notifies when its bounding rectangle enters or exits the screen or a :ref:`Camera3D`'s view. +:ref:`VisibleOnScreenEnabler3D` represents a box-shaped region of 3D space. When any part of this region becomes visible on screen or in a :ref:`Camera3D`'s view, it will emit a :ref:`screen_entered` signal, and likewise it will emit a :ref:`screen_exited` signal when no part of it remains visible. -If you want nodes to be disabled automatically when they exit the screen, use :ref:`VisibleOnScreenEnabler3D` instead. +If you want a node to be enabled automatically when this region is visible on screen, use :ref:`VisibleOnScreenEnabler3D`. -\ **Note:** VisibleOnScreenNotifier3D uses the render culling code to determine whether it's visible on screen, which also means that its :ref:`Node3D.visible` must be ``true`` to work correctly. +\ **Note:** **VisibleOnScreenNotifier3D** uses an approximate heuristic that doesn't take walls and other occlusion into account, unless occlusion culling is used. It also won't function unless :ref:`Node3D.visible` is set to ``true``. .. rst-class:: classref-reftable-group @@ -66,7 +66,7 @@ Signals **screen_entered** **(** **)** -Emitted when the VisibleOnScreenNotifier3D enters the screen. +Emitted when the **VisibleOnScreenNotifier3D** enters the screen. .. rst-class:: classref-item-separator @@ -78,7 +78,7 @@ Emitted when the VisibleOnScreenNotifier3D enters the screen. **screen_exited** **(** **)** -Emitted when the VisibleOnScreenNotifier3D exits the screen. +Emitted when the **VisibleOnScreenNotifier3D** exits the screen. .. rst-class:: classref-section-separator @@ -100,7 +100,7 @@ Property Descriptions - void **set_aabb** **(** :ref:`AABB` value **)** - :ref:`AABB` **get_aabb** **(** **)** -The VisibleOnScreenNotifier3D's bounding box. +The **VisibleOnScreenNotifier3D**'s bounding box. .. rst-class:: classref-section-separator @@ -117,9 +117,9 @@ Method Descriptions :ref:`bool` **is_on_screen** **(** **)** |const| -If ``true``, the bounding box is on the screen. +Returns ``true`` if the bounding box is on the screen. -\ **Note:** It takes one frame for the node's visibility to be assessed once added to the scene tree, so this method will return ``false`` right after it is instantiated, even if it will be on screen in the draw pass. +\ **Note:** It takes one frame for the **VisibleOnScreenNotifier3D**'s visibility to be assessed once added to the scene tree, so this method will always return ``false`` right after it is instantiated. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`