diff --git a/classes/class_@gdscript.rst b/classes/class_@gdscript.rst index 6562dec75..027ed5b51 100644 --- a/classes/class_@gdscript.rst +++ b/classes/class_@gdscript.rst @@ -696,6 +696,10 @@ The order of ``mode``, ``sync`` and ``transfer_mode`` does not matter, but value Make a script with static variables to not persist after all references are lost. If the script is loaded again the static variables will revert to their default values. +\ **Note:** As annotations describe their subject, the :ref:`@static_unload` annotation must be placed before the class definition and inheritance. + +\ **Warning:** Currently, due to a bug, scripts are never freed, even if :ref:`@static_unload` annotation is used. + .. rst-class:: classref-item-separator ---- @@ -785,6 +789,8 @@ An optional ``message`` can be shown in addition to the generic "Assertion faile assert(speed >= 0 and speed < 20) # You can also combine the two conditional statements in one check. assert(speed < 20, "the speed limit is 20") # Show a message. +\ **Note:** :ref:`assert` is a keyword, not a function. So you cannot access it as a :ref:`Callable` or use it inside expressions. + .. rst-class:: classref-item-separator ---- @@ -916,7 +922,7 @@ Returns ``true`` if ``value`` is an instance of ``type``. The ``type`` value mus - A :ref:`Script` (you can use any class, including inner one). -Unlike the right operand of the ``is`` operator, ``type`` can be a non-constant value. The ``is`` operator supports more features (such as typed arrays) and is more performant. Use the operator instead of this method if you do not need dynamic type checking. +Unlike the right operand of the ``is`` operator, ``type`` can be a non-constant value. The ``is`` operator supports more features (such as typed arrays). Use the operator instead of this method if you do not need dynamic type checking. Examples: @@ -970,7 +976,7 @@ Returns a :ref:`Resource` from the filesystem located at the abs # Load a scene called "main" located in the root of the project directory and cache it in a variable. var main = load("res://main.tscn") # main will contain a PackedScene resource. -\ **Important:** The path must be absolute. A relative path will always return ``null``. +\ **Important:** Relative paths are *not* relative to the script calling this method, instead it is prefixed with ``"res://"``. Loading from relative paths might not work as expected. This function is a simplified version of :ref:`ResourceLoader.load`, which can be used for more advanced scenarios. @@ -997,6 +1003,8 @@ Returns a :ref:`Resource` from the filesystem located at ``path` # Create instance of a scene. var diamond = preload("res://diamond.tscn").instantiate() +\ **Note:** :ref:`preload` is a keyword, not a function. So you cannot access it as a :ref:`Callable`. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_@globalscope.rst b/classes/class_@globalscope.rst index 62e49e08b..a0b27606f 100644 --- a/classes/class_@globalscope.rst +++ b/classes/class_@globalscope.rst @@ -1679,6 +1679,38 @@ Launch Shortcut E key. Launch Shortcut F key. +.. _class_@GlobalScope_constant_KEY_GLOBE: + +.. rst-class:: classref-enumeration-constant + +:ref:`Key` **KEY_GLOBE** = ``4194416`` + +"Globe" key on Mac / iPad keyboard. + +.. _class_@GlobalScope_constant_KEY_KEYBOARD: + +.. rst-class:: classref-enumeration-constant + +:ref:`Key` **KEY_KEYBOARD** = ``4194417`` + +"On-screen keyboard" key on iPad keyboard. + +.. _class_@GlobalScope_constant_KEY_JIS_EISU: + +.. rst-class:: classref-enumeration-constant + +:ref:`Key` **KEY_JIS_EISU** = ``4194418`` + +英数 key on Mac keyboard. + +.. _class_@GlobalScope_constant_KEY_JIS_KANA: + +.. rst-class:: classref-enumeration-constant + +:ref:`Key` **KEY_JIS_KANA** = ``4194419`` + +かな key on Mac keyboard. + .. _class_@GlobalScope_constant_KEY_UNKNOWN: .. rst-class:: classref-enumeration-constant @@ -2255,38 +2287,6 @@ Z key. § key. -.. _class_@GlobalScope_constant_KEY_GLOBE: - -.. rst-class:: classref-enumeration-constant - -:ref:`Key` **KEY_GLOBE** = ``4194416`` - -"Globe" key on Mac / iPad keyboard. - -.. _class_@GlobalScope_constant_KEY_KEYBOARD: - -.. rst-class:: classref-enumeration-constant - -:ref:`Key` **KEY_KEYBOARD** = ``4194417`` - -"On-screen keyboard" key iPad keyboard. - -.. _class_@GlobalScope_constant_KEY_JIS_EISU: - -.. rst-class:: classref-enumeration-constant - -:ref:`Key` **KEY_JIS_EISU** = ``4194418`` - -英数 key on Mac keyboard. - -.. _class_@GlobalScope_constant_KEY_JIS_KANA: - -.. rst-class:: classref-enumeration-constant - -:ref:`Key` **KEY_JIS_KANA** = ``4194419`` - -かな key on Mac keyboard. - .. rst-class:: classref-item-separator ---- @@ -2815,7 +2815,7 @@ enum **MIDIMessage**: :ref:`MIDIMessage` **MIDI_MESSAGE_NONE** = ``0`` -Enum value which doesn't correspond to any MIDI message. This is used to initialize :ref:`MIDIMessage` properties with a generic state. +Does not correspond to any MIDI message. This is the default value of :ref:`InputEventMIDI.message`. .. _class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_OFF: @@ -2823,7 +2823,9 @@ Enum value which doesn't correspond to any MIDI message. This is used to initial :ref:`MIDIMessage` **MIDI_MESSAGE_NOTE_OFF** = ``8`` -MIDI note OFF message. Not all MIDI devices send this event; some send :ref:`MIDI_MESSAGE_NOTE_ON` with zero velocity instead. See the documentation of :ref:`InputEventMIDI` for information of how to use MIDI inputs. +MIDI message sent when a note is released. + +\ **Note:** Not all MIDI devices send this message; some may send :ref:`MIDI_MESSAGE_NOTE_ON` with :ref:`InputEventMIDI.velocity` set to ``0``. .. _class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_ON: @@ -2831,7 +2833,7 @@ MIDI note OFF message. Not all MIDI devices send this event; some send :ref:`MID :ref:`MIDIMessage` **MIDI_MESSAGE_NOTE_ON** = ``9`` -MIDI note ON message. Some MIDI devices send this event with velocity zero instead of :ref:`MIDI_MESSAGE_NOTE_OFF`, but implementations vary. See the documentation of :ref:`InputEventMIDI` for information of how to use MIDI inputs. +MIDI message sent when a note is pressed. .. _class_@GlobalScope_constant_MIDI_MESSAGE_AFTERTOUCH: @@ -2839,7 +2841,7 @@ MIDI note ON message. Some MIDI devices send this event with velocity zero inste :ref:`MIDIMessage` **MIDI_MESSAGE_AFTERTOUCH** = ``10`` -MIDI aftertouch message. This message is most often sent by pressing down on the key after it "bottoms out". +MIDI message sent to indicate a change in pressure while a note is being pressed down, also called aftertouch. .. _class_@GlobalScope_constant_MIDI_MESSAGE_CONTROL_CHANGE: @@ -2847,7 +2849,7 @@ MIDI aftertouch message. This message is most often sent by pressing down on the :ref:`MIDIMessage` **MIDI_MESSAGE_CONTROL_CHANGE** = ``11`` -MIDI control change message. This message is sent when a controller value changes. Controllers include devices such as pedals and levers. +MIDI message sent when a controller value changes. In a MIDI device, a controller is any input that doesn't play notes. These may include sliders for volume, balance, and panning, as well as switches and pedals. See the `General MIDI specification `__ for a small list. .. _class_@GlobalScope_constant_MIDI_MESSAGE_PROGRAM_CHANGE: @@ -2855,7 +2857,7 @@ MIDI control change message. This message is sent when a controller value change :ref:`MIDIMessage` **MIDI_MESSAGE_PROGRAM_CHANGE** = ``12`` -MIDI program change message. This message sent when the program patch number changes. +MIDI message sent when the MIDI device changes its current instrument (also called *program* or *preset*). .. _class_@GlobalScope_constant_MIDI_MESSAGE_CHANNEL_PRESSURE: @@ -2863,7 +2865,7 @@ MIDI program change message. This message sent when the program patch number cha :ref:`MIDIMessage` **MIDI_MESSAGE_CHANNEL_PRESSURE** = ``13`` -MIDI channel pressure message. This message is most often sent by pressing down on the key after it "bottoms out". This message is different from polyphonic after-touch as it indicates the highest pressure across all keys. +MIDI message sent to indicate a change in pressure for the whole channel. Some MIDI devices may send this instead of :ref:`MIDI_MESSAGE_AFTERTOUCH`. .. _class_@GlobalScope_constant_MIDI_MESSAGE_PITCH_BEND: @@ -2871,7 +2873,7 @@ MIDI channel pressure message. This message is most often sent by pressing down :ref:`MIDIMessage` **MIDI_MESSAGE_PITCH_BEND** = ``14`` -MIDI pitch bend message. This message is sent to indicate a change in the pitch bender (wheel or lever, typically). +MIDI message sent when the value of the pitch bender changes, usually a wheel on the MIDI device. .. _class_@GlobalScope_constant_MIDI_MESSAGE_SYSTEM_EXCLUSIVE: @@ -2879,7 +2881,9 @@ MIDI pitch bend message. This message is sent to indicate a change in the pitch :ref:`MIDIMessage` **MIDI_MESSAGE_SYSTEM_EXCLUSIVE** = ``240`` -MIDI system exclusive message. This has behavior exclusive to the device you're receiving input from. Getting this data is not implemented in Godot. +MIDI system exclusive (SysEx) message. This type of message is not standardized and it's highly dependent on the MIDI device sending it. + +\ **Note:** Getting this message's data from :ref:`InputEventMIDI` is not implemented. .. _class_@GlobalScope_constant_MIDI_MESSAGE_QUARTER_FRAME: @@ -2887,7 +2891,9 @@ MIDI system exclusive message. This has behavior exclusive to the device you're :ref:`MIDIMessage` **MIDI_MESSAGE_QUARTER_FRAME** = ``241`` -MIDI quarter frame message. Contains timing information that is used to synchronize MIDI devices. Getting this data is not implemented in Godot. +MIDI message sent every quarter frame to keep connected MIDI devices synchronized. Related to :ref:`MIDI_MESSAGE_TIMING_CLOCK`. + +\ **Note:** Getting this message's data from :ref:`InputEventMIDI` is not implemented. .. _class_@GlobalScope_constant_MIDI_MESSAGE_SONG_POSITION_POINTER: @@ -2895,7 +2901,9 @@ MIDI quarter frame message. Contains timing information that is used to synchron :ref:`MIDIMessage` **MIDI_MESSAGE_SONG_POSITION_POINTER** = ``242`` -MIDI song position pointer message. Gives the number of 16th notes since the start of the song. Getting this data is not implemented in Godot. +MIDI message sent to jump onto a new position in the current sequence or song. + +\ **Note:** Getting this message's data from :ref:`InputEventMIDI` is not implemented. .. _class_@GlobalScope_constant_MIDI_MESSAGE_SONG_SELECT: @@ -2903,7 +2911,9 @@ MIDI song position pointer message. Gives the number of 16th notes since the sta :ref:`MIDIMessage` **MIDI_MESSAGE_SONG_SELECT** = ``243`` -MIDI song select message. Specifies which sequence or song is to be played. Getting this data is not implemented in Godot. +MIDI message sent to select a sequence or song to play. + +\ **Note:** Getting this message's data from :ref:`InputEventMIDI` is not implemented. .. _class_@GlobalScope_constant_MIDI_MESSAGE_TUNE_REQUEST: @@ -2911,7 +2921,7 @@ MIDI song select message. Specifies which sequence or song is to be played. Gett :ref:`MIDIMessage` **MIDI_MESSAGE_TUNE_REQUEST** = ``246`` -MIDI tune request message. Upon receiving a tune request, all analog synthesizers should tune their oscillators. +MIDI message sent to request a tuning calibration. Used on analog synthesizers. Most modern MIDI devices do not need this message. .. _class_@GlobalScope_constant_MIDI_MESSAGE_TIMING_CLOCK: @@ -2919,7 +2929,7 @@ MIDI tune request message. Upon receiving a tune request, all analog synthesizer :ref:`MIDIMessage` **MIDI_MESSAGE_TIMING_CLOCK** = ``248`` -MIDI timing clock message. Sent 24 times per quarter note when synchronization is required. +MIDI message sent 24 times after :ref:`MIDI_MESSAGE_QUARTER_FRAME`, to keep connected MIDI devices synchronized. .. _class_@GlobalScope_constant_MIDI_MESSAGE_START: @@ -2927,7 +2937,7 @@ MIDI timing clock message. Sent 24 times per quarter note when synchronization i :ref:`MIDIMessage` **MIDI_MESSAGE_START** = ``250`` -MIDI start message. Start the current sequence playing. This message will be followed with Timing Clocks. +MIDI message sent to start the current sequence or song from the beginning. .. _class_@GlobalScope_constant_MIDI_MESSAGE_CONTINUE: @@ -2935,7 +2945,7 @@ MIDI start message. Start the current sequence playing. This message will be fol :ref:`MIDIMessage` **MIDI_MESSAGE_CONTINUE** = ``251`` -MIDI continue message. Continue at the point the sequence was stopped. +MIDI message sent to resume from the point the current sequence or song was paused. .. _class_@GlobalScope_constant_MIDI_MESSAGE_STOP: @@ -2943,7 +2953,7 @@ MIDI continue message. Continue at the point the sequence was stopped. :ref:`MIDIMessage` **MIDI_MESSAGE_STOP** = ``252`` -MIDI stop message. Stop the current sequence. +MIDI message sent to pause the current sequence or song. .. _class_@GlobalScope_constant_MIDI_MESSAGE_ACTIVE_SENSING: @@ -2951,7 +2961,7 @@ MIDI stop message. Stop the current sequence. :ref:`MIDIMessage` **MIDI_MESSAGE_ACTIVE_SENSING** = ``254`` -MIDI active sensing message. This message is intended to be sent repeatedly to tell the receiver that a connection is alive. +MIDI message sent repeatedly while the MIDI device is idle, to tell the receiver that the connection is alive. Most MIDI devices do not send this message. .. _class_@GlobalScope_constant_MIDI_MESSAGE_SYSTEM_RESET: @@ -2959,7 +2969,7 @@ MIDI active sensing message. This message is intended to be sent repeatedly to t :ref:`MIDIMessage` **MIDI_MESSAGE_SYSTEM_RESET** = ``255`` -MIDI system reset message. Reset all receivers in the system to power-up status. It should not be sent on power-up itself. +MIDI message sent to reset a MIDI device to its default state, as if it was just turned on. It should not be sent when the MIDI device is being turned on. .. rst-class:: classref-item-separator @@ -5561,7 +5571,7 @@ Returns an "eased" value of ``x`` based on an easing function defined with ``cur - 1.0: Linear - Greater than 1.0 (exclusive): Ease in -\ `ease() curve values cheatsheet `__\ +\ `ease() curve values cheatsheet `__\ See also :ref:`smoothstep`. If you need to perform more advanced transitions, use :ref:`Tween.interpolate_value`. @@ -6899,7 +6909,7 @@ This S-shaped curve is the cubic Hermite interpolator, given by ``f(y) = 3*y^2 - Compared to :ref:`ease` with a curve value of ``-1.6521``, :ref:`smoothstep` returns the smoothest possible curve with no sudden changes in the derivative. If you need to perform more advanced transitions, use :ref:`Tween` or :ref:`AnimationPlayer`. -\ `Comparison between smoothstep() and ease(x, -1.6521) return values `__ +\ `Comparison between smoothstep() and ease(x, -1.6521) return values `__ .. rst-class:: classref-item-separator diff --git a/classes/class_animation.rst b/classes/class_animation.rst index 30b12671e..bba32e7dd 100644 --- a/classes/class_animation.rst +++ b/classes/class_animation.rst @@ -27,22 +27,24 @@ This resource holds data that can be used to animate anything in the engine. Ani .. code-tab:: gdscript # This creates an animation that makes the node "Enemy" move to the right by - # 100 pixels in 0.5 seconds. + # 100 pixels in 2.0 seconds. var animation = Animation.new() var track_index = animation.add_track(Animation.TYPE_VALUE) animation.track_set_path(track_index, "Enemy:position:x") animation.track_insert_key(track_index, 0.0, 0) - animation.track_insert_key(track_index, 0.5, 100) + animation.track_insert_key(track_index, 2.0, 100) + animation.length = 2.0 .. code-tab:: csharp // This creates an animation that makes the node "Enemy" move to the right by - // 100 pixels in 0.5 seconds. + // 100 pixels in 2.0 seconds. var animation = new Animation(); int trackIndex = animation.AddTrack(Animation.TrackType.Value); animation.TrackSetPath(trackIndex, "Enemy:position:x"); animation.TrackInsertKey(trackIndex, 0.0f, 0); - animation.TrackInsertKey(trackIndex, 0.5f, 100); + animation.TrackInsertKey(trackIndex, 2.0f, 100); + animation.Length = 2.0f; @@ -877,7 +879,7 @@ Compress the animation and all its tracks in-place. This will make :ref:`track_i void **copy_track** **(** :ref:`int` track_idx, :ref:`Animation` to_animation **)** -Adds a new track that is a copy of the given track from ``to_animation``. +Adds a new track to ``to_animation`` that is a copy of the given track from this animation. .. rst-class:: classref-item-separator diff --git a/classes/class_animationnode.rst b/classes/class_animationnode.rst index 4d4ed5fb9..4e0ee450e 100644 --- a/classes/class_animationnode.rst +++ b/classes/class_animationnode.rst @@ -245,7 +245,7 @@ When inheriting from :ref:`AnimationRootNode`, implemen :ref:`Dictionary` **_get_child_nodes** **(** **)** |virtual| |const| -When inheriting from :ref:`AnimationRootNode`, implement this virtual method to return all children animation nodes in order as a ``name: node`` dictionary. +When inheriting from :ref:`AnimationRootNode`, implement this virtual method to return all child animation nodes in order as a ``name: node`` dictionary. .. rst-class:: classref-item-separator @@ -359,7 +359,7 @@ Blend an input. This is only useful for animation nodes created for an :ref:`Ani :ref:`float` **blend_node** **(** :ref:`StringName` name, :ref:`AnimationNode` node, :ref:`float` time, :ref:`bool` seek, :ref:`bool` is_external_seeking, :ref:`float` blend, :ref:`FilterAction` filter=0, :ref:`bool` sync=true, :ref:`bool` test_only=false **)** -Blend another animation node (in case this animation node contains children animation nodes). This function is only useful if you inherit from :ref:`AnimationRootNode` instead, else editors will not display your animation node for addition. +Blend another animation node (in case this animation node contains child animation nodes). This function is only useful if you inherit from :ref:`AnimationRootNode` instead, otherwise editors will not display your animation node for addition. .. rst-class:: classref-item-separator diff --git a/classes/class_animationnodetimescale.rst b/classes/class_animationnodetimescale.rst index 0381a67fb..77df46af1 100644 --- a/classes/class_animationnodetimescale.rst +++ b/classes/class_animationnodetimescale.rst @@ -19,7 +19,7 @@ A time-scaling animation node used in :ref:`AnimationTree`. Description ----------- -Allows to scale the speed of the animation (or reverse it) in any children :ref:`AnimationNode`\ s. Setting it to ``0.0`` will pause the animation. +Allows to scale the speed of the animation (or reverse it) in any child :ref:`AnimationNode`\ s. Setting it to ``0.0`` will pause the animation. .. rst-class:: classref-introduction-group diff --git a/classes/class_array.rst b/classes/class_array.rst index 6631ab29b..7d4640df4 100644 --- a/classes/class_array.rst +++ b/classes/class_array.rst @@ -497,6 +497,12 @@ Returns the last element of the array. Prints an error and returns ``null`` if t Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a ``before`` specifier can be passed. If ``false``, the returned index comes after all existing entries of the value in the array. +:: + + var array = ["a", "b", "c", "c", "d", "e"] + print(array.bsearch("c", true)) # Prints 2, at the first matching element. + print(array.bsearch("c", false)) # Prints 4, after the last matching element, pointing to "d". + \ **Note:** Calling :ref:`bsearch` on an unsorted array results in unexpected behavior. .. rst-class:: classref-item-separator @@ -511,6 +517,8 @@ Finds the index of an existing value (or the insertion index that maintains sort Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search and a custom comparison method. Optionally, a ``before`` specifier can be passed. If ``false``, the returned index comes after all existing entries of the value in the array. The custom method receives two arguments (an element from the array and the value searched for) and must return ``true`` if the first argument is less than the second, and return ``false`` otherwise. +\ **Note:** The custom method must accept the two arguments in any order, you cannot rely on that the first argument will always be from the array. + \ **Note:** Calling :ref:`bsearch_custom` on an unsorted array results in unexpected behavior. .. rst-class:: classref-item-separator @@ -1111,6 +1119,8 @@ If specified, ``step`` is the relative index between source elements. It can be If ``deep`` is true, each element will be copied by value rather than by reference. +\ **Note:** To include the first element when ``step`` is negative, use ``arr.slice(begin, -arr.size() - 1, step)`` (i.e. ``[0, 1, 2].slice(1, -4, -1)`` returns ``[1, 0]``). + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_arrayoccluder3d.rst b/classes/class_arrayoccluder3d.rst index 26b3602db..2b0a253f8 100644 --- a/classes/class_arrayoccluder3d.rst +++ b/classes/class_arrayoccluder3d.rst @@ -23,6 +23,13 @@ Description See :ref:`OccluderInstance3D`'s documentation for instructions on setting up occlusion culling. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Occlusion culling <../tutorials/3d/occlusion_culling>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_astargrid2d.rst b/classes/class_astargrid2d.rst index 2e2748b37..21237cba9 100644 --- a/classes/class_astargrid2d.rst +++ b/classes/class_astargrid2d.rst @@ -38,7 +38,7 @@ To use **AStarGrid2D**, you only need to set the :ref:`region`, it will return an empty :ref:`PackedVector3Array` and will print an error message. +\ **Note:** This method is not thread-safe. If called from a :ref:`Thread`, it will return an empty :ref:`PackedVector2Array` and will print an error message. .. rst-class:: classref-item-separator diff --git a/classes/class_audioserver.rst b/classes/class_audioserver.rst index d501e852d..62d030236 100644 --- a/classes/class_audioserver.rst +++ b/classes/class_audioserver.rst @@ -730,9 +730,9 @@ Sets the volume of the bus at index ``bus_idx`` to ``volume_db``. void **set_enable_tagging_used_audio_streams** **(** :ref:`bool` enable **)** -.. container:: contribute +If set to ``true``, all instances of :ref:`AudioStreamPlayback` will call :ref:`AudioStreamPlayback._tag_used_streams` every mix step. - There is currently no description for this method. Please help us by :ref:`contributing one `! +\ **Note:** This is enabled by default in the editor, as it is used by editor plugins for the audio stream previews. .. rst-class:: classref-item-separator diff --git a/classes/class_audiostream.rst b/classes/class_audiostream.rst index 31dd01bcb..72600df71 100644 --- a/classes/class_audiostream.rst +++ b/classes/class_audiostream.rst @@ -79,9 +79,9 @@ Method Descriptions :ref:`int` **_get_beat_count** **(** **)** |virtual| |const| -.. container:: contribute +Overridable method. Should return the total number of beats of this audio stream. Used by the engine to determine the position of every beat. - There is currently no description for this method. Please help us by :ref:`contributing one `! +Ideally, the returned value should be based off the stream's sample rate (:ref:`AudioStreamWAV.mix_rate`, for example). .. rst-class:: classref-item-separator @@ -93,9 +93,9 @@ Method Descriptions :ref:`float` **_get_bpm** **(** **)** |virtual| |const| -.. container:: contribute +Overridable method. Should return the tempo of this audio stream, in beats per minute (BPM). Used by the engine to determine the position of every beat. - There is currently no description for this method. Please help us by :ref:`contributing one `! +Ideally, the returned value should be based off the stream's sample rate (:ref:`AudioStreamWAV.mix_rate`, for example). .. rst-class:: classref-item-separator @@ -107,9 +107,7 @@ Method Descriptions :ref:`float` **_get_length** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Override this method to customize the returned value of :ref:`get_length`. Should return the length of this audio stream, in seconds. .. rst-class:: classref-item-separator @@ -121,9 +119,7 @@ Method Descriptions :ref:`String` **_get_stream_name** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Override this method to customize the name assigned to this audio stream. Unused by the engine. .. rst-class:: classref-item-separator @@ -135,9 +131,7 @@ Method Descriptions :ref:`AudioStreamPlayback` **_instantiate_playback** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Override this method to customize the returned value of :ref:`instantiate_playback`. Should returned a new :ref:`AudioStreamPlayback` created when the stream is played (such as by an :ref:`AudioStreamPlayer`).. .. rst-class:: classref-item-separator @@ -149,9 +143,7 @@ Method Descriptions :ref:`bool` **_is_monophonic** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Override this method to customize the returned value of :ref:`is_monophonic`. Should return ``true`` if this audio stream only supports one channel. .. rst-class:: classref-item-separator @@ -175,7 +167,7 @@ Returns the length of the audio stream in seconds. :ref:`AudioStreamPlayback` **instantiate_playback** **(** **)** -Returns an AudioStreamPlayback. Useful for when you want to extend :ref:`_instantiate_playback` but call :ref:`instantiate_playback` from an internally held AudioStream subresource. An example of this can be found in the source files for ``AudioStreamRandomPitch::instantiate_playback``. +Returns a newly created :ref:`AudioStreamPlayback` intended to play this audio stream. Useful for when you want to extend :ref:`_instantiate_playback` but call :ref:`instantiate_playback` from an internally held AudioStream subresource. An example of this can be found in the source code for ``AudioStreamRandomPitch::instantiate_playback``. .. rst-class:: classref-item-separator @@ -187,7 +179,7 @@ Returns an AudioStreamPlayback. Useful for when you want to extend :ref:`_instan :ref:`bool` **is_monophonic** **(** **)** |const| -Returns true if this audio stream only supports monophonic playback, or false if the audio stream supports polyphony. +Returns ``true`` if this audio stream only supports one channel (*monophony*), or ``false`` if the audio stream supports two or more channels (*polyphony*). .. |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_audiostreammicrophone.rst b/classes/class_audiostreammicrophone.rst index 5fb1a393f..0daeac406 100644 --- a/classes/class_audiostreammicrophone.rst +++ b/classes/class_audiostreammicrophone.rst @@ -28,6 +28,8 @@ When used directly in an :ref:`AudioStreamPlayer` node, Tutorials --------- +- :doc:`Recording with microphone <../tutorials/audio/recording_with_microphone>` + - `Audio Mic Record Demo `__ .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` diff --git a/classes/class_audiostreamplayback.rst b/classes/class_audiostreamplayback.rst index 7454c8c97..087f0c533 100644 --- a/classes/class_audiostreamplayback.rst +++ b/classes/class_audiostreamplayback.rst @@ -71,9 +71,7 @@ Method Descriptions :ref:`int` **_get_loop_count** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Overridable method. Should return how many times this audio stream has looped. Most built-in playbacks always return ``0``. .. rst-class:: classref-item-separator @@ -85,9 +83,7 @@ Method Descriptions :ref:`float` **_get_playback_position** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Overridable method. Should return the current progress along the audio stream, in seconds. .. rst-class:: classref-item-separator @@ -99,9 +95,7 @@ Method Descriptions :ref:`bool` **_is_playing** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Overridable method. Should return ``true`` if this playback is active and playing its audio stream. .. rst-class:: classref-item-separator @@ -113,9 +107,9 @@ Method Descriptions :ref:`int` **_mix** **(** AudioFrame* buffer, :ref:`float` rate_scale, :ref:`int` frames **)** |virtual| -.. container:: contribute +Override this method to customize how the audio stream is mixed. This method is called even if the playback is not active. - There is currently no description for this method. Please help us by :ref:`contributing one `! +\ **Note:** It is not useful to override this method in GDScript or C#. Only GDExtension can take advantage of it. .. rst-class:: classref-item-separator @@ -127,9 +121,7 @@ Method Descriptions void **_seek** **(** :ref:`float` position **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Override this method to customize what happens when seeking this audio stream at the given ``position``, such as by calling :ref:`AudioStreamPlayer.seek`. .. rst-class:: classref-item-separator @@ -141,9 +133,7 @@ void **_seek** **(** :ref:`float` position **)** |virtual| void **_start** **(** :ref:`float` from_pos **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Override this method to customize what happens when the playback starts at the given position, such as by calling :ref:`AudioStreamPlayer.play`. .. rst-class:: classref-item-separator @@ -155,9 +145,7 @@ void **_start** **(** :ref:`float` from_pos **)** |virtual| void **_stop** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Override this method to customize what happens when the playback is stopped, such as by calling :ref:`AudioStreamPlayer.stop`. .. rst-class:: classref-item-separator @@ -169,9 +157,7 @@ void **_stop** **(** **)** |virtual| void **_tag_used_streams** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Overridable method. Called whenever the audio stream is mixed if the playback is active and :ref:`AudioServer.set_enable_tagging_used_audio_streams` has been set to ``true``. Editor plugins may use this method to "tag" the current position along the audio stream and display it in a preview. .. |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_audiostreamplayer3d.rst b/classes/class_audiostreamplayer3d.rst index a89169d4e..7cec864fb 100644 --- a/classes/class_audiostreamplayer3d.rst +++ b/classes/class_audiostreamplayer3d.rst @@ -396,7 +396,7 @@ Attenuation factor used if listener is outside of :ref:`emission_angle_degrees` value **)** - :ref:`float` **get_max_db** **(** **)** -Sets the absolute maximum of the soundlevel, in decibels. +Sets the absolute maximum of the sound level, in decibels. .. rst-class:: classref-item-separator diff --git a/classes/class_basematerial3d.rst b/classes/class_basematerial3d.rst index c0de0c637..ff143705c 100644 --- a/classes/class_basematerial3d.rst +++ b/classes/class_basematerial3d.rst @@ -477,7 +477,7 @@ enum **TextureFilter**: :ref:`TextureFilter` **TEXTURE_FILTER_NEAREST** = ``0`` -The texture filter reads from the nearest pixel only. The simplest and fastest method of filtering, but the texture will look pixelized. +The texture filter reads from the nearest pixel only. This makes the texture look pixelated from up close, and grainy from a distance (due to mipmaps not being sampled). .. _class_BaseMaterial3D_constant_TEXTURE_FILTER_LINEAR: @@ -485,7 +485,7 @@ The texture filter reads from the nearest pixel only. The simplest and fastest m :ref:`TextureFilter` **TEXTURE_FILTER_LINEAR** = ``1`` -The texture filter blends between the nearest 4 pixels. Use this when you want to avoid a pixelated style, but do not want mipmaps. +The texture filter blends between the nearest 4 pixels. This makes the texture look smooth from up close, and grainy from a distance (due to mipmaps not being sampled). .. _class_BaseMaterial3D_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS: @@ -493,7 +493,7 @@ The texture filter blends between the nearest 4 pixels. Use this when you want t :ref:`TextureFilter` **TEXTURE_FILTER_NEAREST_WITH_MIPMAPS** = ``2`` -The texture filter reads from the nearest pixel in the nearest mipmap. The fastest way to read from textures with mipmaps. +The texture filter reads from the nearest pixel and blends between the nearest 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter` is ``true``). This makes the texture look pixelated from up close, and smooth from a distance. .. _class_BaseMaterial3D_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS: @@ -501,7 +501,7 @@ The texture filter reads from the nearest pixel in the nearest mipmap. The faste :ref:`TextureFilter` **TEXTURE_FILTER_LINEAR_WITH_MIPMAPS** = ``3`` -The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps. Use this for most cases as mipmaps are important to smooth out pixels that are far from the camera. +The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter` is ``true``). This makes the texture look smooth from up close, and smooth from a distance. .. _class_BaseMaterial3D_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC: @@ -509,7 +509,7 @@ The texture filter blends between the nearest 4 pixels and between the nearest 2 :ref:`TextureFilter` **TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC** = ``4`` -The texture filter reads from the nearest pixel, but selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level`. +The texture filter reads from the nearest pixel and blends between 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter` is ``true``) based on the angle between the surface and the camera view. This makes the texture look pixelated from up close, and smooth from a distance. Anisotropic filtering improves texture quality on surfaces that are almost in line with the camera, but is slightly slower. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level`. .. _class_BaseMaterial3D_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC: @@ -517,7 +517,7 @@ The texture filter reads from the nearest pixel, but selects a mipmap based on t :ref:`TextureFilter` **TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC** = ``5`` -The texture filter blends between the nearest 4 pixels and selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. This is the slowest of the filtering options, but results in the highest quality texturing. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level`. +The texture filter blends between the nearest 4 pixels and blends between 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter` is ``true``) based on the angle between the surface and the camera view. This makes the texture look smooth from up close, and smooth from a distance. Anisotropic filtering improves texture quality on surfaces that are almost in line with the camera, but is slightly slower. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level`. .. _class_BaseMaterial3D_constant_TEXTURE_FILTER_MAX: @@ -2474,7 +2474,7 @@ Specifies the channel of the :ref:`metallic_texture` value **)** - :ref:`float` **get_msdf_outline_size** **(** **)** -The width of the shape outine. +The width of the shape outline. .. rst-class:: classref-item-separator diff --git a/classes/class_basis.rst b/classes/class_basis.rst index 0cbe18a46..1bd7a467a 100644 --- a/classes/class_basis.rst +++ b/classes/class_basis.rst @@ -17,13 +17,17 @@ A 3×3 matrix for representing 3D rotation and scale. Description ----------- -A 3×3 matrix used for representing 3D rotation and scale. Usually used as an orthogonal basis for a :ref:`Transform3D`. +The **Basis** built-in :ref:`Variant` type is a 3x3 `matrix `__ used to represent 3D rotation, scale, and shear. It is frequently used within a :ref:`Transform3D`. -Contains 3 vector fields X, Y and Z as its columns, which are typically interpreted as the local basis vectors of a transformation. For such use, it is composed of a scaling and a rotation matrix, in that order (M = R.S). +A **Basis** is composed by 3 axis vectors, each representing a column of the matrix: :ref:`x`, :ref:`y`, and :ref:`z`. The length of each axis (:ref:`Vector3.length`) influences the basis's scale, while the direction of all axes influence the rotation. Usually, these axes are perpendicular to one another. However, when you rotate any axis individually, the basis becomes sheared. Applying a sheared basis to a 3D model will make the model appear distorted. -Basis can also be accessed as an array of 3D vectors. These vectors are usually orthogonal to each other, but are not necessarily normalized (due to scaling). +A **Basis** is **orthogonal** if its axes are perpendicular to each other. A basis is **normalized** if the length of every axis is ``1``. A basis is **uniform** if all axes share the same length (see :ref:`get_scale`). A basis is **orthonormal** if it is both orthogonal and normalized, which allows it to only represent rotations. A basis is **conformal** if it is both orthogonal and uniform, which ensures it is not distorted. -For more information, read the "Matrices and transforms" documentation article. +For a general introduction, see the :doc:`Matrices and transforms <../tutorials/math/matrices_and_transforms>` tutorial. + +\ **Note:** Godot uses a `right-handed coordinate system `__, which is a common standard. For directions, the convention for built-in types like :ref:`Camera3D` is for -Z to point forward (+X is right, +Y is up, and +Z is back). Other objects may use different direction conventions. For more information, see the `Importing 3D Scenes <../tutorials/assets_pipeline/importing_scenes.html#d-asset-direction-conventions>`__ tutorial. + +\ **Note:** The basis matrices are exposed as `column-major `__ order, which is the same as OpenGL. However, they are stored internally in row-major order, which is the same as DirectX. .. rst-class:: classref-introduction-group @@ -165,9 +169,28 @@ Constants **IDENTITY** = ``Basis(1, 0, 0, 0, 1, 0, 0, 0, 1)`` -The identity basis, with no rotation or scaling applied. +The identity basis. This is a basis with no rotation, no shear, and its scale being ``1``. This means that: -This is identical to calling ``Basis()`` without any parameters. This constant can be used to make your code clearer, and for consistency with C#. +- The :ref:`x` points right (:ref:`Vector3.RIGHT`); + +- The :ref:`y` points up (:ref:`Vector3.UP`); + +- The :ref:`z` points back (:ref:`Vector3.BACK`). + +:: + + var basis := Basis.IDENTITY + print("| X | Y | Z") + print("| %s | %s | %s" % [basis.x.x, basis.y.x, basis.z.x]) + print("| %s | %s | %s" % [basis.x.y, basis.y.y, basis.z.y]) + print("| %s | %s | %s" % [basis.x.z, basis.y.z, basis.z.z]) + # Prints: + # | X | Y | Z + # | 1 | 0 | 0 + # | 0 | 1 | 0 + # | 0 | 0 | 1 + +This is identical to creating ``Basis()`` without any parameters. This constant can be used to make your code clearer, and for consistency with C#. .. _class_Basis_constant_FLIP_X: @@ -175,7 +198,9 @@ This is identical to calling ``Basis()`` without any parameters. This constant c **FLIP_X** = ``Basis(-1, 0, 0, 0, 1, 0, 0, 0, 1)`` -The basis that will flip something along the X axis when used in a transformation. +When any basis is multiplied by :ref:`FLIP_X`, it negates all components of the :ref:`x` axis (the X column). + +When :ref:`FLIP_X` is multiplied by any basis, it negates the :ref:`Vector3.x` component of all axes (the X row). .. _class_Basis_constant_FLIP_Y: @@ -183,7 +208,9 @@ The basis that will flip something along the X axis when used in a transformatio **FLIP_Y** = ``Basis(1, 0, 0, 0, -1, 0, 0, 0, 1)`` -The basis that will flip something along the Y axis when used in a transformation. +When any basis is multiplied by :ref:`FLIP_Y`, it negates all components of the :ref:`y` axis (the Y column). + +When :ref:`FLIP_Y` is multiplied by any basis, it negates the :ref:`Vector3.y` component of all axes (the Y row). .. _class_Basis_constant_FLIP_Z: @@ -191,7 +218,9 @@ The basis that will flip something along the Y axis when used in a transformatio **FLIP_Z** = ``Basis(1, 0, 0, 0, 1, 0, 0, 0, -1)`` -The basis that will flip something along the Z axis when used in a transformation. +When any basis is multiplied by :ref:`FLIP_Z`, it negates all components of the :ref:`z` axis (the Z column). + +When :ref:`FLIP_Z` is multiplied by any basis, it negates the :ref:`Vector3.z` component of all axes (the Z row). .. rst-class:: classref-section-separator @@ -208,7 +237,9 @@ Property Descriptions :ref:`Vector3` **x** = ``Vector3(1, 0, 0)`` -The basis matrix's X vector (column 0). Equivalent to array index ``0``. +The basis's X axis, and the column ``0`` of the matrix. + +On the identity basis, this vector points right (:ref:`Vector3.RIGHT`). .. rst-class:: classref-item-separator @@ -220,7 +251,9 @@ The basis matrix's X vector (column 0). Equivalent to array index ``0``. :ref:`Vector3` **y** = ``Vector3(0, 1, 0)`` -The basis matrix's Y vector (column 1). Equivalent to array index ``1``. +The basis's Y axis, and the column ``1`` of the matrix. + +On the identity basis, this vector points up (:ref:`Vector3.UP`). .. rst-class:: classref-item-separator @@ -232,7 +265,9 @@ The basis matrix's Y vector (column 1). Equivalent to array index ``1``. :ref:`Vector3` **z** = ``Vector3(0, 0, 1)`` -The basis matrix's Z vector (column 2). Equivalent to array index ``2``. +The basis's Z axis, and the column ``2`` of the matrix. + +On the identity basis, this vector points back (:ref:`Vector3.BACK`). .. rst-class:: classref-section-separator @@ -249,7 +284,7 @@ Constructor Descriptions :ref:`Basis` **Basis** **(** **)** -Constructs a default-initialized **Basis** set to :ref:`IDENTITY`. +Constructs a **Basis** identical to the :ref:`IDENTITY`. .. rst-class:: classref-item-separator @@ -269,7 +304,9 @@ Constructs a **Basis** as a copy of the given **Basis**. :ref:`Basis` **Basis** **(** :ref:`Vector3` axis, :ref:`float` angle **)** -Constructs a pure rotation basis matrix, rotated around the given ``axis`` by ``angle`` (in radians). The axis must be a normalized vector. +Constructs a **Basis** that only represents rotation, rotated around the ``axis`` by the given ``angle``, in radians. The axis must be a normalized vector. + +\ **Note:** This is the same as using :ref:`rotated` on the :ref:`IDENTITY` basis. With more than one angle consider using :ref:`from_euler`, instead. .. rst-class:: classref-item-separator @@ -279,7 +316,9 @@ Constructs a pure rotation basis matrix, rotated around the given ``axis`` by `` :ref:`Basis` **Basis** **(** :ref:`Quaternion` from **)** -Constructs a pure rotation basis matrix from the given quaternion. +Constructs a **Basis** that only represents rotation from the given :ref:`Quaternion`. + +\ **Note:** Quaternions *only* store rotation, not scale. Because of this, conversions from **Basis** to :ref:`Quaternion` cannot always be reversed. .. rst-class:: classref-item-separator @@ -289,7 +328,7 @@ Constructs a pure rotation basis matrix from the given quaternion. :ref:`Basis` **Basis** **(** :ref:`Vector3` x_axis, :ref:`Vector3` y_axis, :ref:`Vector3` z_axis **)** -Constructs a basis matrix from 3 axis vectors (matrix columns). +Constructs a **Basis** from 3 axis vectors. These are the columns of the basis matrix. .. rst-class:: classref-section-separator @@ -306,9 +345,13 @@ Method Descriptions :ref:`float` **determinant** **(** **)** |const| -Returns the determinant of the basis matrix. If the basis is uniformly scaled, its determinant is the square of the scale. +Returns the `determinant `__ of this basis's matrix. For advanced math, this number can be used to determine a few attributes: -A negative determinant means the basis has a negative scale. A zero determinant means the basis isn't invertible, and is usually considered invalid. +- If the determinant is exactly ``0``, the basis is not invertible (see :ref:`inverse`). + +- If the determinant is a negative number, the basis represents a negative scale. + +\ **Note:** If the basis's scale is the same for every axis, its determinant is always that scale by the power of 2. .. rst-class:: classref-item-separator @@ -320,7 +363,34 @@ A negative determinant means the basis has a negative scale. A zero determinant :ref:`Basis` **from_euler** **(** :ref:`Vector3` euler, :ref:`int` order=2 **)** |static| -Constructs a pure rotation Basis matrix from Euler angles in the specified Euler rotation order. By default, use YXZ order (most common). See the :ref:`EulerOrder` enum for possible values. +Constructs a new **Basis** that only represents rotation from the given :ref:`Vector3` of `Euler angles `__, in radians. + +- The :ref:`Vector3.x` should contain the angle around the :ref:`x` axis (pitch). + +- The :ref:`Vector3.y` should contain the angle around the :ref:`y` axis (yaw). + +- The :ref:`Vector3.z` should contain the angle around the :ref:`z` axis (roll). + + +.. tabs:: + + .. code-tab:: gdscript + + # Creates a Basis whose z axis points down. + var my_basis = Basis.from_euler(Vector3(TAU / 4, 0, 0)) + + print(my_basis.z) # Prints (0, -1, 0). + + .. code-tab:: csharp + + // Creates a Basis whose z axis points down. + var myBasis = Basis.FromEuler(new Vector3(Mathf.Tau / 4.0f, 0.0f, 0.0f)); + + GD.Print(myBasis.Z); // Prints (0, -1, 0). + + + +The order of each consecutive rotation can be changed with ``order`` (see :ref:`EulerOrder` constants). By default, the YXZ convention is used (:ref:`@GlobalScope.EULER_ORDER_YXZ`): the basis rotates first around the Y axis (yaw), then X (pitch), and lastly Z (roll). When using the opposite method :ref:`get_euler`, this order is reversed. .. rst-class:: classref-item-separator @@ -332,7 +402,30 @@ Constructs a pure rotation Basis matrix from Euler angles in the specified Euler :ref:`Basis` **from_scale** **(** :ref:`Vector3` scale **)** |static| -Constructs a pure scale basis matrix with no rotation or shearing. The scale values are set as the diagonal of the matrix, and the other parts of the matrix are zero. +Constructs a new **Basis** that only represents scale, with no rotation or shear, from the given ``scale`` vector. + + +.. tabs:: + + .. code-tab:: gdscript + + var my_basis = Basis.from_scale(Vector3(2, 4, 8)) + + print(my_basis.x) # Prints (2, 0, 0). + print(my_basis.y) # Prints (0, 4, 0). + print(my_basis.z) # Prints (0, 0, 8). + + .. code-tab:: csharp + + var myBasis = Basis.FromScale(new Vector3(2.0f, 4.0f, 8.0f)); + + GD.Print(myBasis.X); // Prints (2, 0, 0). + GD.Print(myBasis.Y); // Prints (0, 4, 0). + GD.Print(myBasis.Z); // Prints (0, 0, 8). + + + +\ **Note:** In linear algebra, the matrix of this basis is also known as a `diagonal matrix `__. .. rst-class:: classref-item-separator @@ -344,9 +437,19 @@ Constructs a pure scale basis matrix with no rotation or shearing. The scale val :ref:`Vector3` **get_euler** **(** :ref:`int` order=2 **)** |const| -Returns the basis's rotation in the form of Euler angles. The Euler order depends on the ``order`` parameter, by default it uses the YXZ convention: when decomposing, first Z, then X, and Y last. The returned vector contains the rotation angles in the format (X angle, Y angle, Z angle). +Returns this basis's rotation as a :ref:`Vector3` of `Euler angles `__, in radians. -Consider using the :ref:`get_rotation_quaternion` method instead, which returns a :ref:`Quaternion` quaternion instead of Euler angles. +- The :ref:`Vector3.x` contains the angle around the :ref:`x` axis (pitch); + +- The :ref:`Vector3.y` contains the angle around the :ref:`y` axis (yaw); + +- The :ref:`Vector3.z` contains the angle around the :ref:`z` axis (roll). + +The order of each consecutive rotation can be changed with ``order`` (see :ref:`EulerOrder` constants). By default, the YXZ convention is used (:ref:`@GlobalScope.EULER_ORDER_YXZ`): Z (roll) is calculated first, then X (pitch), and lastly Y (yaw). When using the opposite method :ref:`from_euler`, this order is reversed. + +\ **Note:** Euler angles are much more intuitive but are not suitable for 3D math. Because of this, consider using the :ref:`get_rotation_quaternion` method instead, which returns a :ref:`Quaternion`. + +\ **Note:** In the Inspector dock, a basis's rotation is often displayed in Euler angles (in degrees), as is the case with the :ref:`Node3D.rotation` property. .. rst-class:: classref-item-separator @@ -358,7 +461,9 @@ Consider using the :ref:`get_rotation_quaternion` **get_rotation_quaternion** **(** **)** |const| -Returns the basis's rotation in the form of a quaternion. See :ref:`get_euler` if you need Euler angles, but keep in mind quaternions should generally be preferred to Euler angles. +Returns this basis's rotation as a :ref:`Quaternion`. + +\ **Note:** Quatenions are much more suitable for 3D math but are less intuitive. For user interfaces, consider using the :ref:`get_euler` method, which returns Euler angles. .. rst-class:: classref-item-separator @@ -370,7 +475,40 @@ Returns the basis's rotation in the form of a quaternion. See :ref:`get_euler` **get_scale** **(** **)** |const| -Assuming that the matrix is the combination of a rotation and scaling, return the absolute value of scaling factors along each axis. +Returns the length of each axis of this basis, as a :ref:`Vector3`. If the basis is not sheared, this is the scaling factor. It is not affected by rotation. + + +.. tabs:: + + .. code-tab:: gdscript + + var my_basis = Basis( + Vector3(2, 0, 0), + Vector3(0, 4, 0), + Vector3(0, 0, 8) + ) + # Rotating the Basis in any way preserves its scale. + my_basis = my_basis.rotated(Vector3.UP, TAU / 2) + my_basis = my_basis.rotated(Vector3.RIGHT, TAU / 4) + + print(my_basis.get_scale()) # Prints (2, 4, 8). + + .. code-tab:: csharp + + var myBasis = new Basis( + Vector3(2.0f, 0.0f, 0.0f), + Vector3(0.0f, 4.0f, 0.0f), + Vector3(0.0f, 0.0f, 8.0f) + ); + // Rotating the Basis in any way preserves its scale. + myBasis = myBasis.Rotated(Vector3.Up, Mathf.Tau / 2.0f); + myBasis = myBasis.Rotated(Vector3.Right, Mathf.Tau / 4.0f); + + GD.Print(myBasis.Scale); // Prints (2, 4, 8). + + + +\ **Note:** If the value returned by :ref:`determinant` is negative, the scale is also negative. .. rst-class:: classref-item-separator @@ -382,7 +520,7 @@ Assuming that the matrix is the combination of a rotation and scaling, return th :ref:`Basis` **inverse** **(** **)** |const| -Returns the inverse of the matrix. +Returns the `inverse of this basis's matrix `__. .. rst-class:: classref-item-separator @@ -418,11 +556,11 @@ Returns ``true`` if this basis is finite, by calling :ref:`@GlobalScope.is_finit :ref:`Basis` **looking_at** **(** :ref:`Vector3` target, :ref:`Vector3` up=Vector3(0, 1, 0), :ref:`bool` use_model_front=false **)** |static| -Creates a Basis with a rotation such that the forward axis (-Z) points towards the ``target`` position. +Creates a new **Basis** with a rotation such that the forward axis (-Z) points towards the ``target`` position. -The up axis (+Y) points as close to the ``up`` vector as possible while staying perpendicular to the forward axis. The resulting Basis is orthonormalized. The ``target`` and ``up`` vectors cannot be zero, and cannot be parallel to each other. +By default, the -Z axis (camera forward) is treated as forward (implies +X is right). If ``use_model_front`` is ``true``, the +Z axis (asset front) is treated as forward (implies +X is left) and points toward the ``target`` position. -If ``use_model_front`` is ``true``, the +Z axis (asset front) is treated as forward (implies +X is left) and points toward the ``target`` position. By default, the -Z axis (camera forward) is treated as forward (implies +X is right). +The up axis (+Y) points as close to the ``up`` vector as possible while staying perpendicular to the forward axis. The returned basis is orthonormalized (see :ref:`orthonormalized`). The ``target`` and ``up`` vectors cannot be :ref:`Vector3.ZERO`, and cannot be parallel to each other. .. rst-class:: classref-item-separator @@ -434,7 +572,33 @@ If ``use_model_front`` is ``true``, the +Z axis (asset front) is treated as forw :ref:`Basis` **orthonormalized** **(** **)** |const| -Returns the orthonormalized version of the matrix (useful to call from time to time to avoid rounding error for orthogonal matrices). This performs a Gram-Schmidt orthonormalization on the basis of the matrix. +Returns the orthonormalized version of this basis. An orthonormal basis is both *orthogonal* (the axes are perpendicular to each other) and *normalized* (the axes have a length of ``1``), which also means it can only represent rotation. + +It is often useful to call this method to avoid rounding errors on a rotating basis: + + +.. tabs:: + + .. code-tab:: gdscript + + # Rotate this Node3D every frame. + func _process(delta): + basis = basis.rotated(Vector3.UP, TAU * delta) + basis = basis.rotated(Vector3.RIGHT, TAU * delta) + + basis = basis.orthonormalized() + + .. code-tab:: csharp + + // Rotate this Node3D every frame. + public override void _Process(double delta) + { + Basis = Basis.Rotated(Vector3.Up, Mathf.Tau * (float)delta) + .Rotated(Vector3.Right, Mathf.Tau * (float)delta) + .Orthonormalized(); + } + + .. rst-class:: classref-item-separator @@ -446,7 +610,32 @@ Returns the orthonormalized version of the matrix (useful to call from time to t :ref:`Basis` **rotated** **(** :ref:`Vector3` axis, :ref:`float` angle **)** |const| -Introduce an additional rotation around the given axis by ``angle`` (in radians). The axis must be a normalized vector. +Returns this basis rotated around the given ``axis`` by ``angle`` (in radians). The ``axis`` must be a normalized vector (see :ref:`Vector3.normalized`). + +Positive values rotate this basis clockwise around the axis, while negative values rotate it counterclockwise. + + +.. tabs:: + + .. code-tab:: gdscript + + var my_basis = Basis.IDENTITY + var angle = TAU / 2 + + my_basis = my_basis.rotated(Vector3.UP, angle) # Rotate around the up axis (yaw). + my_basis = my_basis.rotated(Vector3.RIGHT, angle) # Rotate around the right axis (pitch). + my_basis = my_basis.rotated(Vector3.BACK, angle) # Rotate around the back axis (roll). + + .. code-tab:: csharp + + var myBasis = Basis.Identity; + var angle = Mathf.Tau / 2.0f; + + myBasis = myBasis.Rotated(Vector3.Up, angle); // Rotate around the up axis (yaw). + myBasis = myBasis.Rotated(Vector3.Right, angle); // Rotate around the right axis (pitch). + myBasis = myBasis.Rotated(Vector3.Back, angle); // Rotate around the back axis (roll). + + .. rst-class:: classref-item-separator @@ -458,7 +647,40 @@ Introduce an additional rotation around the given axis by ``angle`` (in radians) :ref:`Basis` **scaled** **(** :ref:`Vector3` scale **)** |const| -Introduce an additional scaling specified by the given 3D scaling factor. +Returns this basis with each axis's components scaled by the given ``scale``'s components. + +The basis matrix's rows are multiplied by ``scale``'s components. This operation is a global scale (relative to the parent). + + +.. tabs:: + + .. code-tab:: gdscript + + var my_basis = Basis( + Vector3(1, 1, 1), + Vector3(2, 2, 2), + Vector3(3, 3, 3) + ) + my_basis = my_basis.scaled(Vector3(0, 2, -2)) + + print(my_basis.x) # Prints (0, 2, -2). + print(my_basis.y) # Prints (0, 4, -4). + print(my_basis.z) # Prints (0, 6, -6). + + .. code-tab:: csharp + + var myBasis = new Basis( + new Vector3(1.0f, 1.0f, 1.0f), + new Vector3(2.0f, 2.0f, 2.0f), + new Vector3(3.0f, 3.0f, 3.0f) + ); + myBasis = myBasis.Scaled(new Vector3(0.0f, 2.0f, -2.0f)); + + GD.Print(myBasis.X); // Prints (0, 2, -2). + GD.Print(myBasis.Y); // Prints (0, 4, -4). + GD.Print(myBasis.Z); // Prints (0, 6, -6). + + .. rst-class:: classref-item-separator @@ -470,7 +692,20 @@ Introduce an additional scaling specified by the given 3D scaling factor. :ref:`Basis` **slerp** **(** :ref:`Basis` to, :ref:`float` weight **)** |const| -Assuming that the matrix is a proper rotation matrix, slerp performs a spherical-linear interpolation with another rotation matrix. +Performs a spherical-linear interpolation with the ``to`` basis, given a ``weight``. Both this basis and ``to`` should represent a rotation. + +\ **Example:** Smoothly rotate a :ref:`Node3D` to the target basis over time, with a :ref:`Tween`. + +:: + + var start_basis = Basis.IDENTITY + var target_basis = Basis.IDENTITY.rotated(Vector3.UP, TAU / 2) + + func _ready(): + create_tween().tween_method(interpolate, 0.0, 1.0, 5.0).set_trans(Tween.TRANS_EXPO) + + func interpolate(weight): + basis = start_basis.slerp(target_basis, weight) .. rst-class:: classref-item-separator @@ -482,7 +717,9 @@ Assuming that the matrix is a proper rotation matrix, slerp performs a spherical :ref:`float` **tdotx** **(** :ref:`Vector3` with **)** |const| -Transposed dot product with the X axis of the matrix. +Returns the transposed dot product between ``with`` and the :ref:`x` axis (see :ref:`transposed`). + +This is equivalent to ``basis.x.dot(vector)``. .. rst-class:: classref-item-separator @@ -494,7 +731,9 @@ Transposed dot product with the X axis of the matrix. :ref:`float` **tdoty** **(** :ref:`Vector3` with **)** |const| -Transposed dot product with the Y axis of the matrix. +Returns the transposed dot product between ``with`` and the :ref:`y` axis (see :ref:`transposed`). + +This is equivalent to ``basis.y.dot(vector)``. .. rst-class:: classref-item-separator @@ -506,7 +745,9 @@ Transposed dot product with the Y axis of the matrix. :ref:`float` **tdotz** **(** :ref:`Vector3` with **)** |const| -Transposed dot product with the Z axis of the matrix. +Returns the transposed dot product between ``with`` and the :ref:`z` axis (see :ref:`transposed`). + +This is equivalent to ``basis.z.dot(vector)``. .. rst-class:: classref-item-separator @@ -518,7 +759,38 @@ Transposed dot product with the Z axis of the matrix. :ref:`Basis` **transposed** **(** **)** |const| -Returns the transposed version of the matrix. +Returns the transposed version of this basis. This turns the basis matrix's columns into rows, and its rows into columns. + + +.. tabs:: + + .. code-tab:: gdscript + + var my_basis = Basis( + Vector3(1, 2, 3), + Vector3(4, 5, 6), + Vector3(7, 8, 9) + ) + my_basis = my_basis.transposed() + + print(my_basis.x) # Prints (1, 4, 7). + print(my_basis.y) # Prints (2, 5, 8). + print(my_basis.z) # Prints (3, 6, 9). + + .. code-tab:: csharp + + var myBasis = new Basis( + new Vector3(1.0f, 2.0f, 3.0f), + new Vector3(4.0f, 5.0f, 6.0f), + new Vector3(7.0f, 8.0f, 9.0f) + ); + myBasis = myBasis.Transposed(); + + GD.Print(myBasis.X); // Prints (1, 4, 7). + GD.Print(myBasis.Y); // Prints (2, 5, 8). + GD.Print(myBasis.Z); // Prints (3, 6, 9). + + .. rst-class:: classref-section-separator @@ -535,7 +807,7 @@ Operator Descriptions :ref:`bool` **operator !=** **(** :ref:`Basis` right **)** -Returns ``true`` if the **Basis** matrices are not equal. +Returns ``true`` if the components of both **Basis** matrices are not equal. \ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx` instead, which is more reliable. @@ -549,7 +821,9 @@ Returns ``true`` if the **Basis** matrices are not equal. :ref:`Basis` **operator *** **(** :ref:`Basis` right **)** -Composes these two basis matrices by multiplying them together. This has the effect of transforming the second basis (the child) by the first basis (the parent). +Transforms (multiplies) the ``right`` basis by this basis. + +This is the operation performed between parent and child :ref:`Node3D`\ s. .. rst-class:: classref-item-separator @@ -561,7 +835,22 @@ Composes these two basis matrices by multiplying them together. This has the eff :ref:`Vector3` **operator *** **(** :ref:`Vector3` right **)** -Transforms (multiplies) the :ref:`Vector3` by the given **Basis** matrix. +Transforms (multiplies) the ``right`` vector by this basis, returning a :ref:`Vector3`. + + +.. tabs:: + + .. code-tab:: gdscript + + var my_basis = Basis(Vector3(1, 1, 1), Vector3(1, 1, 1), Vector3(0, 2, 5)) + print(my_basis * Vector3(1, 2, 3)) # Prints (7, 3, 16) + + .. code-tab:: csharp + + var myBasis = new Basis(new Vector3(1, 1, 1), new Vector3(1, 1, 1), new Vector3(0, 2, 5)); + GD.Print(my_basis * new Vector3(1, 2, 3)); // Prints (7, 3, 16) + + .. rst-class:: classref-item-separator @@ -573,7 +862,7 @@ Transforms (multiplies) the :ref:`Vector3` by the given **Basis** :ref:`Basis` **operator *** **(** :ref:`float` right **)** -This operator multiplies all components of the **Basis**, which scales it uniformly. +Multiplies all components of the **Basis** by the given :ref:`float`. This affects the basis's scale uniformly, resizing all 3 axes by the ``right`` value. .. rst-class:: classref-item-separator @@ -585,7 +874,7 @@ This operator multiplies all components of the **Basis**, which scales it unifor :ref:`Basis` **operator *** **(** :ref:`int` right **)** -This operator multiplies all components of the **Basis**, which scales it uniformly. +Multiplies all components of the **Basis** by the given :ref:`int`. This affects the basis's scale uniformly, resizing all 3 axes by the ``right`` value. .. rst-class:: classref-item-separator @@ -597,7 +886,7 @@ This operator multiplies all components of the **Basis**, which scales it unifor :ref:`bool` **operator ==** **(** :ref:`Basis` right **)** -Returns ``true`` if the **Basis** matrices are exactly equal. +Returns ``true`` if the components of both **Basis** matrices are exactly equal. \ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx` instead, which is more reliable. @@ -611,7 +900,9 @@ Returns ``true`` if the **Basis** matrices are exactly equal. :ref:`Vector3` **operator []** **(** :ref:`int` index **)** -Access basis components using their index. ``b[0]`` is equivalent to ``b.x``, ``b[1]`` is equivalent to ``b.y``, and ``b[2]`` is equivalent to ``b.z``. +Accesses each axis (column) of this basis by their index. Index ``0`` is the same as :ref:`x`, index ``1`` is the same as :ref:`y`, and index ``2`` is the same as :ref:`z`. + +\ **Note:** In C++, this operator accesses the rows of the basis matrix, *not* the columns. For the same behavior as scripting languages, use the ``set_column`` and ``get_column`` methods. .. |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_bone2d.rst b/classes/class_bone2d.rst index d45b0e27f..a90f6e612 100644 --- a/classes/class_bone2d.rst +++ b/classes/class_bone2d.rst @@ -104,7 +104,7 @@ Method Descriptions void **apply_rest** **(** **)** -Stores the node's current transforms in :ref:`rest`. +Resets the bone to the rest pose. This is equivalent to setting :ref:`Node2D.transform` to :ref:`rest`. .. rst-class:: classref-item-separator diff --git a/classes/class_boxoccluder3d.rst b/classes/class_boxoccluder3d.rst index 6d6836d17..64d27d040 100644 --- a/classes/class_boxoccluder3d.rst +++ b/classes/class_boxoccluder3d.rst @@ -23,6 +23,13 @@ Description See :ref:`OccluderInstance3D`'s documentation for instructions on setting up occlusion culling. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Occlusion culling <../tutorials/3d/occlusion_culling>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_callable.rst b/classes/class_callable.rst index 4641a7597..7c61a3fa1 100644 --- a/classes/class_callable.rst +++ b/classes/class_callable.rst @@ -256,6 +256,8 @@ Calls the method represented by this **Callable** in deferred mode, i.e. at the func _ready(): grab_focus.call_deferred() +\ **Note:** Deferred calls are processed at idle time. Idle time happens mainly at the end of process and physics frames. In it, deferred calls will be run until there are none left, which means you can defer calls from other deferred calls and they'll still be run in the current idle time cycle. This means you should not call a method deferred from itself (or from a method called by it), as this causes infinite recursion the same way as if you had called the method directly. + See also :ref:`Object.call_deferred`. .. rst-class:: classref-item-separator @@ -304,7 +306,7 @@ Returns the total amount of arguments bound (or unbound) via successive :ref:`bi :ref:`StringName` **get_method** **(** **)** |const| -Returns the name of the method represented by this **Callable**. If the callable is a lambda function, returns the function's name. +Returns the name of the method represented by this **Callable**. If the callable is a GDScript lambda function, returns the function's name or ``""``. .. rst-class:: classref-item-separator diff --git a/classes/class_camera3d.rst b/classes/class_camera3d.rst index 7b06d2db1..4a7ae556a 100644 --- a/classes/class_camera3d.rst +++ b/classes/class_camera3d.rst @@ -577,7 +577,7 @@ Returns the RID of a pyramid shape encompassing the camera's view frustum, ignor :ref:`bool` **is_position_behind** **(** :ref:`Vector3` world_point **)** |const| -Returns ``true`` if the given position is behind the camera (the blue part of the linked diagram). `See this diagram `__ for an overview of position query methods. +Returns ``true`` if the given position is behind the camera (the blue part of the linked diagram). `See this diagram `__ for an overview of position query methods. \ **Note:** A position which returns ``false`` may still be outside the camera's field of view. @@ -591,7 +591,7 @@ Returns ``true`` if the given position is behind the camera (the blue part of th :ref:`bool` **is_position_in_frustum** **(** :ref:`Vector3` world_point **)** |const| -Returns ``true`` if the given position is inside the camera's frustum (the green part of the linked diagram). `See this diagram `__ for an overview of position query methods. +Returns ``true`` if the given position is inside the camera's frustum (the green part of the linked diagram). `See this diagram `__ for an overview of position query methods. .. rst-class:: classref-item-separator diff --git a/classes/class_cameraattributesphysical.rst b/classes/class_cameraattributesphysical.rst index 65a84298b..0b433d9f2 100644 --- a/classes/class_cameraattributesphysical.rst +++ b/classes/class_cameraattributesphysical.rst @@ -27,6 +27,13 @@ The default settings are intended for use in an outdoor environment, tips for se \ **Note:** Depth of field blur is only supported in the Forward+ and Mobile rendering methods, not Compatibility. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Physical light and camera units <../tutorials/3d/physical_light_and_camera_units>` + .. rst-class:: classref-reftable-group Properties @@ -138,7 +145,7 @@ Only available when :ref:`ProjectSettings.rendering/lights_and_shadows/use_physi - void **set_shutter_speed** **(** :ref:`float` value **)** - :ref:`float` **get_shutter_speed** **(** **)** -Time for shutter to open and close, measured in seconds. A higher value will let in more light leading to a brighter image, while a lower amount will let in less light leading to a darker image. +Time for shutter to open and close, evaluated as ``1 / shutter_speed`` seconds. A higher value will allow less light (leading to a darker image), while a lower value will allow more light (leading to a brighter image). Only available when :ref:`ProjectSettings.rendering/lights_and_shadows/use_physical_light_units` is enabled. diff --git a/classes/class_canvasitem.rst b/classes/class_canvasitem.rst index 5792b8776..17711aeb7 100644 --- a/classes/class_canvasitem.rst +++ b/classes/class_canvasitem.rst @@ -288,7 +288,7 @@ The **CanvasItem** will inherit the filter from its parent. :ref:`TextureFilter` **TEXTURE_FILTER_NEAREST** = ``1`` -The texture filter reads from the nearest pixel only. The simplest and fastest method of filtering. Useful for pixel art. +The texture filter reads from the nearest pixel only. This makes the texture look pixelated from up close, and grainy from a distance (due to mipmaps not being sampled). .. _class_CanvasItem_constant_TEXTURE_FILTER_LINEAR: @@ -296,7 +296,7 @@ The texture filter reads from the nearest pixel only. The simplest and fastest m :ref:`TextureFilter` **TEXTURE_FILTER_LINEAR** = ``2`` -The texture filter blends between the nearest four pixels. Use this for most cases where you want to avoid a pixelated style. +The texture filter blends between the nearest 4 pixels. This makes the texture look smooth from up close, and grainy from a distance (due to mipmaps not being sampled). .. _class_CanvasItem_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS: @@ -304,7 +304,9 @@ The texture filter blends between the nearest four pixels. Use this for most cas :ref:`TextureFilter` **TEXTURE_FILTER_NEAREST_WITH_MIPMAPS** = ``3`` -The texture filter reads from the nearest pixel in the nearest mipmap. This is the fastest way to read from textures with mipmaps. +The texture filter reads from the nearest pixel and blends between the nearest 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter` is ``true``). This makes the texture look pixelated from up close, and smooth from a distance. + +Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to :ref:`Camera2D` zoom or sprite scaling), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels. .. _class_CanvasItem_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS: @@ -312,7 +314,9 @@ The texture filter reads from the nearest pixel in the nearest mipmap. This is t :ref:`TextureFilter` **TEXTURE_FILTER_LINEAR_WITH_MIPMAPS** = ``4`` -The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps. Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to :ref:`Camera2D` zoom), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels. +The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter` is ``true``). This makes the texture look smooth from up close, and smooth from a distance. + +Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to :ref:`Camera2D` zoom or sprite scaling), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels. .. _class_CanvasItem_constant_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC: @@ -320,9 +324,9 @@ The texture filter blends between the nearest 4 pixels and between the nearest 2 :ref:`TextureFilter` **TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC** = ``5`` -The texture filter reads from the nearest pixel, but selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level`. +The texture filter reads from the nearest pixel and blends between 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter` is ``true``) based on the angle between the surface and the camera view. This makes the texture look pixelated from up close, and smooth from a distance. Anisotropic filtering improves texture quality on surfaces that are almost in line with the camera, but is slightly slower. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level`. -\ **Note:** This texture filter is rarely useful in 2D projects. :ref:`TEXTURE_FILTER_NEAREST_WITH_MIPMAPS` is usually more appropriate. +\ **Note:** This texture filter is rarely useful in 2D projects. :ref:`TEXTURE_FILTER_NEAREST_WITH_MIPMAPS` is usually more appropriate in this case. .. _class_CanvasItem_constant_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC: @@ -330,9 +334,9 @@ The texture filter reads from the nearest pixel, but selects a mipmap based on t :ref:`TextureFilter` **TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC** = ``6`` -The texture filter blends between the nearest 4 pixels and selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. This is the slowest of the filtering options, but results in the highest quality texturing. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level`. +The texture filter blends between the nearest 4 pixels and blends between 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter` is ``true``) based on the angle between the surface and the camera view. This makes the texture look smooth from up close, and smooth from a distance. Anisotropic filtering improves texture quality on surfaces that are almost in line with the camera, but is slightly slower. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level`. -\ **Note:** This texture filter is rarely useful in 2D projects. :ref:`TEXTURE_FILTER_LINEAR_WITH_MIPMAPS` is usually more appropriate. +\ **Note:** This texture filter is rarely useful in 2D projects. :ref:`TEXTURE_FILTER_LINEAR_WITH_MIPMAPS` is usually more appropriate in this case. .. _class_CanvasItem_constant_TEXTURE_FILTER_MAX: @@ -519,7 +523,7 @@ Property Descriptions - void **set_clip_children_mode** **(** :ref:`ClipChildrenMode` value **)** - :ref:`ClipChildrenMode` **get_clip_children_mode** **(** **)** -Allows the current node to clip children nodes, essentially acting as a mask. +Allows the current node to clip child nodes, essentially acting as a mask. .. rst-class:: classref-item-separator @@ -1466,7 +1470,7 @@ void **move_to_front** **(** **)** Moves this node to display on top of its siblings. -Internally, the node is moved to the bottom of parent's children list. The method has no effect on nodes without a parent. +Internally, the node is moved to the bottom of parent's child list. The method has no effect on nodes without a parent. .. rst-class:: classref-item-separator diff --git a/classes/class_collisionpolygon2d.rst b/classes/class_collisionpolygon2d.rst index 69d293c27..e37b0aab5 100644 --- a/classes/class_collisionpolygon2d.rst +++ b/classes/class_collisionpolygon2d.rst @@ -21,7 +21,7 @@ Description A node that provides a thickened polygon shape (a prism) to a :ref:`CollisionObject2D` parent and allows to edit it. The polygon can be concave or convex. This can give a detection shape to an :ref:`Area2D` or turn :ref:`PhysicsBody2D` into a solid object. -\ **Warning:** A non-uniformly scaled :ref:`CollisionShape3D` will likely not behave as expected. Make sure to keep its scale the same on all axes and adjust its shape resource instead. +\ **Warning:** A non-uniformly scaled :ref:`CollisionShape2D` will likely not behave as expected. Make sure to keep its scale the same on all axes and adjust its shape resource instead. .. rst-class:: classref-reftable-group @@ -166,6 +166,8 @@ The margin used for one-way collision (in pixels). Higher values will make the s The polygon's list of vertices. Each point will be connected to the next, and the final point will be connected to the first. +\ **Note:** The returned vertices are in the local coordinate space of the given **CollisionPolygon2D**. + \ **Warning:** The returned value is a clone of the :ref:`PackedVector2Array`, not a reference. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` diff --git a/classes/class_color.rst b/classes/class_color.rst index e38b8a1ca..bc68bf030 100644 --- a/classes/class_color.rst +++ b/classes/class_color.rst @@ -17,13 +17,13 @@ A color represented in RGBA format. Description ----------- -A color represented in RGBA format by a red (:ref:`r`), green (:ref:`g`), blue (:ref:`b`), and alpha (:ref:`a`) component. Each component is a 16-bit floating-point value, usually ranging from ``0.0`` to ``1.0``. Some properties (such as :ref:`CanvasItem.modulate`) may support values greater than ``1.0``, for overbright or HDR (High Dynamic Range) colors. +A color represented in RGBA format by a red (:ref:`r`), green (:ref:`g`), blue (:ref:`b`), and alpha (:ref:`a`) component. Each component is a 32-bit floating-point value, usually ranging from ``0.0`` to ``1.0``. Some properties (such as :ref:`CanvasItem.modulate`) may support values greater than ``1.0``, for overbright or HDR (High Dynamic Range) colors. Colors can be created in various ways: By the various **Color** constructors, by static methods such as :ref:`from_hsv`, and by using a name from the set of standardized colors based on `X11 color names `__ with the addition of :ref:`TRANSPARENT`. GDScript also provides :ref:`@GDScript.Color8`, which uses integers from ``0`` to ``255`` and doesn't support overbright colors. \ **Note:** In a boolean context, a Color will evaluate to ``false`` if it is equal to ``Color(0, 0, 0, 1)`` (opaque black). Otherwise, a Color will always evaluate to ``true``. -\ `Color constants cheatsheet `__ +\ `Color constants cheatsheet `__ .. rst-class:: classref-introduction-group diff --git a/classes/class_concavepolygonshape2d.rst b/classes/class_concavepolygonshape2d.rst index acc5e5ece..3f0503a65 100644 --- a/classes/class_concavepolygonshape2d.rst +++ b/classes/class_concavepolygonshape2d.rst @@ -21,7 +21,7 @@ Description A 2D polyline shape, intended for use in physics. Used internally in :ref:`CollisionPolygon2D` when it's in ``BUILD_SEGMENTS`` mode. -Being just a collection of interconnected line segments, **ConcavePolygonShape2D** is the most freely configurable single 2D shape. It can be used to form polygons of any nature, or even shapes that don't enclose an area. However, :ref:`ConvexPolygonShape2D` is *hollow* even if the interconnected line segments do enclose an area, which often makes it unsuitable for physics or detection. +Being just a collection of interconnected line segments, **ConcavePolygonShape2D** is the most freely configurable single 2D shape. It can be used to form polygons of any nature, or even shapes that don't enclose an area. However, **ConcavePolygonShape2D** is *hollow* even if the interconnected line segments do enclose an area, which often makes it unsuitable for physics or detection. \ **Note:** When used for collision, **ConcavePolygonShape2D** is intended to work with static :ref:`CollisionShape2D` nodes like :ref:`StaticBody2D` and will likely not behave well for :ref:`CharacterBody2D`\ s or :ref:`RigidBody2D`\ s in a mode other than Static. diff --git a/classes/class_concavepolygonshape3d.rst b/classes/class_concavepolygonshape3d.rst index 156a42388..a543d39a5 100644 --- a/classes/class_concavepolygonshape3d.rst +++ b/classes/class_concavepolygonshape3d.rst @@ -21,7 +21,7 @@ Description A 3D trimesh shape, intended for use in physics. Usually used to provide a shape for a :ref:`CollisionShape3D`. -Being just a collection of interconnected triangles, **ConcavePolygonShape3D** is the most freely configurable single 3D shape. It can be used to form polyhedra of any nature, or even shapes that don't enclose a volume. However, :ref:`ConvexPolygonShape3D` is *hollow* even if the interconnected triangles do enclose a volume, which often makes it unsuitable for physics or detection. +Being just a collection of interconnected triangles, **ConcavePolygonShape3D** is the most freely configurable single 3D shape. It can be used to form polyhedra of any nature, or even shapes that don't enclose a volume. However, **ConcavePolygonShape3D** is *hollow* even if the interconnected triangles do enclose a volume, which often makes it unsuitable for physics or detection. \ **Note:** When used for collision, **ConcavePolygonShape3D** is intended to work with static :ref:`CollisionShape3D` nodes like :ref:`StaticBody3D` and will likely not behave well for :ref:`CharacterBody3D`\ s or :ref:`RigidBody3D`\ s in a mode other than Static. diff --git a/classes/class_control.rst b/classes/class_control.rst index ad8647518..81863fea1 100644 --- a/classes/class_control.rst +++ b/classes/class_control.rst @@ -52,6 +52,8 @@ Tutorials - :doc:`Control node gallery <../tutorials/ui/control_node_gallery>` +- :doc:`Multiple resolutions <../tutorials/rendering/multiple_resolutions>` + - `All GUI Demos `__ .. rst-class:: classref-reftable-group @@ -1123,7 +1125,9 @@ Sent when the node needs to refresh its theme items. This happens in one of the **NOTIFICATION_SCROLL_BEGIN** = ``47`` -Sent when this node is inside a :ref:`ScrollContainer` which has begun being scrolled. +Sent when this node is inside a :ref:`ScrollContainer` which has begun being scrolled when dragging the scrollable area *with a touch event*. This notification is *not* sent when scrolling by dragging the scrollbar, scrolling with the mouse wheel or scrolling with keyboard/gamepad events. + +\ **Note:** This signal is only emitted on Android or iOS, or on desktop/web platforms when :ref:`ProjectSettings.input_devices/pointing/emulate_touch_from_mouse` is enabled. .. _class_Control_constant_NOTIFICATION_SCROLL_END: @@ -1131,7 +1135,9 @@ Sent when this node is inside a :ref:`ScrollContainer` wh **NOTIFICATION_SCROLL_END** = ``48`` -Sent when this node is inside a :ref:`ScrollContainer` which has stopped being scrolled. +Sent when this node is inside a :ref:`ScrollContainer` which has stopped being scrolled when dragging the scrollable area *with a touch event*. This notification is *not* sent when scrolling by dragging the scrollbar, scrolling with the mouse wheel or scrolling with keyboard/gamepad events. + +\ **Note:** This signal is only emitted on Android or iOS, or on desktop/web platforms when :ref:`ProjectSettings.input_devices/pointing/emulate_touch_from_mouse` is enabled. .. _class_Control_constant_NOTIFICATION_LAYOUT_DIRECTION_CHANGED: diff --git a/classes/class_convexpolygonshape2d.rst b/classes/class_convexpolygonshape2d.rst index ea3766339..468b75688 100644 --- a/classes/class_convexpolygonshape2d.rst +++ b/classes/class_convexpolygonshape2d.rst @@ -23,7 +23,7 @@ A 2D convex polygon shape, intended for use in physics. Used internally in :ref: \ **ConvexPolygonShape2D** is *solid*, which means it detects collisions from objects that are fully inside it, unlike :ref:`ConcavePolygonShape2D` which is hollow. This makes it more suitable for both detection and physics. -\ **Convex decomposition:** A concave polygon can be split up into several convex polygons. This allows dynamic physics bodies to have complex concave collisions (at a performance cost) and can be achieved by using several :ref:`ConvexPolygonShape3D` nodes or by using the :ref:`CollisionPolygon2D` node in ``BUILD_SOLIDS`` mode. To generate a collision polygon from a sprite, select the :ref:`Sprite2D` node, go to the **Sprite2D** menu that appears above the viewport, and choose **Create Polygon2D Sibling**. +\ **Convex decomposition:** A concave polygon can be split up into several convex polygons. This allows dynamic physics bodies to have complex concave collisions (at a performance cost) and can be achieved by using several **ConvexPolygonShape2D** nodes or by using the :ref:`CollisionPolygon2D` node in ``BUILD_SOLIDS`` mode. To generate a collision polygon from a sprite, select the :ref:`Sprite2D` node, go to the **Sprite2D** menu that appears above the viewport, and choose **Create Polygon2D Sibling**. \ **Performance:** **ConvexPolygonShape2D** is faster to check collisions against compared to :ref:`ConcavePolygonShape2D`, but it is slower than primitive collision shapes such as :ref:`CircleShape2D` and :ref:`RectangleShape2D`. Its use should generally be limited to medium-sized objects that cannot have their collision accurately represented by primitive shapes. diff --git a/classes/class_cpuparticles2d.rst b/classes/class_cpuparticles2d.rst index 3759ef7f1..c6b141e1f 100644 --- a/classes/class_cpuparticles2d.rst +++ b/classes/class_cpuparticles2d.rst @@ -229,7 +229,7 @@ Particles are drawn in the order emitted. :ref:`DrawOrder` **DRAW_ORDER_LIFETIME** = ``1`` -Particles are drawn in order of remaining lifetime. +Particles are drawn in order of remaining lifetime. In other words, the particle with the highest lifetime is drawn at the front. .. rst-class:: classref-item-separator diff --git a/classes/class_cpuparticles3d.rst b/classes/class_cpuparticles3d.rst index 8bf5b8dbe..d9fd6fa9e 100644 --- a/classes/class_cpuparticles3d.rst +++ b/classes/class_cpuparticles3d.rst @@ -23,6 +23,13 @@ CPU-based 3D particle node used to create a variety of particle systems and effe See also :ref:`GPUParticles3D`, which provides the same functionality with hardware acceleration, but may not run on older devices. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Particle systems (3D) <../tutorials/3d/particles/index>` + .. rst-class:: classref-reftable-group Properties @@ -238,7 +245,7 @@ Particles are drawn in the order emitted. :ref:`DrawOrder` **DRAW_ORDER_LIFETIME** = ``1`` -Particles are drawn in order of remaining lifetime. +Particles are drawn in order of remaining lifetime. In other words, the particle with the highest lifetime is drawn at the front. .. _class_CPUParticles3D_constant_DRAW_ORDER_VIEW_DEPTH: diff --git a/classes/class_cryptokey.rst b/classes/class_cryptokey.rst index 6758f559b..375c8d835 100644 --- a/classes/class_cryptokey.rst +++ b/classes/class_cryptokey.rst @@ -23,6 +23,13 @@ The CryptoKey class represents a cryptographic key. Keys can be loaded and saved They can be used to generate a self-signed :ref:`X509Certificate` via :ref:`Crypto.generate_self_signed_certificate` and as private key in :ref:`StreamPeerTLS.accept_stream` along with the appropriate certificate. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`SSL certificates <../tutorials/networking/ssl_certificates>` + .. rst-class:: classref-reftable-group Methods diff --git a/classes/class_csgmesh3d.rst b/classes/class_csgmesh3d.rst index c40cba901..c15c1c9b1 100644 --- a/classes/class_csgmesh3d.rst +++ b/classes/class_csgmesh3d.rst @@ -83,7 +83,9 @@ The :ref:`Material` used in drawing the CSG shape. The :ref:`Mesh` resource to use as a CSG shape. -\ **Note:** When using an :ref:`ArrayMesh`, avoid meshes with vertex normals unless a flat shader is required. By default, CSGMesh will ignore the mesh's vertex normals and use a smooth shader calculated using the faces' normals. If a flat shader is required, ensure that all faces' vertex normals are parallel. +\ **Note:** When using an :ref:`ArrayMesh`, all vertex attributes except :ref:`Mesh.ARRAY_VERTEX`, :ref:`Mesh.ARRAY_NORMAL` and :ref:`Mesh.ARRAY_TEX_UV` are left unused. Only :ref:`Mesh.ARRAY_VERTEX` and :ref:`Mesh.ARRAY_TEX_UV` will be passed to the GPU. + +\ :ref:`Mesh.ARRAY_NORMAL` is only used to determine which faces require the use of flat shading. By default, CSGMesh will ignore the mesh's vertex normals, recalculate them for each vertex and use a smooth shader. If a flat shader is required for a face, ensure that all vertex normals of the face are approximately equal. .. |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_cylindershape3d.rst b/classes/class_cylindershape3d.rst index ff1ad2ebc..e0109264e 100644 --- a/classes/class_cylindershape3d.rst +++ b/classes/class_cylindershape3d.rst @@ -19,11 +19,11 @@ A 3D cylinder shape used for physics collision. Description ----------- -A 2D capsule shape, intended for use in physics. Usually used to provide a shape for a :ref:`CollisionShape3D`. +A 3D cylinder shape, intended for use in physics. Usually used to provide a shape for a :ref:`CollisionShape3D`. \ **Note:** There are several known bugs with cylinder collision shapes. Using :ref:`CapsuleShape3D` or :ref:`BoxShape3D` instead is recommended. -\ **Performance:** **CylinderShape3D** is fast to check collisions against, but it is slower than :ref:`CapsuleShape3D`, :ref:`BoxShape3D`, and **CylinderShape3D**. +\ **Performance:** **CylinderShape3D** is fast to check collisions against, but it is slower than :ref:`CapsuleShape3D`, :ref:`BoxShape3D`, and :ref:`SphereShape3D`. .. rst-class:: classref-introduction-group diff --git a/classes/class_dictionary.rst b/classes/class_dictionary.rst index a78776a0b..f1430ead6 100644 --- a/classes/class_dictionary.rst +++ b/classes/class_dictionary.rst @@ -528,6 +528,48 @@ void **merge** **(** :ref:`Dictionary` dictionary, :ref:`bool< Adds entries from ``dictionary`` to this dictionary. By default, duplicate keys are not copied over, unless ``overwrite`` is ``true``. + +.. tabs:: + + .. code-tab:: gdscript + + var dict = { "item": "sword", "quantity": 2 } + var other_dict = { "quantity": 15, "color": "silver" } + + # Overwriting of existing keys is disabled by default. + dict.merge(other_dict) + print(dict) # { "item": "sword", "quantity": 2, "color": "silver" } + + # With overwriting of existing keys enabled. + dict.merge(other_dict, true) + print(dict) # { "item": "sword", "quantity": 15, "color": "silver" } + + .. code-tab:: csharp + + var dict = new Godot.Collections.Dictionary + { + ["item"] = "sword", + ["quantity"] = 2, + }; + + var otherDict = new Godot.Collections.Dictionary + { + ["quantity"] = 15, + ["color"] = "silver", + }; + + // Overwriting of existing keys is disabled by default. + dict.Merge(otherDict); + GD.Print(dict); // { "item": "sword", "quantity": 2, "color": "silver" } + + // With overwriting of existing keys enabled. + dict.Merge(otherDict, true); + GD.Print(dict); // { "item": "sword", "quantity": 15, "color": "silver" } + + + +\ **Note:** :ref:`merge` is *not* recursive. Nested dictionaries are considered as keys that can be overwritten or not depending on the value of ``overwrite``, but they will never be merged together. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_directionallight3d.rst b/classes/class_directionallight3d.rst index cd0eb3526..72b07122b 100644 --- a/classes/class_directionallight3d.rst +++ b/classes/class_directionallight3d.rst @@ -26,7 +26,9 @@ A directional light is a type of :ref:`Light3D` node that models Tutorials --------- -- :doc:`Lights and shadows <../tutorials/3d/lights_and_shadows>` +- :doc:`3D lights and shadows <../tutorials/3d/lights_and_shadows>` + +- :doc:`Faking global illumination <../tutorials/3d/global_illumination/faking_global_illumination>` .. rst-class:: classref-reftable-group diff --git a/classes/class_displayserver.rst b/classes/class_displayserver.rst index 6dc268369..314fc5728 100644 --- a/classes/class_displayserver.rst +++ b/classes/class_displayserver.rst @@ -1134,7 +1134,7 @@ enum **VSyncMode**: :ref:`VSyncMode` **VSYNC_DISABLED** = ``0`` -No vertical synchronization, which means the engine will display frames as fast as possible (tearing may be visible). Framerate is unlimited (nonwithstanding :ref:`Engine.max_fps`). +No vertical synchronization, which means the engine will display frames as fast as possible (tearing may be visible). Framerate is unlimited (notwithstanding :ref:`Engine.max_fps`). .. _class_DisplayServer_constant_VSYNC_ENABLED: @@ -1142,7 +1142,7 @@ No vertical synchronization, which means the engine will display frames as fast :ref:`VSyncMode` **VSYNC_ENABLED** = ``1`` -Default vertical synchronization mode, the image is displayed only on vertical blanking intervals (no tearing is visible). Framerate is limited by the monitor refresh rate (nonwithstanding :ref:`Engine.max_fps`). +Default vertical synchronization mode, the image is displayed only on vertical blanking intervals (no tearing is visible). Framerate is limited by the monitor refresh rate (notwithstanding :ref:`Engine.max_fps`). .. _class_DisplayServer_constant_VSYNC_ADAPTIVE: @@ -1150,7 +1150,7 @@ Default vertical synchronization mode, the image is displayed only on vertical b :ref:`VSyncMode` **VSYNC_ADAPTIVE** = ``2`` -Behaves like :ref:`VSYNC_DISABLED` when the framerate drops below the screen's refresh rate to reduce stuttering (tearing may be visible). Otherwise, vertical synchronization is enabled to avoid tearing. Framerate is limited by the monitor refresh rate (nonwithstanding :ref:`Engine.max_fps`). Behaves like :ref:`VSYNC_ENABLED` when using the Compatibility rendering method. +Behaves like :ref:`VSYNC_DISABLED` when the framerate drops below the screen's refresh rate to reduce stuttering (tearing may be visible). Otherwise, vertical synchronization is enabled to avoid tearing. Framerate is limited by the monitor refresh rate (notwithstanding :ref:`Engine.max_fps`). Behaves like :ref:`VSYNC_ENABLED` when using the Compatibility rendering method. .. _class_DisplayServer_constant_VSYNC_MAILBOX: @@ -1158,7 +1158,7 @@ Behaves like :ref:`VSYNC_DISABLED` :ref:`VSyncMode` **VSYNC_MAILBOX** = ``3`` -Displays the most recent image in the queue on vertical blanking intervals, while rendering to the other images (no tearing is visible). Framerate is unlimited (nonwithstanding :ref:`Engine.max_fps`). +Displays the most recent image in the queue on vertical blanking intervals, while rendering to the other images (no tearing is visible). Framerate is unlimited (notwithstanding :ref:`Engine.max_fps`). Although not guaranteed, the images can be rendered as fast as possible, which may reduce input lag (also called "Fast" V-Sync mode). :ref:`VSYNC_MAILBOX` works best when at least twice as many frames as the display refresh rate are rendered. Behaves like :ref:`VSYNC_ENABLED` when using the Compatibility rendering method. @@ -2475,7 +2475,7 @@ Returns ``true`` if OS supports dark mode. :ref:`bool` **is_touchscreen_available** **(** **)** |const| -Returns ``true`` if touch events are available (Android or iOS), the capability is detected on the Webplatform or if :ref:`ProjectSettings.input_devices/pointing/emulate_touch_from_mouse` is ``true``. +Returns ``true`` if touch events are available (Android or iOS), the capability is detected on the Web platform or if :ref:`ProjectSettings.input_devices/pointing/emulate_touch_from_mouse` is ``true``. .. rst-class:: classref-item-separator diff --git a/classes/class_dtlsserver.rst b/classes/class_dtlsserver.rst index 245a8640e..030c6b143 100644 --- a/classes/class_dtlsserver.rst +++ b/classes/class_dtlsserver.rst @@ -66,7 +66,7 @@ Below a small example of how to use it: { private DtlsServer _dtls = new DtlsServer(); private UdpServer _server = new UdpServer(); - private Godot.Collections.Array _peers = new Godot.Collections.Array(); + private Godot.Collections.Array _peers = new Godot.Collections.Array(); public override void _Ready() { @@ -80,8 +80,8 @@ Below a small example of how to use it: { while (Server.IsConnectionAvailable()) { - PacketPeerUDP peer = _server.TakeConnection(); - PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer); + PacketPeerUdp peer = _server.TakeConnection(); + PacketPeerDtls dtlsPeer = _dtls.TakeConnection(peer); if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking) { continue; // It is normal that 50% of the connections fails due to cookie exchange. diff --git a/classes/class_editordebuggerplugin.rst b/classes/class_editordebuggerplugin.rst index 043698ed4..021916981 100644 --- a/classes/class_editordebuggerplugin.rst +++ b/classes/class_editordebuggerplugin.rst @@ -151,7 +151,7 @@ Returns the :ref:`EditorDebuggerSession` with the g Returns an array of :ref:`EditorDebuggerSession` currently available to this debugger plugin. -Note: Not sessions in the array may be inactive, check their state via :ref:`EditorDebuggerSession.is_active` +\ **Note:** Not sessions in the array may be inactive, check their state via :ref:`EditorDebuggerSession.is_active` .. |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_editorexportplatform.rst b/classes/class_editorexportplatform.rst index 36a14be02..82f76535b 100644 --- a/classes/class_editorexportplatform.rst +++ b/classes/class_editorexportplatform.rst @@ -25,6 +25,13 @@ Base resource that provides the functionality of exporting a release build of a Used in scripting by :ref:`EditorExportPlugin` to configure platform-specific customization of scenes and resources. See :ref:`EditorExportPlugin._begin_customize_scenes` and :ref:`EditorExportPlugin._begin_customize_resources` for more details. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Console support in Godot <../tutorials/platform/consoles>` + .. |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.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` diff --git a/classes/class_editorexportplatformandroid.rst b/classes/class_editorexportplatformandroid.rst index a04c4ca35..631d3ac4d 100644 --- a/classes/class_editorexportplatformandroid.rst +++ b/classes/class_editorexportplatformandroid.rst @@ -23,6 +23,8 @@ Tutorials - :doc:`Gradle builds for Android <../tutorials/export/android_gradle_build>` +- :doc:`Android plugins documentation index <../tutorials/platform/index>` + .. rst-class:: classref-reftable-group Properties @@ -256,6 +258,8 @@ Properties +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`permissions/persistent_activity` | +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`permissions/post_notifications` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`permissions/process_outgoing_calls` | +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`permissions/read_calendar` | @@ -794,7 +798,13 @@ If ``true``, package signing is enabled. :ref:`String` **package/unique_name** -Unique application identifier in a reverse-DNS format, can only contain alphanumeric characters (``A-Z``, ``a-z``, and ``0-9``), hyphens (``-``), and periods (``.``). +Unique application identifier in a reverse-DNS format. The reverse DNS format should preferably match a domain name you control, but this is not strictly required. For instance, if you own ``example.com``, your package unique name should preferably be of the form ``com.example.mygame``. This identifier can only contain lowercase alphanumeric characters (``a-z``, and ``0-9``), underscores (``_``), and periods (``.``). Each component of the reverse DNS format must start with a letter: for instance, ``com.example.8game`` is not valid. + +If ``$genname`` is present in the value, it will be replaced by the project name converted to lowercase. If there are invalid characters in the project name, they will be stripped. If all characters in the project name are stripped, ``$genname`` is replaced by ``noname``. + +\ **Note:** Changing the package name will cause the package to be considered as a new package, with its own installation and data paths. The new package won't be usable to update existing installations. + +\ **Note:** When publishing to Google Play, the package name must be *globally* unique. This means no other apps published on Google Play must be using the same package name as yours. Otherwise, you'll be prevented from publishing your app on Google Play. .. rst-class:: classref-item-separator @@ -1786,6 +1796,18 @@ Deprecated in API level 15. ---- +.. _class_EditorExportPlatformAndroid_property_permissions/post_notifications: + +.. rst-class:: classref-property + +:ref:`bool` **permissions/post_notifications** + +Allow an application to post notifications. Added in API level 33. See `Notification runtime permission `__. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorExportPlatformAndroid_property_permissions/process_outgoing_calls: .. rst-class:: classref-property diff --git a/classes/class_editorexportplatformios.rst b/classes/class_editorexportplatformios.rst index 72ec30187..c56ca7eb7 100644 --- a/classes/class_editorexportplatformios.rst +++ b/classes/class_editorexportplatformios.rst @@ -21,6 +21,8 @@ Tutorials - :doc:`Exporting for iOS <../tutorials/export/exporting_for_ios>` +- :doc:`iOS plugins documentation index <../tutorials/platform/ios/index>` + .. rst-class:: classref-reftable-group Properties @@ -29,119 +31,413 @@ Properties .. table:: :widths: auto - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`application/app_store_team_id` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`application/bundle_identifier` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`application/code_sign_identity_debug` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`application/code_sign_identity_release` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`application/export_method_debug` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`application/export_method_release` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`application/icon_interpolation` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`application/launch_screens_interpolation` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`application/provisioning_profile_uuid_debug` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`application/provisioning_profile_uuid_release` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`application/short_version` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`application/signature` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`application/targeted_device_family` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`application/version` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`architectures/arm64` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`capabilities/access_wifi` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`capabilities/push_notifications` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`custom_template/debug` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`custom_template/release` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/app_store_1024x1024` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/ipad_76x76` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/ipad_152x152` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/ipad_167x167` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/iphone_120x120` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/iphone_180x180` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/notification_40x40` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/notification_60x60` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/settings_58x58` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/settings_87x87` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/spotlight_40x40` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`icons/spotlight_80x80` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`landscape_launch_screens/ipad_1024x768` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`landscape_launch_screens/ipad_2048x1536` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`landscape_launch_screens/iphone_2208x1242` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`landscape_launch_screens/iphone_2436x1125` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`portrait_launch_screens/ipad_768x1024` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`portrait_launch_screens/ipad_1536x2048` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`portrait_launch_screens/iphone_640x960` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`portrait_launch_screens/iphone_640x1136` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`portrait_launch_screens/iphone_750x1334` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`portrait_launch_screens/iphone_1125x2436` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`portrait_launch_screens/iphone_1242x2208` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`privacy/camera_usage_description` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`privacy/camera_usage_description_localized` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`privacy/microphone_usage_description` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`privacy/microphone_usage_description_localized` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`privacy/photolibrary_usage_description` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`privacy/photolibrary_usage_description_localized` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`storyboard/custom_bg_color` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`storyboard/custom_image@2x` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`storyboard/custom_image@3x` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`storyboard/image_scale_mode` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`storyboard/use_custom_bg_color` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`storyboard/use_launch_screen_storyboard` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`user_data/accessible_from_files_app` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`user_data/accessible_from_itunes_sharing` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`application/app_store_team_id` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`application/bundle_identifier` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`application/code_sign_identity_debug` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`application/code_sign_identity_release` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`application/export_method_debug` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`application/export_method_release` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`application/icon_interpolation` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`application/launch_screens_interpolation` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`application/provisioning_profile_uuid_debug` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`application/provisioning_profile_uuid_release` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`application/short_version` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`application/signature` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`application/targeted_device_family` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`application/version` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`architectures/arm64` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`capabilities/access_wifi` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`capabilities/push_notifications` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`custom_template/debug` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`custom_template/release` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/app_store_1024x1024` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/ipad_76x76` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/ipad_152x152` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/ipad_167x167` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/iphone_120x120` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/iphone_180x180` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/notification_40x40` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/notification_60x60` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/settings_58x58` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/settings_87x87` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/spotlight_40x40` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`icons/spotlight_80x80` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`landscape_launch_screens/ipad_1024x768` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`landscape_launch_screens/ipad_2048x1536` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`landscape_launch_screens/iphone_2208x1242` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`landscape_launch_screens/iphone_2436x1125` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`portrait_launch_screens/ipad_768x1024` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`portrait_launch_screens/ipad_1536x2048` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`portrait_launch_screens/iphone_640x960` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`portrait_launch_screens/iphone_640x1136` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`portrait_launch_screens/iphone_750x1334` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`portrait_launch_screens/iphone_1125x2436` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`portrait_launch_screens/iphone_1242x2208` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/active_keyboard_access_reasons` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`privacy/camera_usage_description` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`privacy/camera_usage_description_localized` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/advertising_data/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/advertising_data/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/advertising_data/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/advertising_data/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/audio_data/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/audio_data/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/audio_data/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/audio_data/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/browsing_history/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/browsing_history/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/browsing_history/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/browsing_history/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/coarse_location/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/coarse_location/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/coarse_location/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/coarse_location/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/contacts/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/contacts/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/contacts/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/contacts/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/crash_data/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/crash_data/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/crash_data/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/crash_data/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/credit_info/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/credit_info/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/credit_info/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/credit_info/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/customer_support/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/customer_support/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/customer_support/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/customer_support/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/device_id/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/device_id/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/device_id/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/device_id/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/email_address/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/email_address/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/email_address/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/email_address/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/emails_or_text_messages/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/emails_or_text_messages/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/emails_or_text_messages/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/emails_or_text_messages/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/environment_scanning/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/environment_scanning/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/environment_scanning/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/environment_scanning/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/fitness/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/fitness/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/fitness/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/fitness/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/gameplay_content/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/gameplay_content/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/gameplay_content/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/gameplay_content/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/hands/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/hands/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/hands/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/hands/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/head/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/head/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/head/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/head/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/health/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/health/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/health/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/health/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/name/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/name/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/name/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/name/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_contact_info/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/other_contact_info/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_contact_info/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_contact_info/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_data_types/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/other_data_types/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_data_types/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_data_types/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_diagnostic_data/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/other_diagnostic_data/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_diagnostic_data/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_diagnostic_data/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_financial_info/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/other_financial_info/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_financial_info/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_financial_info/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_usage_data/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/other_usage_data/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_usage_data/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_usage_data/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_user_content/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/other_user_content/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_user_content/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/other_user_content/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/payment_info/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/payment_info/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/payment_info/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/payment_info/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/performance_data/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/performance_data/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/performance_data/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/performance_data/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/phone_number/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/phone_number/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/phone_number/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/phone_number/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/photos_or_videos/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/photos_or_videos/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/photos_or_videos/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/photos_or_videos/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/physical_address/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/physical_address/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/physical_address/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/physical_address/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/precise_location/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/precise_location/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/precise_location/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/precise_location/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/product_interaction/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/product_interaction/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/product_interaction/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/product_interaction/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/purchase_history/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/purchase_history/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/purchase_history/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/purchase_history/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/search_hhistory/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/search_hhistory/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/search_hhistory/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/search_hhistory/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/sensitive_info/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/sensitive_info/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/sensitive_info/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/sensitive_info/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/user_id/collected` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/collected_data/user_id/collection_purposes` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/user_id/linked_to_user` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/collected_data/user_id/used_for_tracking` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/disk_space_access_reasons` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/file_timestamp_access_reasons` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`privacy/microphone_usage_description` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`privacy/microphone_usage_description_localized` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`privacy/photolibrary_usage_description` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`privacy/photolibrary_usage_description_localized` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/system_boot_time_access_reasons` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`privacy/tracking_domains` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`privacy/tracking_enabled` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`privacy/user_defaults_access_reasons` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`storyboard/custom_bg_color` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`storyboard/custom_image@2x` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`storyboard/custom_image@3x` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`storyboard/image_scale_mode` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`storyboard/use_custom_bg_color` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`storyboard/use_launch_screen_storyboard` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`user_data/accessible_from_files_app` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`user_data/accessible_from_itunes_sharing` | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -660,6 +956,18 @@ Application launch screen image file. If left empty, it will fallback to :ref:`P ---- +.. _class_EditorExportPlatformIOS_property_privacy/active_keyboard_access_reasons: + +.. rst-class:: classref-property + +:ref:`int` **privacy/active_keyboard_access_reasons** + +The reasons your app use active keyboard API. See `Describing use of required reason API `__. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorExportPlatformIOS_property_privacy/camera_usage_description: .. rst-class:: classref-property @@ -684,6 +992,1710 @@ A message displayed when requesting access to the device's camera (localized). ---- +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/advertising_data/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/advertising_data/collected** + +Indicates whether your app collects advertising data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/advertising_data/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/advertising_data/collection_purposes** + +The reasons your app collects advertising data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/advertising_data/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/advertising_data/linked_to_user** + +Indicates whether your app links advertising data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/advertising_data/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/advertising_data/used_for_tracking** + +Indicates whether your app uses advertising data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/audio_data/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/audio_data/collected** + +Indicates whether your app collects audio data data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/audio_data/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/audio_data/collection_purposes** + +The reasons your app collects audio data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/audio_data/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/audio_data/linked_to_user** + +Indicates whether your app links audio data data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/audio_data/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/audio_data/used_for_tracking** + +Indicates whether your app uses audio data data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/browsing_history/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/browsing_history/collected** + +Indicates whether your app collects browsing history. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/browsing_history/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/browsing_history/collection_purposes** + +The reasons your app collects browsing history. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/browsing_history/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/browsing_history/linked_to_user** + +Indicates whether your app links browsing history to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/browsing_history/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/browsing_history/used_for_tracking** + +Indicates whether your app uses browsing history for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/coarse_location/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/coarse_location/collected** + +Indicates whether your app collects coarse location data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/coarse_location/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/coarse_location/collection_purposes** + +The reasons your app collects coarse location data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/coarse_location/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/coarse_location/linked_to_user** + +Indicates whether your app links coarse location data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/coarse_location/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/coarse_location/used_for_tracking** + +Indicates whether your app uses coarse location data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/contacts/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/contacts/collected** + +Indicates whether your app collects contacts. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/contacts/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/contacts/collection_purposes** + +The reasons your app collects contacts. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/contacts/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/contacts/linked_to_user** + +Indicates whether your app links contacts to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/contacts/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/contacts/used_for_tracking** + +Indicates whether your app uses contacts for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/crash_data/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/crash_data/collected** + +Indicates whether your app collects crash data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/crash_data/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/crash_data/collection_purposes** + +The reasons your app collects crash data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/crash_data/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/crash_data/linked_to_user** + +Indicates whether your app links crash data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/crash_data/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/crash_data/used_for_tracking** + +Indicates whether your app uses crash data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/credit_info/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/credit_info/collected** + +Indicates whether your app collects credit information. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/credit_info/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/credit_info/collection_purposes** + +The reasons your app collects credit information. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/credit_info/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/credit_info/linked_to_user** + +Indicates whether your app links credit information to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/credit_info/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/credit_info/used_for_tracking** + +Indicates whether your app uses credit information for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/customer_support/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/customer_support/collected** + +Indicates whether your app collects customer support data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/customer_support/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/customer_support/collection_purposes** + +The reasons your app collects customer support data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/customer_support/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/customer_support/linked_to_user** + +Indicates whether your app links customer support data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/customer_support/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/customer_support/used_for_tracking** + +Indicates whether your app uses customer support data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/device_id/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/device_id/collected** + +Indicates whether your app collects device IDs. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/device_id/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/device_id/collection_purposes** + +The reasons your app collects device IDs. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/device_id/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/device_id/linked_to_user** + +Indicates whether your app links device IDs to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/device_id/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/device_id/used_for_tracking** + +Indicates whether your app uses device IDs for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/email_address/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/email_address/collected** + +Indicates whether your app collects email address. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/email_address/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/email_address/collection_purposes** + +The reasons your app collects email address. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/email_address/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/email_address/linked_to_user** + +Indicates whether your app links email address to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/email_address/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/email_address/used_for_tracking** + +Indicates whether your app uses email address for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/emails_or_text_messages/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/emails_or_text_messages/collected** + +Indicates whether your app collects emails or text messages. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/emails_or_text_messages/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/emails_or_text_messages/collection_purposes** + +The reasons your app collects emails or text messages. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/emails_or_text_messages/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/emails_or_text_messages/linked_to_user** + +Indicates whether your app links emails or text messages to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/emails_or_text_messages/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/emails_or_text_messages/used_for_tracking** + +Indicates whether your app uses emails or text messages for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/environment_scanning/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/environment_scanning/collected** + +Indicates whether your app collects environment scanning data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/environment_scanning/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/environment_scanning/collection_purposes** + +The reasons your app collects environment scanning data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/environment_scanning/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/environment_scanning/linked_to_user** + +Indicates whether your app links environment scanning data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/environment_scanning/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/environment_scanning/used_for_tracking** + +Indicates whether your app uses environment scanning data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/fitness/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/fitness/collected** + +Indicates whether your app collects fitness and exercise data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/fitness/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/fitness/collection_purposes** + +The reasons your app collects fitness and exercise data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/fitness/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/fitness/linked_to_user** + +Indicates whether your app links fitness and exercise data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/fitness/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/fitness/used_for_tracking** + +Indicates whether your app uses fitness and exercise data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/gameplay_content/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/gameplay_content/collected** + +Indicates whether your app collects gameplay content. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/gameplay_content/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/gameplay_content/collection_purposes** + +The reasons your app collects gameplay content. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/gameplay_content/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/gameplay_content/linked_to_user** + +Indicates whether your app links gameplay content to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/gameplay_content/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/gameplay_content/used_for_tracking** + +Indicates whether your app uses gameplay content for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/hands/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/hands/collected** + +Indicates whether your app collects user's hand structure and hand movements. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/hands/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/hands/collection_purposes** + +The reasons your app collects user's hand structure and hand movements. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/hands/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/hands/linked_to_user** + +Indicates whether your app links user's hand structure and hand movements to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/hands/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/hands/used_for_tracking** + +Indicates whether your app uses user's hand structure and hand movements for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/head/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/head/collected** + +Indicates whether your app collects user's head movement. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/head/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/head/collection_purposes** + +The reasons your app collects user's head movement. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/head/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/head/linked_to_user** + +Indicates whether your app links user's head movement to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/head/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/head/used_for_tracking** + +Indicates whether your app uses user's head movement for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/health/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/health/collected** + +Indicates whether your app collects health and medical data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/health/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/health/collection_purposes** + +The reasons your app collects health and medical data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/health/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/health/linked_to_user** + +Indicates whether your app links health and medical data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/health/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/health/used_for_tracking** + +Indicates whether your app uses health and medical data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/name/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/name/collected** + +Indicates whether your app collects user's name. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/name/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/name/collection_purposes** + +The reasons your app collects user's name. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/name/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/name/linked_to_user** + +Indicates whether your app links user's name to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/name/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/name/used_for_tracking** + +Indicates whether your app uses user's name for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_contact_info/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_contact_info/collected** + +Indicates whether your app collects any other contact information. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_contact_info/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/other_contact_info/collection_purposes** + +The reasons your app collects any other contact information. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_contact_info/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_contact_info/linked_to_user** + +Indicates whether your app links any other contact information to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_contact_info/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_contact_info/used_for_tracking** + +Indicates whether your app uses any other contact information for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_data_types/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_data_types/collected** + +Indicates whether your app collects any other data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_data_types/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/other_data_types/collection_purposes** + +The reasons your app collects any other data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_data_types/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_data_types/linked_to_user** + +Indicates whether your app links any other data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_data_types/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_data_types/used_for_tracking** + +Indicates whether your app uses any other data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_diagnostic_data/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_diagnostic_data/collected** + +Indicates whether your app collects any other diagnostic data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_diagnostic_data/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/other_diagnostic_data/collection_purposes** + +The reasons your app collects any other diagnostic data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_diagnostic_data/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_diagnostic_data/linked_to_user** + +Indicates whether your app links any other diagnostic data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_diagnostic_data/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_diagnostic_data/used_for_tracking** + +Indicates whether your app uses any other diagnostic data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_financial_info/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_financial_info/collected** + +Indicates whether your app collects any other financial information. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_financial_info/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/other_financial_info/collection_purposes** + +The reasons your app collects any other financial information. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_financial_info/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_financial_info/linked_to_user** + +Indicates whether your app links any other financial information to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_financial_info/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_financial_info/used_for_tracking** + +Indicates whether your app uses any other financial information for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_usage_data/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_usage_data/collected** + +Indicates whether your app collects any other usage data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_usage_data/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/other_usage_data/collection_purposes** + +The reasons your app collects any other usage data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_usage_data/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_usage_data/linked_to_user** + +Indicates whether your app links any other usage data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_usage_data/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_usage_data/used_for_tracking** + +Indicates whether your app uses any other usage data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_user_content/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_user_content/collected** + +Indicates whether your app collects any other user generated content. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_user_content/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/other_user_content/collection_purposes** + +The reasons your app collects any other user generated content. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_user_content/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_user_content/linked_to_user** + +Indicates whether your app links any other user generated content to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/other_user_content/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/other_user_content/used_for_tracking** + +Indicates whether your app uses any other user generated content for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/payment_info/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/payment_info/collected** + +Indicates whether your app collects payment information. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/payment_info/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/payment_info/collection_purposes** + +The reasons your app collects payment information. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/payment_info/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/payment_info/linked_to_user** + +Indicates whether your app links payment information to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/payment_info/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/payment_info/used_for_tracking** + +Indicates whether your app uses payment information for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/performance_data/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/performance_data/collected** + +Indicates whether your app collects performance data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/performance_data/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/performance_data/collection_purposes** + +The reasons your app collects performance data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/performance_data/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/performance_data/linked_to_user** + +Indicates whether your app links performance data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/performance_data/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/performance_data/used_for_tracking** + +Indicates whether your app uses performance data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/phone_number/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/phone_number/collected** + +Indicates whether your app collects phone number. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/phone_number/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/phone_number/collection_purposes** + +The reasons your app collects phone number. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/phone_number/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/phone_number/linked_to_user** + +Indicates whether your app links phone number to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/phone_number/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/phone_number/used_for_tracking** + +Indicates whether your app uses phone number for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/photos_or_videos/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/photos_or_videos/collected** + +Indicates whether your app collects photos or videos. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/photos_or_videos/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/photos_or_videos/collection_purposes** + +The reasons your app collects photos or videos. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/photos_or_videos/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/photos_or_videos/linked_to_user** + +Indicates whether your app links photos or videos to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/photos_or_videos/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/photos_or_videos/used_for_tracking** + +Indicates whether your app uses photos or videos for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/physical_address/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/physical_address/collected** + +Indicates whether your app collects physical address. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/physical_address/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/physical_address/collection_purposes** + +The reasons your app collects physical address. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/physical_address/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/physical_address/linked_to_user** + +Indicates whether your app links physical address to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/physical_address/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/physical_address/used_for_tracking** + +Indicates whether your app uses physical address for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/precise_location/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/precise_location/collected** + +Indicates whether your app collects precise location data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/precise_location/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/precise_location/collection_purposes** + +The reasons your app collects precise location data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/precise_location/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/precise_location/linked_to_user** + +Indicates whether your app links precise location data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/precise_location/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/precise_location/used_for_tracking** + +Indicates whether your app uses precise location data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/product_interaction/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/product_interaction/collected** + +Indicates whether your app collects product interaction data. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/product_interaction/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/product_interaction/collection_purposes** + +The reasons your app collects product interaction data. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/product_interaction/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/product_interaction/linked_to_user** + +Indicates whether your app links product interaction data to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/product_interaction/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/product_interaction/used_for_tracking** + +Indicates whether your app uses product interaction data for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/purchase_history/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/purchase_history/collected** + +Indicates whether your app collects purchase history. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/purchase_history/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/purchase_history/collection_purposes** + +The reasons your app collects purchase history. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/purchase_history/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/purchase_history/linked_to_user** + +Indicates whether your app links purchase history to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/purchase_history/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/purchase_history/used_for_tracking** + +Indicates whether your app uses purchase history for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/search_hhistory/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/search_hhistory/collected** + +Indicates whether your app collects search history. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/search_hhistory/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/search_hhistory/collection_purposes** + +The reasons your app collects search history. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/search_hhistory/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/search_hhistory/linked_to_user** + +Indicates whether your app links search history to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/search_hhistory/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/search_hhistory/used_for_tracking** + +Indicates whether your app uses search history for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/sensitive_info/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/sensitive_info/collected** + +Indicates whether your app collects sensitive user information. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/sensitive_info/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/sensitive_info/collection_purposes** + +The reasons your app collects sensitive user information. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/sensitive_info/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/sensitive_info/linked_to_user** + +Indicates whether your app links sensitive user information to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/sensitive_info/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/sensitive_info/used_for_tracking** + +Indicates whether your app uses sensitive user information for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/user_id/collected: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/user_id/collected** + +Indicates whether your app collects user IDs. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/user_id/collection_purposes: + +.. rst-class:: classref-property + +:ref:`int` **privacy/collected_data/user_id/collection_purposes** + +The reasons your app collects user IDs. See `Describing data use in privacy manifests `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/user_id/linked_to_user: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/user_id/linked_to_user** + +Indicates whether your app links user IDs to the user's identity. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/collected_data/user_id/used_for_tracking: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/collected_data/user_id/used_for_tracking** + +Indicates whether your app uses user IDs for tracking. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/disk_space_access_reasons: + +.. rst-class:: classref-property + +:ref:`int` **privacy/disk_space_access_reasons** + +The reasons your app use free disk space API. See `Describing use of required reason API `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/file_timestamp_access_reasons: + +.. rst-class:: classref-property + +:ref:`int` **privacy/file_timestamp_access_reasons** + +The reasons your app use file timestamp/metadata API. See `Describing use of required reason API `__. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorExportPlatformIOS_property_privacy/microphone_usage_description: .. rst-class:: classref-property @@ -732,6 +2744,54 @@ A message displayed when requesting access to the user's photo library (localize ---- +.. _class_EditorExportPlatformIOS_property_privacy/system_boot_time_access_reasons: + +.. rst-class:: classref-property + +:ref:`int` **privacy/system_boot_time_access_reasons** + +The reasons your app use system boot time / absolute time API. See `Describing use of required reason API `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/tracking_domains: + +.. rst-class:: classref-property + +:ref:`PackedStringArray` **privacy/tracking_domains** + +The list of internet domains your app connects to that engage in tracking. See `Privacy manifest files `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/tracking_enabled: + +.. rst-class:: classref-property + +:ref:`bool` **privacy/tracking_enabled** + +Indicates whether your app uses data for tracking. See `Privacy manifest files `__. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorExportPlatformIOS_property_privacy/user_defaults_access_reasons: + +.. rst-class:: classref-property + +:ref:`int` **privacy/user_defaults_access_reasons** + +The reasons your app use user defaults API. See `Describing use of required reason API `__. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorExportPlatformIOS_property_storyboard/custom_bg_color: .. rst-class:: classref-property diff --git a/classes/class_editorexportplatformmacos.rst b/classes/class_editorexportplatformmacos.rst index 5fdddf086..8daf4abdc 100644 --- a/classes/class_editorexportplatformmacos.rst +++ b/classes/class_editorexportplatformmacos.rst @@ -424,7 +424,7 @@ Array of the additional command line arguments passed to the code signing tool. :ref:`bool` **codesign/entitlements/address_book** -Enable to allow access to contacts in the user's address book, if it's enabled you should also provide usage message in the ``privacy/address_book_usage_description`` option. See `com.apple.security.personal-information.addressbook `__. +Enable to allow access to contacts in the user's address book, if it's enabled you should also provide usage message in the ``privacy/address_book_usage_description`` option. See `com.apple.security.personal-information.addressbook `__. .. rst-class:: classref-item-separator diff --git a/classes/class_editorexportplatformweb.rst b/classes/class_editorexportplatformweb.rst index 59a82d59b..bfd0d7569 100644 --- a/classes/class_editorexportplatformweb.rst +++ b/classes/class_editorexportplatformweb.rst @@ -16,11 +16,22 @@ Exporter for the Web. .. rst-class:: classref-introduction-group +Description +----------- + +The Web exporter customizes how a web build is handled. In the editor's "Export" window, it is created when adding a new "Web" preset. + +\ **Note:** Godot on Web is rendered inside a ```` tag. Normally, the canvas cannot be positioned or resized manually, but otherwise acts as the main :ref:`Window` of the application. + +.. rst-class:: classref-introduction-group + Tutorials --------- - :doc:`Exporting for the Web <../tutorials/export/exporting_for_web>` +- :doc:`Web documentation index <../tutorials/platform/web/index>` + .. rst-class:: classref-reftable-group Properties @@ -84,7 +95,7 @@ Property Descriptions :ref:`String` **custom_template/debug** -Path to the custom export template. If left empty, default template is used. +File path to the custom export template used for debug builds. If left empty, the default template is used. .. rst-class:: classref-item-separator @@ -96,7 +107,7 @@ Path to the custom export template. If left empty, default template is used. :ref:`String` **custom_template/release** -Path to the custom export template. If left empty, default template is used. +File path to the custom export template used for release builds. If left empty, the default template is used. .. rst-class:: classref-item-separator @@ -108,7 +119,13 @@ Path to the custom export template. If left empty, default template is used. :ref:`int` **html/canvas_resize_policy** -The canvas resize policy determines how the canvas should be resized by Godot. +Determines how the canvas should be resized by Godot. + +- **None:** The canvas is not automatically resized. + +- **Project:** The size of the canvas is dependent on the :ref:`ProjectSettings`. + +- **Adaptive:** The canvas is automatically resized to fit as much of the web page as possible. .. rst-class:: classref-item-separator @@ -120,9 +137,9 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`String` **html/custom_html_shell** -.. container:: contribute +The custom HTML page that wraps the exported web build. If left empty, the default HTML shell is used. - There is currently no description for this property. Please help us by :ref:`contributing one `! +For more information, see the :doc:`Customizing HTML5 Shell <../tutorials/platform/web/customizing_html5_shell>` tutorial. .. rst-class:: classref-item-separator @@ -134,9 +151,9 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`bool` **html/experimental_virtual_keyboard** -.. container:: contribute +If ``true``, embeds support for a virtual keyboard into the web page, which is shown when necessary on touchscreen devices. - There is currently no description for this property. Please help us by :ref:`contributing one `! +\ **Warning:** This feature is experimental and may be changed in a future release. .. rst-class:: classref-item-separator @@ -148,9 +165,7 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`bool` **html/export_icon** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one `! +If ``true``, the project icon will be used as the favicon for this application's web page. .. rst-class:: classref-item-separator @@ -162,9 +177,7 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`bool` **html/focus_canvas_on_start** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one `! +If ``true``, the canvas will be focused as soon as the application is loaded, if the browser window is already in focus. .. rst-class:: classref-item-separator @@ -176,9 +189,9 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`String` **html/head_include** -.. container:: contribute +Additional HTML tags to include inside the ````, such as ```` tags. - There is currently no description for this property. Please help us by :ref:`contributing one `! +\ **Note:** You do not need to add a ```` tag, as it is automatically included based on the project's name. .. rst-class:: classref-item-separator @@ -190,9 +203,7 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`Color<class_Color>` **progressive_web_app/background_color** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +The background color used behind the web application. .. rst-class:: classref-item-separator @@ -204,9 +215,15 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`int<class_int>` **progressive_web_app/display** -.. container:: contribute +The `display mode <https://developer.mozilla.org/en-US/docs/Web/Manifest/display/>`__ to use for this progressive web application. Different browsers and platforms may not behave the same. - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +- **Fullscreen:** Displays the app in fullscreen and hides all of the browser's UI elements. + +- **Standalone:** Displays the app in a separate window and hides all of the browser's UI elements. + +- **Minimal UI:** Displays the app in a separate window and only shows the browser's UI elements for navigation. + +- **Browser:** Displays the app as a normal web page. .. rst-class:: classref-item-separator @@ -218,9 +235,7 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`bool<class_bool>` **progressive_web_app/enabled** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +If ``true``, turns this web build into a `progressive web application <https://en.wikipedia.org/wiki/Progressive_web_app>`__ (PWA). .. rst-class:: classref-item-separator @@ -232,9 +247,9 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`String<class_String>` **progressive_web_app/icon_144x144** -.. container:: contribute +File path to the smallest icon for this web application. If not defined, defaults to the project icon. - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +\ **Note:** If the icon is not 144x144, it will be automatically resized for the final build. .. rst-class:: classref-item-separator @@ -246,9 +261,9 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`String<class_String>` **progressive_web_app/icon_180x180** -.. container:: contribute +File path to the small icon for this web application. If not defined, defaults to the project icon. - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +\ **Note:** If the icon is not 180x180, it will be automatically resized for the final build. .. rst-class:: classref-item-separator @@ -260,9 +275,9 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`String<class_String>` **progressive_web_app/icon_512x512** -.. container:: contribute +File path to the smallest icon for this web application. If not defined, defaults to the project icon. - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +\ **Note:** If the icon is not 512x512, it will be automatically resized for the final build. .. rst-class:: classref-item-separator @@ -274,9 +289,7 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`String<class_String>` **progressive_web_app/offline_page** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +The page to display, should the server hosting the page not be available. This page is saved in the client's machine. .. rst-class:: classref-item-separator @@ -288,9 +301,13 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`int<class_int>` **progressive_web_app/orientation** -.. container:: contribute +The orientation to use when the web application is run through a mobile device. - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +- **Any:** No orientation is forced. + +- **Landscape:** Forces a horizontal layout (wider than it is taller). + +- **Portrait:** Forces a vertical layout (taller than it is wider). .. rst-class:: classref-item-separator @@ -302,9 +319,7 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`bool<class_bool>` **variant/extensions_support** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +If ``true`` enables :ref:`GDExtension<class_GDExtension>` support for this web build. .. rst-class:: classref-item-separator @@ -316,9 +331,7 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`bool<class_bool>` **vram_texture_compression/for_desktop** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +If ``true``, allows textures to be optimized for desktop through the S3TC algorithm. .. rst-class:: classref-item-separator @@ -330,9 +343,7 @@ The canvas resize policy determines how the canvas should be resized by Godot. :ref:`bool<class_bool>` **vram_texture_compression/for_mobile** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +If ``true`` allows textures to be optimized for mobile through the ETC2 algorithm. .. |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_editorexportplugin.rst b/classes/class_editorexportplugin.rst index de5537bda..38be47894 100644 --- a/classes/class_editorexportplugin.rst +++ b/classes/class_editorexportplugin.rst @@ -144,7 +144,7 @@ Implementing this method is required if :ref:`_begin_customize_resources<class_E Customize a scene. If changes are made to it, return the same or a new scene. Otherwise, return ``null``. If a new scene is returned, it is up to you to dispose of the old one. -Implementing this method is required if :ref:`_begin_customize_resources<class_EditorExportPlugin_method__begin_customize_resources>` returns ``true``. +Implementing this method is required if :ref:`_begin_customize_scenes<class_EditorExportPlugin_method__begin_customize_scenes>` returns ``true``. .. rst-class:: classref-item-separator diff --git a/classes/class_editorplugin.rst b/classes/class_editorplugin.rst index 031fad66c..df34fe881 100644 --- a/classes/class_editorplugin.rst +++ b/classes/class_editorplugin.rst @@ -21,6 +21,8 @@ Description Plugins are used by the editor to extend functionality. The most common types of plugins are those which edit a given node or resource type, import plugins and export plugins. See also :ref:`EditorScript<class_EditorScript>` to add functions to the editor. +\ **Note:** Some names in this class contain "left" or "right" (e.g. :ref:`DOCK_SLOT_LEFT_UL<class_EditorPlugin_constant_DOCK_SLOT_LEFT_UL>`). These APIs assume left-to-right layout, and would be backwards when using right-to-left layout. These names are kept for compatibility reasons. + .. rst-class:: classref-introduction-group Tutorials @@ -394,7 +396,7 @@ Dock slot, left side, bottom-right (in default layout includes FileSystem dock). :ref:`DockSlot<enum_EditorPlugin_DockSlot>` **DOCK_SLOT_RIGHT_UL** = ``4`` -Dock slot, right side, upper-left (empty in default layout). +Dock slot, right side, upper-left (in default layout includes Inspector, Node, and History docks). .. _class_EditorPlugin_constant_DOCK_SLOT_RIGHT_BL: @@ -410,7 +412,7 @@ Dock slot, right side, bottom-left (empty in default layout). :ref:`DockSlot<enum_EditorPlugin_DockSlot>` **DOCK_SLOT_RIGHT_UR** = ``6`` -Dock slot, right side, upper-right (in default layout includes Inspector, Node and History docks). +Dock slot, right side, upper-right (empty in default layout). .. _class_EditorPlugin_constant_DOCK_SLOT_RIGHT_BR: diff --git a/classes/class_editorsettings.rst b/classes/class_editorsettings.rst index 23a3756a6..5470aaf29 100644 --- a/classes/class_editorsettings.rst +++ b/classes/class_editorsettings.rst @@ -91,11 +91,11 @@ Properties +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Color<class_Color>` | :ref:`editors/2d/bone_outline_color<class_EditorSettings_property_editors/2d/bone_outline_color>` | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int<class_int>` | :ref:`editors/2d/bone_outline_size<class_EditorSettings_property_editors/2d/bone_outline_size>` | + | :ref:`float<class_float>` | :ref:`editors/2d/bone_outline_size<class_EditorSettings_property_editors/2d/bone_outline_size>` | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Color<class_Color>` | :ref:`editors/2d/bone_selected_color<class_EditorSettings_property_editors/2d/bone_selected_color>` | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int<class_int>` | :ref:`editors/2d/bone_width<class_EditorSettings_property_editors/2d/bone_width>` | + | :ref:`float<class_float>` | :ref:`editors/2d/bone_width<class_EditorSettings_property_editors/2d/bone_width>` | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Color<class_Color>` | :ref:`editors/2d/grid_color<class_EditorSettings_property_editors/2d/grid_color>` | +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -839,10 +839,12 @@ The outline color to use for non-selected bones in the 2D skeleton editor. See a .. rst-class:: classref-property -:ref:`int<class_int>` **editors/2d/bone_outline_size** +:ref:`float<class_float>` **editors/2d/bone_outline_size** The outline size in the 2D skeleton editor (in pixels). See also :ref:`editors/2d/bone_width<class_EditorSettings_property_editors/2d/bone_width>`. +\ **Note:** Changes to this value only apply after modifying a :ref:`Bone2D<class_Bone2D>` node in any way, or closing and reopening the scene. + .. rst-class:: classref-item-separator ---- @@ -863,10 +865,12 @@ The color to use for selected bones in the 2D skeleton editor. See also :ref:`ed .. rst-class:: classref-property -:ref:`int<class_int>` **editors/2d/bone_width** +:ref:`float<class_float>` **editors/2d/bone_width** The bone width in the 2D skeleton editor (in pixels). See also :ref:`editors/2d/bone_outline_size<class_EditorSettings_property_editors/2d/bone_outline_size>`. +\ **Note:** Changes to this value only apply after modifying a :ref:`Bone2D<class_Bone2D>` node in any way, or closing and reopening the scene. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_editorspinslider.rst b/classes/class_editorspinslider.rst index 11b93ab24..8c594f62a 100644 --- a/classes/class_editorspinslider.rst +++ b/classes/class_editorspinslider.rst @@ -21,6 +21,8 @@ Description This :ref:`Control<class_Control>` node is used in the editor's Inspector dock to allow editing of numeric values. Can be used with :ref:`EditorInspectorPlugin<class_EditorInspectorPlugin>` to recreate the same behavior. +If :ref:`step<class_EditorSpinSlider_property_step>` is ``1``, the **EditorSpinSlider** will display up/down arrows, similar to :ref:`SpinBox<class_SpinBox>`. If the :ref:`step<class_EditorSpinSlider_property_step>` is not ``1``, a slider will be displayed instead. + .. rst-class:: classref-reftable-group Properties @@ -137,7 +139,7 @@ If ``true``, the slider will not draw background. - void **set_hide_slider** **(** :ref:`bool<class_bool>` value **)** - :ref:`bool<class_bool>` **is_hiding_slider** **(** **)** -If ``true``, the slider is hidden. +If ``true``, the slider and up/down arrows are hidden. .. rst-class:: classref-item-separator diff --git a/classes/class_editorvcsinterface.rst b/classes/class_editorvcsinterface.rst index 8eef732a3..79af3767e 100644 --- a/classes/class_editorvcsinterface.rst +++ b/classes/class_editorvcsinterface.rst @@ -21,6 +21,13 @@ Description Defines the API that the editor uses to extract information from the underlying VCS. The implementation of this API is included in VCS plugins, which are GDExtension plugins that inherit **EditorVCSInterface** and are attached (on demand) to the singleton instance of **EditorVCSInterface**. Instead of performing the task themselves, all the virtual functions listed below are calling the internally overridden functions in the VCS plugins to provide a plug-n-play experience. A custom VCS plugin is supposed to inherit from **EditorVCSInterface** and override each of these virtual functions. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Version control systems <../tutorials/best_practices/version_control_systems>` + .. rst-class:: classref-reftable-group Methods @@ -565,7 +572,7 @@ Helper function to create a :ref:`Dictionary<class_Dictionary>` used by editor t void **popup_error** **(** :ref:`String<class_String>` msg **)** -Pops up an error message in the edior which is shown as coming from the underlying VCS. Use this to show VCS specific error messages. +Pops up an error message in the editor which is shown as coming from the underlying VCS. Use this to show VCS specific error messages. .. |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_environment.rst b/classes/class_environment.rst index cecf58fcd..7ebdee412 100644 --- a/classes/class_environment.rst +++ b/classes/class_environment.rst @@ -36,7 +36,7 @@ Tutorials - :doc:`Environment and post-processing <../tutorials/3d/environment_and_post_processing>` -- :doc:`Light transport in game engines <../tutorials/3d/high_dynamic_range>` +- :doc:`High dynamic range lighting <../tutorials/3d/high_dynamic_range>` - `3D Material Testers Demo <https://godotengine.org/asset-library/asset/123>`__ diff --git a/classes/class_fileaccess.rst b/classes/class_fileaccess.rst index 14c449da1..7d065286e 100644 --- a/classes/class_fileaccess.rst +++ b/classes/class_fileaccess.rst @@ -220,6 +220,8 @@ Opens the file for read operations. The cursor is positioned at the beginning of Opens the file for write operations. The file is created if it does not exist, and truncated if it does. +\ **Note:** When creating a file it must be in an already existing directory. To recursively create directories for a file path, see :ref:`DirAccess.make_dir_recursive<class_DirAccess_method_make_dir_recursive>`). + .. _class_FileAccess_constant_READ_WRITE: .. rst-class:: classref-enumeration-constant @@ -236,6 +238,8 @@ Opens the file for read and write operations. Does not truncate the file. The cu Opens the file for read and write operations. The file is created if it does not exist, and truncated if it does. The cursor is positioned at the beginning of the file. +\ **Note:** When creating a file it must be in an already existing directory. To recursively create directories for a file path, see :ref:`DirAccess.make_dir_recursive<class_DirAccess_method_make_dir_recursive>`). + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_float.rst b/classes/class_float.rst index a5f5e970f..92266a4f4 100644 --- a/classes/class_float.rst +++ b/classes/class_float.rst @@ -228,7 +228,7 @@ Multiplies each component of the :ref:`Color<class_Color>`, including the alpha, :: - print(1.5 * Color(0.5, 0.5, 0.5)) # Color(0.75, 0.75, 0.75) + print(1.5 * Color(0.5, 0.5, 0.5)) # Prints "(0.75, 0.75, 0.75, 1.5)" .. rst-class:: classref-item-separator diff --git a/classes/class_flowcontainer.rst b/classes/class_flowcontainer.rst index b70fb6d7b..28d5aeeec 100644 --- a/classes/class_flowcontainer.rst +++ b/classes/class_flowcontainer.rst @@ -182,7 +182,7 @@ Theme Property Descriptions :ref:`int<class_int>` **h_separation** = ``4`` -The horizontal separation of children nodes. +The horizontal separation of child nodes. .. rst-class:: classref-item-separator @@ -194,7 +194,7 @@ The horizontal separation of children nodes. :ref:`int<class_int>` **v_separation** = ``4`` -The vertical separation of children nodes. +The vertical separation of child nodes. .. |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_fogvolume.rst b/classes/class_fogvolume.rst index c8a973211..1d67b1a83 100644 --- a/classes/class_fogvolume.rst +++ b/classes/class_fogvolume.rst @@ -25,6 +25,13 @@ Performance of **FogVolume**\ s is directly related to their relative size on th \ **Note:** **FogVolume**\ s only have a visible effect if :ref:`Environment.volumetric_fog_enabled<class_Environment_property_volumetric_fog_enabled>` is ``true``. If you don't want fog to be globally visible (but only within **FogVolume** nodes), set :ref:`Environment.volumetric_fog_density<class_Environment_property_volumetric_fog_density>` to ``0.0``. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Volumetric fog and fog volumes <../tutorials/3d/volumetric_fog>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_font.rst b/classes/class_font.rst index 72017e547..24b3d9c70 100644 --- a/classes/class_font.rst +++ b/classes/class_font.rst @@ -226,7 +226,7 @@ Returns the average font ascent (number of pixels above the baseline). :ref:`Vector2<class_Vector2>` **get_char_size** **(** :ref:`int<class_int>` char, :ref:`int<class_int>` font_size **)** |const| -Returns the size of a character, optionally taking kerning into account if the next character is provided. +Returns the size of a character. Does not take kerning into account. \ **Note:** Do not use this function to calculate width of the string character by character, use :ref:`get_string_size<class_Font_method_get_string_size>` or :ref:`TextLine<class_TextLine>` instead. The height returned is the font height (see also :ref:`get_height<class_Font_method_get_height>`) and has no relation to the glyph height. diff --git a/classes/class_geometryinstance3d.rst b/classes/class_geometryinstance3d.rst index 990f98181..65b20f539 100644 --- a/classes/class_geometryinstance3d.rst +++ b/classes/class_geometryinstance3d.rst @@ -23,6 +23,13 @@ Description Base node for geometry-based visual instances. Shares some common functionality like visibility and custom materials. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Visibility ranges (HLOD) <../tutorials/3d/visibility_ranges>` + .. rst-class:: classref-reftable-group Properties @@ -146,7 +153,7 @@ enum **GIMode**: :ref:`GIMode<enum_GeometryInstance3D_GIMode>` **GI_MODE_DISABLED** = ``0`` -Disabled global illumination mode. Use for dynamic objects that do not contribute to global illumination (such as characters). When using :ref:`VoxelGI<class_VoxelGI>` and SDFGI, the geometry will *receive* indirect lighting and reflections but the geometry will not be considered in GI baking. When using :ref:`LightmapGI<class_LightmapGI>`, the object will receive indirect lighting using lightmap probes instead of using the baked lightmap texture. +Disabled global illumination mode. Use for dynamic objects that do not contribute to global illumination (such as characters). When using :ref:`VoxelGI<class_VoxelGI>` and SDFGI, the geometry will *receive* indirect lighting and reflections but the geometry will not be considered in GI baking. .. _class_GeometryInstance3D_constant_GI_MODE_STATIC: @@ -162,7 +169,7 @@ Baked global illumination mode. Use for static objects that contribute to global :ref:`GIMode<enum_GeometryInstance3D_GIMode>` **GI_MODE_DYNAMIC** = ``2`` -Dynamic global illumination mode. Use for dynamic objects that contribute to global illumination. This GI mode is only effective when using :ref:`VoxelGI<class_VoxelGI>`, but it has a higher performance impact than :ref:`GI_MODE_STATIC<class_GeometryInstance3D_constant_GI_MODE_STATIC>`. When using other GI methods, this will act the same as :ref:`GI_MODE_DISABLED<class_GeometryInstance3D_constant_GI_MODE_DISABLED>`. +Dynamic global illumination mode. Use for dynamic objects that contribute to global illumination. This GI mode is only effective when using :ref:`VoxelGI<class_VoxelGI>`, but it has a higher performance impact than :ref:`GI_MODE_STATIC<class_GeometryInstance3D_constant_GI_MODE_STATIC>`. When using other GI methods, this will act the same as :ref:`GI_MODE_DISABLED<class_GeometryInstance3D_constant_GI_MODE_DISABLED>`. When using :ref:`LightmapGI<class_LightmapGI>`, the object will receive indirect lighting using lightmap probes instead of using the baked lightmap texture. .. rst-class:: classref-item-separator diff --git a/classes/class_gltfnode.rst b/classes/class_gltfnode.rst index 110e379cd..cde38db51 100644 --- a/classes/class_gltfnode.rst +++ b/classes/class_gltfnode.rst @@ -115,7 +115,7 @@ If this GLTF node is a camera, the index of the :ref:`GLTFCamera<class_GLTFCamer - void **set_children** **(** :ref:`PackedInt32Array<class_PackedInt32Array>` value **)** - :ref:`PackedInt32Array<class_PackedInt32Array>` **get_children** **(** **)** -The indices of the children nodes in the :ref:`GLTFState<class_GLTFState>`. If this GLTF node has no children, this will be an empty array. +The indices of the child nodes in the :ref:`GLTFState<class_GLTFState>`. If this GLTF node has no children, this will be an empty array. .. rst-class:: classref-item-separator diff --git a/classes/class_gpuparticles2d.rst b/classes/class_gpuparticles2d.rst index bfad243af..1d7e33665 100644 --- a/classes/class_gpuparticles2d.rst +++ b/classes/class_gpuparticles2d.rst @@ -135,7 +135,7 @@ Particles are drawn in the order emitted. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_LIFETIME** = ``1`` -Particles are drawn in order of remaining lifetime. +Particles are drawn in order of remaining lifetime. In other words, the particle with the highest lifetime is drawn at the front. .. _class_GPUParticles2D_constant_DRAW_ORDER_REVERSE_LIFETIME: @@ -143,7 +143,7 @@ Particles are drawn in order of remaining lifetime. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_REVERSE_LIFETIME** = ``2`` - +Particles are drawn in reverse order of remaining lifetime. In other words, the particle with the lowest lifetime is drawn at the front. .. rst-class:: classref-item-separator diff --git a/classes/class_gpuparticles3d.rst b/classes/class_gpuparticles3d.rst index edc220e0b..b9ee8e493 100644 --- a/classes/class_gpuparticles3d.rst +++ b/classes/class_gpuparticles3d.rst @@ -28,6 +28,8 @@ Use the ``process_material`` property to add a :ref:`ParticleProcessMaterial<cla Tutorials --------- +- :doc:`Particle systems (3D) <../tutorials/3d/particles/index>` + - :doc:`Controlling thousands of fish with Particles <../tutorials/performance/vertex_animation/controlling_thousands_of_fish>` - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__ @@ -143,7 +145,7 @@ Particles are drawn in the order emitted. :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **DRAW_ORDER_LIFETIME** = ``1`` -Particles are drawn in order of remaining lifetime. +Particles are drawn in order of remaining lifetime. In other words, the particle with the highest lifetime is drawn at the front. .. _class_GPUParticles3D_constant_DRAW_ORDER_REVERSE_LIFETIME: @@ -151,7 +153,7 @@ Particles are drawn in order of remaining lifetime. :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` **DRAW_ORDER_REVERSE_LIFETIME** = ``2`` - +Particles are drawn in reverse order of remaining lifetime. In other words, the particle with the lowest lifetime is drawn at the front. .. _class_GPUParticles3D_constant_DRAW_ORDER_VIEW_DEPTH: @@ -328,6 +330,8 @@ Number of particles to emit. Particle draw order. Uses :ref:`DrawOrder<enum_GPUParticles3D_DrawOrder>` values. +\ **Note:** :ref:`DRAW_ORDER_INDEX<class_GPUParticles3D_constant_DRAW_ORDER_INDEX>` is the only option that supports motion vectors for effects like TAA. It is suggested to use this draw order if the particles are opaque to fix ghosting artifacts. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_gridcontainer.rst b/classes/class_gridcontainer.rst index 1da8a8f72..98cf71905 100644 --- a/classes/class_gridcontainer.rst +++ b/classes/class_gridcontainer.rst @@ -95,7 +95,7 @@ Theme Property Descriptions :ref:`int<class_int>` **h_separation** = ``4`` -The horizontal separation of children nodes. +The horizontal separation of child nodes. .. rst-class:: classref-item-separator @@ -107,7 +107,7 @@ The horizontal separation of children nodes. :ref:`int<class_int>` **v_separation** = ``4`` -The vertical separation of children nodes. +The vertical separation of child nodes. .. |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_httpclient.rst b/classes/class_httpclient.rst index 7d4f2d818..9e13d500e 100644 --- a/classes/class_httpclient.rst +++ b/classes/class_httpclient.rst @@ -890,6 +890,8 @@ Returns the response's body length. \ **Note:** Some Web servers may not send a body length. In this case, the value returned will be ``-1``. If using chunked transfer encoding, the body length will also be ``-1``. +\ **Note:** This function always returns ``-1`` on the Web platform due to browsers limitations. + .. rst-class:: classref-item-separator ---- @@ -1079,9 +1081,9 @@ To create a POST request with query strings to push to the server, do: .. code-tab:: csharp var fields = new Godot.Collections.Dictionary { { "username", "user" }, { "password", "pass" } }; - string queryString = new HTTPClient().QueryStringFromDict(fields); + string queryString = new HttpClient().QueryStringFromDict(fields); string[] headers = { "Content-Type: application/x-www-form-urlencoded", $"Content-Length: {queryString.Length}" }; - var result = new HTTPClient().Request(HTTPClient.Method.Post, "index.php", headers, queryString); + var result = new HttpClient().Request(HttpClient.Method.Post, "index.php", headers, queryString); diff --git a/classes/class_httprequest.rst b/classes/class_httprequest.rst index c922c8013..fc46abd88 100644 --- a/classes/class_httprequest.rst +++ b/classes/class_httprequest.rst @@ -67,7 +67,7 @@ Can be used to make HTTP requests, i.e. download or upload files or web content public override void _Ready() { // Create an HTTP request node and connect its completion signal. - var httpRequest = new HTTPRequest(); + var httpRequest = new HttpRequest(); AddChild(httpRequest); httpRequest.RequestCompleted += HttpRequestCompleted; @@ -85,7 +85,7 @@ Can be used to make HTTP requests, i.e. download or upload files or web content { { "name", "Godette" } }); - error = httpRequest.Request("https://httpbin.org/post", null, HTTPClient.Method.Post, body); + error = httpRequest.Request("https://httpbin.org/post", null, HttpClient.Method.Post, body); if (error != Error.Ok) { GD.PushError("An error occurred in the HTTP request."); @@ -145,7 +145,7 @@ Can be used to make HTTP requests, i.e. download or upload files or web content public override void _Ready() { // Create an HTTP request node and connect its completion signal. - var httpRequest = new HTTPRequest(); + var httpRequest = new HttpRequest(); AddChild(httpRequest); httpRequest.RequestCompleted += HttpRequestCompleted; @@ -160,7 +160,7 @@ Can be used to make HTTP requests, i.e. download or upload files or web content // Called when the HTTP request is completed. private void HttpRequestCompleted(long result, long responseCode, string[] headers, byte[] body) { - if (result != (long)HTTPRequest.Result.Success) + if (result != (long)HttpRequest.Result.Success) { GD.PushError("Image couldn't be downloaded. Try a different image."); } diff --git a/classes/class_image.rst b/classes/class_image.rst index 5f00f9c05..7fdfc84a1 100644 --- a/classes/class_image.rst +++ b/classes/class_image.rst @@ -265,7 +265,7 @@ OpenGL texture format ``RGBA`` with four components, each with a bitdepth of 4. :ref:`Format<enum_Image_Format>` **FORMAT_RGB565** = ``7`` - +OpenGL texture format ``RGB`` with three components. Red and blue have a bitdepth of 5, and green has a bitdepth of 6. .. _class_Image_constant_FORMAT_RF: @@ -305,7 +305,7 @@ OpenGL texture format ``GL_RGBA32F`` where there are four components, each a 32- :ref:`Format<enum_Image_Format>` **FORMAT_RH** = ``12`` -OpenGL texture format ``GL_R32F`` where there's one component, a 16-bit "half-precision" floating-point value. +OpenGL texture format ``GL_R16F`` where there's one component, a 16-bit "half-precision" floating-point value. .. _class_Image_constant_FORMAT_RGH: @@ -313,7 +313,7 @@ OpenGL texture format ``GL_R32F`` where there's one component, a 16-bit "half-pr :ref:`Format<enum_Image_Format>` **FORMAT_RGH** = ``13`` -OpenGL texture format ``GL_RG32F`` where there are two components, each a 16-bit "half-precision" floating-point value. +OpenGL texture format ``GL_RG16F`` where there are two components, each a 16-bit "half-precision" floating-point value. .. _class_Image_constant_FORMAT_RGBH: @@ -321,7 +321,7 @@ OpenGL texture format ``GL_RG32F`` where there are two components, each a 16-bit :ref:`Format<enum_Image_Format>` **FORMAT_RGBH** = ``14`` -OpenGL texture format ``GL_RGB32F`` where there are three components, each a 16-bit "half-precision" floating-point value. +OpenGL texture format ``GL_RGB16F`` where there are three components, each a 16-bit "half-precision" floating-point value. .. _class_Image_constant_FORMAT_RGBAH: @@ -329,7 +329,7 @@ OpenGL texture format ``GL_RGB32F`` where there are three components, each a 16- :ref:`Format<enum_Image_Format>` **FORMAT_RGBAH** = ``15`` -OpenGL texture format ``GL_RGBA32F`` where there are four components, each a 16-bit "half-precision" floating-point value. +OpenGL texture format ``GL_RGBA16F`` where there are four components, each a 16-bit "half-precision" floating-point value. .. _class_Image_constant_FORMAT_RGBE9995: @@ -487,7 +487,7 @@ Texture format that uses `BPTC <https://www.khronos.org/opengl/wiki/BPTC_Texture :ref:`Format<enum_Image_Format>` **FORMAT_ETC2_RA_AS_RG** = ``33`` - +`Ericsson Texture Compression format 2 <https://en.wikipedia.org/wiki/Ericsson_Texture_Compression#ETC2_and_EAC>`__ (``RGBA8`` variant), which compresses RA data and interprets it as two channels (red and green). See also :ref:`FORMAT_ETC2_RGBA8<class_Image_constant_FORMAT_ETC2_RGBA8>`. .. _class_Image_constant_FORMAT_DXT5_RA_AS_RG: @@ -495,7 +495,7 @@ Texture format that uses `BPTC <https://www.khronos.org/opengl/wiki/BPTC_Texture :ref:`Format<enum_Image_Format>` **FORMAT_DXT5_RA_AS_RG** = ``34`` - +The `S3TC <https://en.wikipedia.org/wiki/S3_Texture_Compression>`__ texture format also known as Block Compression 3 or BC3, which compresses RA data and interprets it as two channels (red and green). See also :ref:`FORMAT_DXT5<class_Image_constant_FORMAT_DXT5>`. .. _class_Image_constant_FORMAT_ASTC_4x4: @@ -703,7 +703,7 @@ enum **UsedChannels**: :ref:`UsedChannels<enum_Image_UsedChannels>` **USED_CHANNELS_L** = ``0`` - +The image only uses one channel for luminance (grayscale). .. _class_Image_constant_USED_CHANNELS_LA: @@ -711,7 +711,7 @@ enum **UsedChannels**: :ref:`UsedChannels<enum_Image_UsedChannels>` **USED_CHANNELS_LA** = ``1`` - +The image uses two channels for luminance and alpha, respectively. .. _class_Image_constant_USED_CHANNELS_R: @@ -719,7 +719,7 @@ enum **UsedChannels**: :ref:`UsedChannels<enum_Image_UsedChannels>` **USED_CHANNELS_R** = ``2`` - +The image only uses the red channel. .. _class_Image_constant_USED_CHANNELS_RG: @@ -727,7 +727,7 @@ enum **UsedChannels**: :ref:`UsedChannels<enum_Image_UsedChannels>` **USED_CHANNELS_RG** = ``3`` - +The image uses two channels for red and green. .. _class_Image_constant_USED_CHANNELS_RGB: @@ -735,7 +735,7 @@ enum **UsedChannels**: :ref:`UsedChannels<enum_Image_UsedChannels>` **USED_CHANNELS_RGB** = ``4`` - +The image uses three channels for red, green, and blue. .. _class_Image_constant_USED_CHANNELS_RGBA: @@ -743,7 +743,7 @@ enum **UsedChannels**: :ref:`UsedChannels<enum_Image_UsedChannels>` **USED_CHANNELS_RGBA** = ``5`` - +The image uses four channels for red, green, blue, and alpha. .. rst-class:: classref-item-separator @@ -862,9 +862,7 @@ Method Descriptions void **adjust_bcs** **(** :ref:`float<class_float>` brightness, :ref:`float<class_float>` contrast, :ref:`float<class_float>` saturation **)** -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Adjusts this image's ``brightness``, ``contrast``, and ``saturation`` by the given values. Does not work if the image is compressed (see :ref:`is_compressed<class_Image_method_is_compressed>`). .. rst-class:: classref-item-separator @@ -1080,9 +1078,7 @@ Returns :ref:`ALPHA_BLEND<class_Image_constant_ALPHA_BLEND>` if the image has da :ref:`UsedChannels<enum_Image_UsedChannels>` **detect_used_channels** **(** :ref:`CompressSource<enum_Image_CompressSource>` source=0 **)** |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Returns the color channels used by this image, as one of the :ref:`UsedChannels<enum_Image_UsedChannels>` constants. If the image is compressed, the original ``source`` must be specified. .. rst-class:: classref-item-separator diff --git a/classes/class_input.rst b/classes/class_input.rst index 432ee6d58..fb8cdebc6 100644 --- a/classes/class_input.rst +++ b/classes/class_input.rst @@ -135,6 +135,8 @@ Methods +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_magnetometer<class_Input_method_set_magnetometer>` **(** :ref:`Vector3<class_Vector3>` value **)** | +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool<class_bool>` | :ref:`should_ignore_device<class_Input_method_should_ignore_device>` **(** :ref:`int<class_int>` vendor_id, :ref:`int<class_int>` product_id **)** |const| | + +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`start_joy_vibration<class_Input_method_start_joy_vibration>` **(** :ref:`int<class_int>` device, :ref:`float<class_float>` weak_magnitude, :ref:`float<class_float>` strong_magnitude, :ref:`float<class_float>` duration=0 **)** | +-------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`stop_joy_vibration<class_Input_method_stop_joy_vibration>` **(** :ref:`int<class_int>` device **)** | @@ -869,6 +871,8 @@ Feeds an :ref:`InputEvent<class_InputEvent>` to the game. Can be used to artific +\ **Note:** Calling this function has no influence on the operating system. So for example sending an :ref:`InputEventMouseMotion<class_InputEventMouseMotion>` will not move the OS mouse cursor to the specified position (use :ref:`warp_mouse<class_Input_method_warp_mouse>` instead) and sending :kbd:`Alt/Cmd + Tab` as :ref:`InputEventKey<class_InputEventKey>` won't toggle between active windows. + .. rst-class:: classref-item-separator ---- @@ -979,6 +983,20 @@ Sets the value of the magnetic field of the magnetometer sensor. Can be used for ---- +.. _class_Input_method_should_ignore_device: + +.. rst-class:: classref-method + +:ref:`bool<class_bool>` **should_ignore_device** **(** :ref:`int<class_int>` vendor_id, :ref:`int<class_int>` product_id **)** |const| + +Queries whether an input device should be ignored or not. Devices can be ignored by setting the environment variable ``SDL_GAMECONTROLLER_IGNORE_DEVICES``. Read the `SDL documentation <https://wiki.libsdl.org/SDL2>`__ for more information. + +\ **Note:** Some 3rd party tools can contribute to the list of ignored devices. For example, *SteamInput* creates virtual devices from physical devices for remapping purposes. To avoid handling the same input device twice, the original device is added to the ignore list. + +.. rst-class:: classref-item-separator + +---- + .. _class_Input_method_start_joy_vibration: .. rst-class:: classref-method diff --git a/classes/class_inputeventjoypadbutton.rst b/classes/class_inputeventjoypadbutton.rst index e2e969079..3d5230f97 100644 --- a/classes/class_inputeventjoypadbutton.rst +++ b/classes/class_inputeventjoypadbutton.rst @@ -98,7 +98,9 @@ If ``true``, the button's state is pressed. If ``false``, the button's state is - void **set_pressure** **(** :ref:`float<class_float>` value **)** - :ref:`float<class_float>` **get_pressure** **(** **)** -Represents the pressure the user puts on the button with their finger, if the controller supports it. Ranges from ``0`` to ``1``. +Represents the pressure the user puts on a pressure-sensitive button. + +\ *Deprecated.* This property is never set by the engine and is always ``0``. .. |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_inputeventmidi.rst b/classes/class_inputeventmidi.rst index f1baac089..278c2c11f 100644 --- a/classes/class_inputeventmidi.rst +++ b/classes/class_inputeventmidi.rst @@ -12,18 +12,18 @@ InputEventMIDI **Inherits:** :ref:`InputEvent<class_InputEvent>` **<** :ref:`Resource<class_Resource>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>` -Represents an input event from a MIDI device, such as a piano. +Represents a MIDI message from a MIDI device, such as a musical keyboard. .. rst-class:: classref-introduction-group Description ----------- -InputEventMIDI allows receiving input events from MIDI (Musical Instrument Digital Interface) devices such as a piano. +InputEventMIDI stores information about messages from `MIDI <https://en.wikipedia.org/wiki/MIDI>`__ (Musical Instrument Digital Interface) devices. These may include musical keyboards, synthesizers, and drum machines. -MIDI signals can be sent over a 5-pin MIDI connector or over USB, if your device supports both be sure to check the settings in the device to see which output it's using. +MIDI messages can be received over a 5-pin MIDI connector or over USB. If your device supports both be sure to check the settings in the device to see which output it is using. -To receive input events from MIDI devices, you need to call :ref:`OS.open_midi_inputs<class_OS_method_open_midi_inputs>`. You can check which devices are detected using :ref:`OS.get_connected_midi_inputs<class_OS_method_get_connected_midi_inputs>`. +By default, Godot does not detect MIDI devices. You need to call :ref:`OS.open_midi_inputs<class_OS_method_open_midi_inputs>`, first. You can check which devices are detected with :ref:`OS.get_connected_midi_inputs<class_OS_method_get_connected_midi_inputs>`, and close the connection with :ref:`OS.close_midi_inputs<class_OS_method_close_midi_inputs>`. .. tabs:: @@ -38,16 +38,16 @@ To receive input events from MIDI devices, you need to call :ref:`OS.open_midi_i if input_event is InputEventMIDI: _print_midi_info(input_event) - func _print_midi_info(midi_event: InputEventMIDI): + func _print_midi_info(midi_event): print(midi_event) - print("Channel " + str(midi_event.channel)) - print("Message " + str(midi_event.message)) - print("Pitch " + str(midi_event.pitch)) - print("Velocity " + str(midi_event.velocity)) - print("Instrument " + str(midi_event.instrument)) - print("Pressure " + str(midi_event.pressure)) - print("Controller number: " + str(midi_event.controller_number)) - print("Controller value: " + str(midi_event.controller_value)) + print("Channel ", midi_event.channel) + print("Message ", midi_event.message) + print("Pitch ", midi_event.pitch) + print("Velocity ", midi_event.velocity) + print("Instrument ", midi_event.instrument) + print("Pressure ", midi_event.pressure) + print("Controller number: ", midi_event.controller_number) + print("Controller value: ", midi_event.controller_value) .. code-tab:: csharp @@ -57,15 +57,15 @@ To receive input events from MIDI devices, you need to call :ref:`OS.open_midi_i GD.Print(OS.GetConnectedMidiInputs()); } - public override void _Input(InputEvent @event) + public override void _Input(InputEvent inputEvent) { - if (@event is InputEventMIDI midiEvent) + if (inputEvent is InputEventMidi midiEvent) { PrintMIDIInfo(midiEvent); } } - private void PrintMIDIInfo(InputEventMIDI midiEvent) + private void PrintMIDIInfo(InputEventMidi midiEvent) { GD.Print(midiEvent); GD.Print($"Channel {midiEvent.Channel}"); @@ -80,7 +80,7 @@ To receive input events from MIDI devices, you need to call :ref:`OS.open_midi_i -Note that Godot does not currently support MIDI output, so there is no way to emit MIDI signals from Godot. Only MIDI input works. +\ **Note:** Godot does not support MIDI output, so there is no way to emit MIDI messages from Godot. Only MIDI input is supported. .. rst-class:: classref-introduction-group @@ -139,7 +139,7 @@ Property Descriptions - void **set_channel** **(** :ref:`int<class_int>` value **)** - :ref:`int<class_int>` **get_channel** **(** **)** -The MIDI channel of this input event. There are 16 channels, so this value ranges from 0 to 15. MIDI channel 9 is reserved for the use with percussion instruments, the rest of the channels are for non-percussion instruments. +The MIDI channel of this message, ranging from ``0`` to ``15``. MIDI channel ``9`` is reserved for percussion instruments. .. rst-class:: classref-item-separator @@ -156,7 +156,7 @@ The MIDI channel of this input event. There are 16 channels, so this value range - void **set_controller_number** **(** :ref:`int<class_int>` value **)** - :ref:`int<class_int>` **get_controller_number** **(** **)** -If the message is :ref:`@GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE<class_@GlobalScope_constant_MIDI_MESSAGE_CONTROL_CHANGE>`, this indicates the controller number, otherwise this is zero. Controllers include devices such as pedals and levers. +The unique number of the controller, if :ref:`message<class_InputEventMIDI_property_message>` is :ref:`@GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE<class_@GlobalScope_constant_MIDI_MESSAGE_CONTROL_CHANGE>`, otherwise this is ``0``. This value can be used to identify sliders for volume, balance, and panning, as well as switches and pedals on the MIDI device. See the `General MIDI specification <https://en.wikipedia.org/wiki/General_MIDI#Controller_events>`__ for a small list. .. rst-class:: classref-item-separator @@ -173,7 +173,7 @@ If the message is :ref:`@GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE<class_@GlobalSc - void **set_controller_value** **(** :ref:`int<class_int>` value **)** - :ref:`int<class_int>` **get_controller_value** **(** **)** -If the message is :ref:`@GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE<class_@GlobalScope_constant_MIDI_MESSAGE_CONTROL_CHANGE>`, this indicates the controller value, otherwise this is zero. Controllers include devices such as pedals and levers. +The value applied to the controller. If :ref:`message<class_InputEventMIDI_property_message>` is :ref:`@GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE<class_@GlobalScope_constant_MIDI_MESSAGE_CONTROL_CHANGE>`, this value ranges from ``0`` to ``127``, otherwise it is ``0``. See also :ref:`controller_value<class_InputEventMIDI_property_controller_value>`. .. rst-class:: classref-item-separator @@ -190,7 +190,9 @@ If the message is :ref:`@GlobalScope.MIDI_MESSAGE_CONTROL_CHANGE<class_@GlobalSc - void **set_instrument** **(** :ref:`int<class_int>` value **)** - :ref:`int<class_int>` **get_instrument** **(** **)** -The instrument of this input event. This value ranges from 0 to 127. Refer to the instrument list on the General MIDI wikipedia article to see a list of instruments, except that this value is 0-index, so subtract one from every number on that chart. A standard piano will have an instrument number of 0. +The instrument (also called *program* or *preset*) used on this MIDI message. This value ranges from ``0`` to ``127``. + +To see what each value means, refer to the `General MIDI's instrument list <https://en.wikipedia.org/wiki/General_MIDI#Program_change_events>`__. Keep in mind that the list is off by 1 because it does not begin from 0. A value of ``0`` corresponds to the acoustic grand piano. .. rst-class:: classref-item-separator @@ -207,15 +209,9 @@ The instrument of this input event. This value ranges from 0 to 127. Refer to th - void **set_message** **(** :ref:`MIDIMessage<enum_@GlobalScope_MIDIMessage>` value **)** - :ref:`MIDIMessage<enum_@GlobalScope_MIDIMessage>` **get_message** **(** **)** -Returns a value indicating the type of message for this MIDI signal. This is a member of the :ref:`MIDIMessage<enum_@GlobalScope_MIDIMessage>` enum. +Represents the type of MIDI message (see the :ref:`MIDIMessage<enum_@GlobalScope_MIDIMessage>` enum). -For MIDI messages between 0x80 and 0xEF, only the left half of the bits are returned as this value, as the other part is the channel (ex: 0x94 becomes 0x9). For MIDI messages from 0xF0 to 0xFF, the value is returned as-is. - -Notes will return :ref:`@GlobalScope.MIDI_MESSAGE_NOTE_ON<class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_ON>` when activated, but they might not always return :ref:`@GlobalScope.MIDI_MESSAGE_NOTE_OFF<class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_OFF>` when deactivated, therefore your code should treat the input as stopped if some period of time has passed. - -Some MIDI devices may send :ref:`@GlobalScope.MIDI_MESSAGE_NOTE_ON<class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_ON>` with zero velocity instead of :ref:`@GlobalScope.MIDI_MESSAGE_NOTE_OFF<class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_OFF>`. - -For more information, see the note in :ref:`velocity<class_InputEventMIDI_property_velocity>` and the MIDI message status byte list chart linked above. +For more information, see the `MIDI message status byte list chart <https://www.midi.org/specifications-old/item/table-2-expanded-messages-list-status-bytes>`__. .. rst-class:: classref-item-separator @@ -232,7 +228,9 @@ For more information, see the note in :ref:`velocity<class_InputEventMIDI_proper - void **set_pitch** **(** :ref:`int<class_int>` value **)** - :ref:`int<class_int>` **get_pitch** **(** **)** -The pitch index number of this MIDI signal. This value ranges from 0 to 127. On a piano, middle C is 60, and A440 is 69, see the "MIDI note" column of the piano key frequency chart on Wikipedia for more information. +The pitch index number of this MIDI message. This value ranges from ``0`` to ``127``. + +On a piano, the **middle C** is ``60``, followed by a **C-sharp** (``61``), then a **D** (``62``), and so on. Each octave is split in offsets of 12. See the "MIDI note number" column of the `piano key frequency chart <https://en.wikipedia.org/wiki/Piano_key_frequencies>`__ a full list. .. rst-class:: classref-item-separator @@ -249,7 +247,9 @@ The pitch index number of this MIDI signal. This value ranges from 0 to 127. On - void **set_pressure** **(** :ref:`int<class_int>` value **)** - :ref:`int<class_int>` **get_pressure** **(** **)** -The pressure of the MIDI signal. This value ranges from 0 to 127. For many devices, this value is always zero. +The strength of the key being pressed. This value ranges from ``0`` to ``127``. + +\ **Note:** For many devices, this value is always ``0``. Other devices such as musical keyboards may simulate pressure by changing the :ref:`velocity<class_InputEventMIDI_property_velocity>`, instead. .. rst-class:: classref-item-separator @@ -266,9 +266,16 @@ The pressure of the MIDI signal. This value ranges from 0 to 127. For many devic - void **set_velocity** **(** :ref:`int<class_int>` value **)** - :ref:`int<class_int>` **get_velocity** **(** **)** -The velocity of the MIDI signal. This value ranges from 0 to 127. For a piano, this corresponds to how quickly the key was pressed, and is rarely above about 110 in practice. +The velocity of the MIDI message. This value ranges from ``0`` to ``127``. For a musical keyboard, this corresponds to how quickly the key was pressed, and is rarely above ``110`` in practice. -\ **Note:** Some MIDI devices may send a :ref:`@GlobalScope.MIDI_MESSAGE_NOTE_ON<class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_ON>` message with zero velocity and expect this to be treated the same as a :ref:`@GlobalScope.MIDI_MESSAGE_NOTE_OFF<class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_OFF>` message, but device implementations vary so Godot reports event data exactly as received. Depending on the hardware and the needs of the game/app, this MIDI quirk can be handled robustly with a couple lines of script (check for :ref:`@GlobalScope.MIDI_MESSAGE_NOTE_ON<class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_ON>` with velocity zero). +\ **Note:** Some MIDI devices may send a :ref:`@GlobalScope.MIDI_MESSAGE_NOTE_ON<class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_ON>` message with ``0`` velocity and expect it to be treated the same as a :ref:`@GlobalScope.MIDI_MESSAGE_NOTE_OFF<class_@GlobalScope_constant_MIDI_MESSAGE_NOTE_OFF>` message. If necessary, this can be handled with a few lines of code: + +:: + + func _input(event): + if event is InputEventMIDI: + if event.message == MIDI_MESSAGE_NOTE_ON and event.velocity > 0: + print("Note pressed!") .. |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_inputeventscreendrag.rst b/classes/class_inputeventscreendrag.rst index 4d1bb8382..a9136f8de 100644 --- a/classes/class_inputeventscreendrag.rst +++ b/classes/class_inputeventscreendrag.rst @@ -106,7 +106,7 @@ Returns ``true`` when using the eraser end of a stylus pen. - void **set_position** **(** :ref:`Vector2<class_Vector2>` value **)** - :ref:`Vector2<class_Vector2>` **get_position** **(** **)** -The drag position. +The drag position in the viewport the node is in, using the coordinate system of this viewport. .. rst-class:: classref-item-separator diff --git a/classes/class_inputeventscreentouch.rst b/classes/class_inputeventscreentouch.rst index 8ea6a4832..8d8759a5a 100644 --- a/classes/class_inputeventscreentouch.rst +++ b/classes/class_inputeventscreentouch.rst @@ -119,7 +119,7 @@ The touch index in the case of a multi-touch event. One index = one finger. - void **set_position** **(** :ref:`Vector2<class_Vector2>` value **)** - :ref:`Vector2<class_Vector2>` **get_position** **(** **)** -The touch position, in screen (global) coordinates. +The touch position in the viewport the node is in, using the coordinate system of this viewport. .. rst-class:: classref-item-separator diff --git a/classes/class_int.rst b/classes/class_int.rst index 84da9fd41..9e503715b 100644 --- a/classes/class_int.rst +++ b/classes/class_int.rst @@ -38,7 +38,7 @@ Likewise, :ref:`float<class_float>`\ s can be automatically converted into **int .. code-tab:: csharp int x = 1; // x is 1 - x = 4.2; // x is 4, because 4.2 gets truncated + x = (int)4.2; // x is 4, because 4.2 gets truncated // We use long below, because GDScript's int is 64-bit while C#'s int is 32-bit. long maxLong = 9223372036854775807; // Biggest value a long can store maxLong++; // maxLong is now -9223372036854775808, because it wrapped around. @@ -49,14 +49,25 @@ Likewise, :ref:`float<class_float>`\ s can be automatically converted into **int -In GDScript, you can use the ``0b`` literal for binary representation, the ``0x`` literal for hexadecimal representation, and the ``_`` symbol to separate long numbers and improve readability. +You can use the ``0b`` literal for binary representation, the ``0x`` literal for hexadecimal representation, and the ``_`` symbol to separate long numbers and improve readability. -:: + +.. tabs:: + + .. code-tab:: gdscript var x = 0b1001 # x is 9 var y = 0xF5 # y is 245 var z = 10_000_000 # z is 10000000 + .. code-tab:: csharp + + int x = 0b1001; // x is 9 + int y = 0xF5; // y is 245 + int z = 10_000_000; // z is 10000000 + + + .. rst-class:: classref-reftable-group Constructors @@ -758,7 +769,7 @@ This is useful for storing binary flags in a variable. :ref:`int<class_int>` **operator ~** **(** **)** -Performs the bitwise ``NOT`` operation on the **int**. Due to `2's complement <https://en.wikipedia.org/wiki/Two%27s_complement/>`__, it's effectively equal to ``-(int + 1)``. +Performs the bitwise ``NOT`` operation on the **int**. Due to `2's complement <https://en.wikipedia.org/wiki/Two%27s_complement>`__, it's effectively equal to ``-(int + 1)``. :: diff --git a/classes/class_label3d.rst b/classes/class_label3d.rst index 11ea2ad45..ac689200e 100644 --- a/classes/class_label3d.rst +++ b/classes/class_label3d.rst @@ -21,6 +21,13 @@ Description A node for displaying plain text in 3D space. By adjusting various properties of this node, you can configure things such as the text's appearance and whether it always faces the camera. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`3D text <../tutorials/3d/3d_text>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_light3d.rst b/classes/class_light3d.rst index 67abf2f69..538f197d1 100644 --- a/classes/class_light3d.rst +++ b/classes/class_light3d.rst @@ -30,6 +30,8 @@ Tutorials - :doc:`3D lights and shadows <../tutorials/3d/lights_and_shadows>` +- :doc:`Faking global illumination <../tutorials/3d/global_illumination/faking_global_illumination>` + - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__ .. rst-class:: classref-reftable-group diff --git a/classes/class_lightmapgi.rst b/classes/class_lightmapgi.rst index 19dda26f9..ec42bd7d8 100644 --- a/classes/class_lightmapgi.rst +++ b/classes/class_lightmapgi.rst @@ -29,7 +29,14 @@ The **LightmapGI** node is used to compute and store baked lightmaps. Lightmaps \ **Note:** Lightmap baking on :ref:`CSGShape3D<class_CSGShape3D>`\ s and :ref:`PrimitiveMesh<class_PrimitiveMesh>`\ es is not supported, as these cannot store UV2 data required for baking. -\ **Note:** If no custom lightmappers are installed, **LightmapGI** can only be baked when using the Vulkan backend (Forward+ or Mobile), not OpenGL. +\ **Note:** If no custom lightmappers are installed, **LightmapGI** can only be baked when using the Vulkan backend (Forward+ or Mobile), not OpenGL. Additionally, **LightmapGI** rendering is not currently supported when using the OpenGL backend (Compatibility). + +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Using Lightmap global illumination <../tutorials/3d/global_illumination/using_lightmap_gi>` .. rst-class:: classref-reftable-group @@ -248,6 +255,14 @@ Lightmap baking failed as the resulting image couldn't be saved or imported by G The user aborted the lightmap baking operation (typically by clicking the **Cancel** button in the progress dialog). +.. _class_LightmapGI_constant_BAKE_ERROR_TEXTURE_SIZE_TOO_SMALL: + +.. rst-class:: classref-enumeration-constant + +:ref:`BakeError<enum_LightmapGI_BakeError>` **BAKE_ERROR_TEXTURE_SIZE_TOO_SMALL** = ``9`` + +Lightmap baking failed as the maximum texture size is too small to fit some of the meshes marked for baking. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_mainloop.rst b/classes/class_mainloop.rst index 74f1b7878..bae76435d 100644 --- a/classes/class_mainloop.rst +++ b/classes/class_mainloop.rst @@ -54,6 +54,7 @@ Here is an example script implementing a simple **MainLoop**: using Godot; + [GlobalClass] public partial class CustomMainLoop : MainLoop { private double _timeElapsed = 0; diff --git a/classes/class_material.rst b/classes/class_material.rst index 8a853097b..8c31a8491 100644 --- a/classes/class_material.rst +++ b/classes/class_material.rst @@ -14,14 +14,16 @@ Material **Inherited By:** :ref:`BaseMaterial3D<class_BaseMaterial3D>`, :ref:`CanvasItemMaterial<class_CanvasItemMaterial>`, :ref:`FogMaterial<class_FogMaterial>`, :ref:`PanoramaSkyMaterial<class_PanoramaSkyMaterial>`, :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>`, :ref:`PhysicalSkyMaterial<class_PhysicalSkyMaterial>`, :ref:`PlaceholderMaterial<class_PlaceholderMaterial>`, :ref:`ProceduralSkyMaterial<class_ProceduralSkyMaterial>`, :ref:`ShaderMaterial<class_ShaderMaterial>` -Abstract base :ref:`Resource<class_Resource>` for coloring and shading geometry. +Virtual base class for applying visual properties to an object, such as color and roughness. .. rst-class:: classref-introduction-group Description ----------- -Material is a base :ref:`Resource<class_Resource>` used for coloring and shading geometry. All materials inherit from it and almost all :ref:`VisualInstance3D<class_VisualInstance3D>` derived nodes carry a Material. A few flags and parameters are shared between all material types and are configured here. +**Material** is a base resource used for coloring and shading geometry. All materials inherit from it and almost all :ref:`VisualInstance3D<class_VisualInstance3D>` derived nodes carry a **Material**. A few flags and parameters are shared between all material types and are configured here. + +Importantly, you can inherit from **Material** to create your own custom material type in script or in GDExtension. .. rst-class:: classref-introduction-group @@ -115,6 +117,8 @@ Property Descriptions Sets the **Material** to be used for the next pass. This renders the object again using a different material. +\ **Note:** :ref:`next_pass<class_Material_property_next_pass>` materials are not necessarily drawn immediately after the source **Material**. Draw order is determined by material properties, :ref:`render_priority<class_Material_property_render_priority>`, and distance to camera. + \ **Note:** This only applies to :ref:`StandardMaterial3D<class_StandardMaterial3D>`\ s and :ref:`ShaderMaterial<class_ShaderMaterial>`\ s with type "Spatial". .. rst-class:: classref-item-separator @@ -132,11 +136,11 @@ Sets the **Material** to be used for the next pass. This renders the object agai - void **set_render_priority** **(** :ref:`int<class_int>` value **)** - :ref:`int<class_int>` **get_render_priority** **(** **)** -Sets the render priority for transparent objects in 3D scenes. Higher priority objects will be sorted in front of lower priority objects. +Sets the render priority for objects in 3D scenes. Higher priority objects will be sorted in front of lower priority objects. In other words, all objects with :ref:`render_priority<class_Material_property_render_priority>` ``1`` will render before all objects with :ref:`render_priority<class_Material_property_render_priority>` ``0``). \ **Note:** This only applies to :ref:`StandardMaterial3D<class_StandardMaterial3D>`\ s and :ref:`ShaderMaterial<class_ShaderMaterial>`\ s with type "Spatial". -\ **Note:** This only applies to sorting of transparent objects. This will not impact how transparent objects are sorted relative to opaque objects. This is because opaque objects are not sorted, while transparent objects are sorted from back to front (subject to priority). +\ **Note:** This will not impact how transparent objects are sorted relative to opaque objects or how dynamic meshes will be sorted relative to other opaque meshes. This is because all transparent objects are drawn after all opaque objects and all dynamic opaque meshes are drawn before other opaque meshes. .. rst-class:: classref-section-separator @@ -153,9 +157,7 @@ Method Descriptions :ref:`bool<class_bool>` **_can_do_next_pass** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Only exposed for the purpose of overriding. You cannot call this function directly. Used internally to determine if :ref:`next_pass<class_Material_property_next_pass>` should be shown in the editor or not. .. rst-class:: classref-item-separator @@ -167,9 +169,7 @@ Method Descriptions :ref:`bool<class_bool>` **_can_use_render_priority** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Only exposed for the purpose of overriding. You cannot call this function directly. Used internally to determine if :ref:`render_priority<class_Material_property_render_priority>` should be shown in the editor or not. .. rst-class:: classref-item-separator @@ -181,9 +181,7 @@ Method Descriptions :ref:`Mode<enum_Shader_Mode>` **_get_shader_mode** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Only exposed for the purpose of overriding. You cannot call this function directly. Used internally by various editor tools. .. rst-class:: classref-item-separator @@ -195,9 +193,7 @@ Method Descriptions :ref:`RID<class_RID>` **_get_shader_rid** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Only exposed for the purpose of overriding. You cannot call this function directly. Used internally by various editor tools. Used to access the RID of the **Material**'s :ref:`Shader<class_Shader>`. .. rst-class:: classref-item-separator @@ -221,9 +217,7 @@ Creates a placeholder version of this resource (:ref:`PlaceholderMaterial<class_ void **inspect_native_shader_code** **(** **)** -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Only available when running in the editor. Opens a popup that visualizes the generated shader code, including all variants and internal shader code. .. |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_mesh.rst b/classes/class_mesh.rst index 9b4a0874e..0aaefb958 100644 --- a/classes/class_mesh.rst +++ b/classes/class_mesh.rst @@ -229,7 +229,7 @@ enum **ArrayType**: :ref:`ArrayType<enum_Mesh_ArrayType>` **ARRAY_CUSTOM0** = ``6`` -Contains custom color channel 0. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> Mesh.ARRAY_FORMAT_CUSTOM0_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>` or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise. +Contains custom color channel 0. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> Mesh.ARRAY_FORMAT_CUSTOM0_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_SNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_SNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>`, or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise. .. _class_Mesh_constant_ARRAY_CUSTOM1: @@ -237,7 +237,7 @@ Contains custom color channel 0. :ref:`PackedByteArray<class_PackedByteArray>` i :ref:`ArrayType<enum_Mesh_ArrayType>` **ARRAY_CUSTOM1** = ``7`` -Contains custom color channel 1. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> Mesh.ARRAY_FORMAT_CUSTOM1_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>` or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise. +Contains custom color channel 1. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> Mesh.ARRAY_FORMAT_CUSTOM1_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_SNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_SNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>`, or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise. .. _class_Mesh_constant_ARRAY_CUSTOM2: @@ -245,7 +245,7 @@ Contains custom color channel 1. :ref:`PackedByteArray<class_PackedByteArray>` i :ref:`ArrayType<enum_Mesh_ArrayType>` **ARRAY_CUSTOM2** = ``8`` -Contains custom color channel 2. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> Mesh.ARRAY_FORMAT_CUSTOM2_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>` or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise. +Contains custom color channel 2. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> Mesh.ARRAY_FORMAT_CUSTOM2_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_SNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_SNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>`, or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise. .. _class_Mesh_constant_ARRAY_CUSTOM3: @@ -253,7 +253,7 @@ Contains custom color channel 2. :ref:`PackedByteArray<class_PackedByteArray>` i :ref:`ArrayType<enum_Mesh_ArrayType>` **ARRAY_CUSTOM3** = ``9`` -Contains custom color channel 3. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> Mesh.ARRAY_FORMAT_CUSTOM3_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>` or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise. +Contains custom color channel 3. :ref:`PackedByteArray<class_PackedByteArray>` if ``(format >> Mesh.ARRAY_FORMAT_CUSTOM3_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK`` is :ref:`ARRAY_CUSTOM_RGBA8_UNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_UNORM>`, :ref:`ARRAY_CUSTOM_RGBA8_SNORM<class_Mesh_constant_ARRAY_CUSTOM_RGBA8_SNORM>`, :ref:`ARRAY_CUSTOM_RG_HALF<class_Mesh_constant_ARRAY_CUSTOM_RG_HALF>`, or :ref:`ARRAY_CUSTOM_RGBA_HALF<class_Mesh_constant_ARRAY_CUSTOM_RGBA_HALF>`. :ref:`PackedFloat32Array<class_PackedFloat32Array>` otherwise. .. _class_Mesh_constant_ARRAY_BONES: @@ -912,7 +912,7 @@ Returns all the vertices that make up the faces of the mesh. Each three vertices :ref:`int<class_int>` **get_surface_count** **(** **)** |const| -Returns the number of surfaces that the **Mesh** holds. +Returns the number of surfaces that the **Mesh** holds. This is equivalent to :ref:`MeshInstance3D.get_surface_override_material_count<class_MeshInstance3D_method_get_surface_override_material_count>`. .. rst-class:: classref-item-separator @@ -924,7 +924,7 @@ Returns the number of surfaces that the **Mesh** holds. :ref:`Array<class_Array>` **surface_get_arrays** **(** :ref:`int<class_int>` surf_idx **)** |const| -Returns the arrays for the vertices, normals, uvs, etc. that make up the requested surface (see :ref:`ArrayMesh.add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`). +Returns the arrays for the vertices, normals, UVs, etc. that make up the requested surface (see :ref:`ArrayMesh.add_surface_from_arrays<class_ArrayMesh_method_add_surface_from_arrays>`). .. rst-class:: classref-item-separator @@ -950,6 +950,8 @@ Returns the blend shape arrays for the requested surface. Returns a :ref:`Material<class_Material>` in a given surface. Surface is rendered using this material. +\ **Note:** This returns the material within the **Mesh** resource, not the :ref:`Material<class_Material>` associated to the :ref:`MeshInstance3D<class_MeshInstance3D>`'s Surface Material Override properties. To get the :ref:`Material<class_Material>` associated to the :ref:`MeshInstance3D<class_MeshInstance3D>`'s Surface Material Override properties, use :ref:`MeshInstance3D.get_surface_override_material<class_MeshInstance3D_method_get_surface_override_material>` instead. + .. rst-class:: classref-item-separator ---- @@ -962,6 +964,8 @@ void **surface_set_material** **(** :ref:`int<class_int>` surf_idx, :ref:`Materi Sets a :ref:`Material<class_Material>` for a given surface. Surface will be rendered using this material. +\ **Note:** This assigns the material within the **Mesh** resource, not the :ref:`Material<class_Material>` associated to the :ref:`MeshInstance3D<class_MeshInstance3D>`'s Surface Material Override properties. To set the :ref:`Material<class_Material>` associated to the :ref:`MeshInstance3D<class_MeshInstance3D>`'s Surface Material Override properties, use :ref:`MeshInstance3D.set_surface_override_material<class_MeshInstance3D_method_set_surface_override_material>` instead. + .. |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.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` diff --git a/classes/class_meshdatatool.rst b/classes/class_meshdatatool.rst index e48b40d95..807fe6ff7 100644 --- a/classes/class_meshdatatool.rst +++ b/classes/class_meshdatatool.rst @@ -72,6 +72,13 @@ See also :ref:`ArrayMesh<class_ArrayMesh>`, :ref:`ImmediateMesh<class_ImmediateM \ **Note:** Godot uses clockwise `winding order <https://learnopengl.com/Advanced-OpenGL/Face-culling>`__ for front faces of triangle primitive modes. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Using the MeshDataTool <../tutorials/3d/procedural_geometry/meshdatatool>` + .. rst-class:: classref-reftable-group Methods @@ -311,10 +318,29 @@ Calculates and returns the face normal of the given face. :ref:`int<class_int>` **get_face_vertex** **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` vertex **)** |const| -Returns the specified vertex of the given face. +Returns the specified vertex index of the given face. Vertex argument must be either 0, 1, or 2 because faces contain three vertices. +\ **Example:**\ + + +.. tabs:: + + .. code-tab:: gdscript + + var index = mesh_data_tool.get_face_vertex(0, 1) # Gets the index of the second vertex of the first face. + var position = mesh_data_tool.get_vertex(index) + var normal = mesh_data_tool.get_vertex_normal(index) + + .. code-tab:: csharp + + int index = meshDataTool.GetFaceVertex(0, 1); // Gets the index of the second vertex of the first face. + Vector3 position = meshDataTool.GetVertex(index); + Vector3 normal = meshDataTool.GetVertexNormal(index); + + + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_meshinstance3d.rst b/classes/class_meshinstance3d.rst index 24855edf9..2bc112bd5 100644 --- a/classes/class_meshinstance3d.rst +++ b/classes/class_meshinstance3d.rst @@ -259,7 +259,9 @@ Returns the value of the blend shape at the given ``blend_shape_idx``. Returns ` :ref:`Material<class_Material>` **get_surface_override_material** **(** :ref:`int<class_int>` surface **)** |const| -Returns the override :ref:`Material<class_Material>` for the specified ``surface`` of the :ref:`Mesh<class_Mesh>` resource. +Returns the override :ref:`Material<class_Material>` for the specified ``surface`` of the :ref:`Mesh<class_Mesh>` resource. See also :ref:`get_surface_override_material_count<class_MeshInstance3D_method_get_surface_override_material_count>`. + +\ **Note:** This returns the :ref:`Material<class_Material>` associated to the **MeshInstance3D**'s Surface Material Override properties, not the material within the :ref:`Mesh<class_Mesh>` resource. To get the material within the :ref:`Mesh<class_Mesh>` resource, use :ref:`Mesh.surface_get_material<class_Mesh_method_surface_get_material>` instead. .. rst-class:: classref-item-separator @@ -271,7 +273,7 @@ Returns the override :ref:`Material<class_Material>` for the specified ``surface :ref:`int<class_int>` **get_surface_override_material_count** **(** **)** |const| -Returns the number of surface override materials. This is equivalent to :ref:`Mesh.get_surface_count<class_Mesh_method_get_surface_count>`. +Returns the number of surface override materials. This is equivalent to :ref:`Mesh.get_surface_count<class_Mesh_method_get_surface_count>`. See also :ref:`get_surface_override_material<class_MeshInstance3D_method_get_surface_override_material>`. .. rst-class:: classref-item-separator @@ -297,6 +299,8 @@ void **set_surface_override_material** **(** :ref:`int<class_int>` surface, :ref Sets the override ``material`` for the specified ``surface`` of the :ref:`Mesh<class_Mesh>` resource. This material is associated with this **MeshInstance3D** rather than with :ref:`mesh<class_MeshInstance3D_property_mesh>`. +\ **Note:** This assigns the :ref:`Material<class_Material>` associated to the **MeshInstance3D**'s Surface Material Override properties, not the material within the :ref:`Mesh<class_Mesh>` resource. To set the material within the :ref:`Mesh<class_Mesh>` resource, use :ref:`Mesh.surface_get_material<class_Mesh_method_surface_get_material>` instead. + .. |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.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` diff --git a/classes/class_multimesh.rst b/classes/class_multimesh.rst index 3699dd433..114deeddb 100644 --- a/classes/class_multimesh.rst +++ b/classes/class_multimesh.rst @@ -36,10 +36,12 @@ Since instances may have any behavior, the AABB used for visibility must be prov Tutorials --------- -- :doc:`Animating thousands of fish with MultiMeshInstance <../tutorials/performance/vertex_animation/animating_thousands_of_fish>` +- :doc:`Using MultiMeshInstance <../tutorials/3d/using_multi_mesh_instance>` - :doc:`Optimization using MultiMeshes <../tutorials/performance/using_multimesh>` +- :doc:`Animating thousands of fish with MultiMeshInstance <../tutorials/performance/vertex_animation/animating_thousands_of_fish>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_multimeshinstance3d.rst b/classes/class_multimeshinstance3d.rst index a7d57fe19..cf31dbebe 100644 --- a/classes/class_multimeshinstance3d.rst +++ b/classes/class_multimeshinstance3d.rst @@ -28,12 +28,12 @@ This is useful to optimize the rendering of a high number of instances of a give Tutorials --------- -- :doc:`Animating thousands of fish with MultiMeshInstance <../tutorials/performance/vertex_animation/animating_thousands_of_fish>` - - :doc:`Using MultiMeshInstance <../tutorials/3d/using_multi_mesh_instance>` - :doc:`Optimization using MultiMeshes <../tutorials/performance/using_multimesh>` +- :doc:`Animating thousands of fish with MultiMeshInstance <../tutorials/performance/vertex_animation/animating_thousands_of_fish>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_navigationagent2d.rst b/classes/class_navigationagent2d.rst index 85c2e9feb..a7eb528ba 100644 --- a/classes/class_navigationagent2d.rst +++ b/classes/class_navigationagent2d.rst @@ -179,7 +179,7 @@ The details dictionary may contain the following keys depending on the value of **navigation_finished** **(** **)** -Notifies when the final position is reached. +Emitted once per loaded path when the agent internal navigation path index reaches the last index of the loaded path array. The agent internal navigation path index can be received with :ref:`get_current_navigation_path_index<class_NavigationAgent2D_method_get_current_navigation_path_index>`. .. rst-class:: classref-item-separator @@ -191,7 +191,13 @@ Notifies when the final position is reached. **path_changed** **(** **)** -Notifies when the navigation path changes. +Emitted when the agent had to update the loaded path: + +- because path was previously empty. + +- because navigation map has changed. + +- because agent pushed further away from the current path segment than the :ref:`path_max_distance<class_NavigationAgent2D_property_path_max_distance>`. .. rst-class:: classref-item-separator @@ -203,7 +209,7 @@ Notifies when the navigation path changes. **target_reached** **(** **)** -Notifies when the player-defined :ref:`target_position<class_NavigationAgent2D_property_target_position>` is reached. +Emitted once per loaded path when the agent's global position is the first time within :ref:`target_desired_distance<class_NavigationAgent2D_property_target_desired_distance>` to the :ref:`target_position<class_NavigationAgent2D_property_target_position>`. .. rst-class:: classref-item-separator @@ -741,7 +747,7 @@ Returns the path query result for the path the agent is currently following. :ref:`Vector2<class_Vector2>` **get_final_position** **(** **)** -Returns the reachable final position of the current navigation path in global coordinates. This can change if the navigation path is altered in any way. Because of this, it would be best to check this each frame. +Returns the reachable final position of the current navigation path in global coordinates. This position can change if the agent needs to update the navigation path which makes the agent emit the :ref:`path_changed<class_NavigationAgent2D_signal_path_changed>` signal. .. rst-class:: classref-item-separator @@ -801,7 +807,9 @@ Returns the :ref:`RID<class_RID>` of this agent on the :ref:`NavigationServer2D< :ref:`bool<class_bool>` **is_navigation_finished** **(** **)** -Returns true if the navigation path's final position has been reached. +Returns ``true`` if the end of the currently loaded navigation path has been reached. + +\ **Note:** While true prefer to stop calling update functions like :ref:`get_next_path_position<class_NavigationAgent2D_method_get_next_path_position>`. This avoids jittering the standing agent due to calling repeated path updates. .. rst-class:: classref-item-separator @@ -813,7 +821,7 @@ Returns true if the navigation path's final position has been reached. :ref:`bool<class_bool>` **is_target_reachable** **(** **)** -Returns true if :ref:`target_position<class_NavigationAgent2D_property_target_position>` is reachable. The target position is set using :ref:`target_position<class_NavigationAgent2D_property_target_position>`. +Returns ``true`` if :ref:`get_final_position<class_NavigationAgent2D_method_get_final_position>` is within :ref:`target_desired_distance<class_NavigationAgent2D_property_target_desired_distance>` of the :ref:`target_position<class_NavigationAgent2D_property_target_position>`. .. rst-class:: classref-item-separator diff --git a/classes/class_navigationagent3d.rst b/classes/class_navigationagent3d.rst index be962a00e..b04dae80a 100644 --- a/classes/class_navigationagent3d.rst +++ b/classes/class_navigationagent3d.rst @@ -169,9 +169,9 @@ The details dictionary may contain the following keys depending on the value of - ``owner``: The object which manages the link (usually :ref:`NavigationLink3D<class_NavigationLink3D>`). -- ``link_entry_position``: If ``owner`` is available and the owner is a :ref:`NavigationLink2D<class_NavigationLink2D>`, it will contain the global position of the link's point the agent is entering. +- ``link_entry_position``: If ``owner`` is available and the owner is a :ref:`NavigationLink3D<class_NavigationLink3D>`, it will contain the global position of the link's point the agent is entering. -- ``link_exit_position``: If ``owner`` is available and the owner is a :ref:`NavigationLink2D<class_NavigationLink2D>`, it will contain the global position of the link's point which the agent is exiting. +- ``link_exit_position``: If ``owner`` is available and the owner is a :ref:`NavigationLink3D<class_NavigationLink3D>`, it will contain the global position of the link's point which the agent is exiting. .. rst-class:: classref-item-separator @@ -183,7 +183,7 @@ The details dictionary may contain the following keys depending on the value of **navigation_finished** **(** **)** -Notifies when the final position is reached. +Emitted once per loaded path when the agent internal navigation path index reaches the last index of the loaded path array. The agent internal navigation path index can be received with :ref:`get_current_navigation_path_index<class_NavigationAgent3D_method_get_current_navigation_path_index>`. .. rst-class:: classref-item-separator @@ -195,7 +195,13 @@ Notifies when the final position is reached. **path_changed** **(** **)** -Notifies when the navigation path changes. +Emitted when the agent had to update the loaded path: + +- because path was previously empty. + +- because navigation map has changed. + +- because agent pushed further away from the current path segment than the :ref:`path_max_distance<class_NavigationAgent3D_property_path_max_distance>`. .. rst-class:: classref-item-separator @@ -207,7 +213,7 @@ Notifies when the navigation path changes. **target_reached** **(** **)** -Notifies when the player-defined :ref:`target_position<class_NavigationAgent3D_property_target_position>` is reached. +Emitted once per loaded path when the agent's global position is the first time within :ref:`target_desired_distance<class_NavigationAgent3D_property_target_desired_distance>` to the :ref:`target_position<class_NavigationAgent3D_property_target_position>`. .. rst-class:: classref-item-separator @@ -781,7 +787,7 @@ Returns the path query result for the path the agent is currently following. :ref:`Vector3<class_Vector3>` **get_final_position** **(** **)** -Returns the reachable final position of the current navigation path in global coordinates. This position can change if the navigation path is altered in any way. Because of this, it would be best to check this each frame. +Returns the reachable final position of the current navigation path in global coordinates. This position can change if the agent needs to update the navigation path which makes the agent emit the :ref:`path_changed<class_NavigationAgent3D_signal_path_changed>` signal. .. rst-class:: classref-item-separator @@ -841,7 +847,9 @@ Returns the :ref:`RID<class_RID>` of this agent on the :ref:`NavigationServer3D< :ref:`bool<class_bool>` **is_navigation_finished** **(** **)** -Returns true if the navigation path's final position has been reached. +Returns ``true`` if the end of the currently loaded navigation path has been reached. + +\ **Note:** While true prefer to stop calling update functions like :ref:`get_next_path_position<class_NavigationAgent3D_method_get_next_path_position>`. This avoids jittering the standing agent due to calling repeated path updates. .. rst-class:: classref-item-separator @@ -853,7 +861,7 @@ Returns true if the navigation path's final position has been reached. :ref:`bool<class_bool>` **is_target_reachable** **(** **)** -Returns true if :ref:`target_position<class_NavigationAgent3D_property_target_position>` is reachable. The target position is set using :ref:`target_position<class_NavigationAgent3D_property_target_position>`. +Returns ``true`` if :ref:`get_final_position<class_NavigationAgent3D_method_get_final_position>` is within :ref:`target_desired_distance<class_NavigationAgent3D_property_target_desired_distance>` of the :ref:`target_position<class_NavigationAgent3D_property_target_position>`. .. rst-class:: classref-item-separator diff --git a/classes/class_navigationmesh.rst b/classes/class_navigationmesh.rst index ec889e080..2fd5e9fad 100644 --- a/classes/class_navigationmesh.rst +++ b/classes/class_navigationmesh.rst @@ -26,10 +26,10 @@ A navigation mesh is a collection of polygons that define which areas of an envi Tutorials --------- -- `3D Navmesh Demo <https://godotengine.org/asset-library/asset/124>`__ - - :doc:`Using NavigationMeshes <../tutorials/navigation/navigation_using_navigationmeshes>` +- `3D Navmesh Demo <https://godotengine.org/asset-library/asset/124>`__ + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_navigationserver3d.rst b/classes/class_navigationserver3d.rst index 9d9efbce4..8b4afe515 100644 --- a/classes/class_navigationserver3d.rst +++ b/classes/class_navigationserver3d.rst @@ -19,7 +19,7 @@ A server interface for low-level 3D navigation access. Description ----------- -NavigationServer2D is the server that handles navigation maps, regions and agents. It does not handle A\* navigation from :ref:`AStar3D<class_AStar3D>`. +NavigationServer3D is the server that handles navigation maps, regions and agents. It does not handle A\* navigation from :ref:`AStar3D<class_AStar3D>`. Maps are made up of regions, which are made of navigation meshes. Together, they define the navigable areas in the 3D world. diff --git a/classes/class_node.rst b/classes/class_node.rst index 25127c32b..950418a6a 100644 --- a/classes/class_node.rst +++ b/classes/class_node.rst @@ -472,7 +472,7 @@ enum **ProcessThreadGroup**: :ref:`ProcessThreadGroup<enum_Node_ProcessThreadGroup>` **PROCESS_THREAD_GROUP_INHERIT** = ``0`` -If the :ref:`process_thread_group<class_Node_property_process_thread_group>` property is sent to this, the node will belong to any parent (or grandparent) node that has a thread group mode that is not inherit. See :ref:`process_thread_group<class_Node_property_process_thread_group>` for more information. +Process this node based on the thread group mode of the first parent (or grandparent) node that has a thread group mode that is not inherit. See :ref:`process_thread_group<class_Node_property_process_thread_group>` for more information. .. _class_Node_constant_PROCESS_THREAD_GROUP_MAIN_THREAD: @@ -480,7 +480,7 @@ If the :ref:`process_thread_group<class_Node_property_process_thread_group>` pro :ref:`ProcessThreadGroup<enum_Node_ProcessThreadGroup>` **PROCESS_THREAD_GROUP_MAIN_THREAD** = ``1`` -Process this node (and children nodes set to inherit) on the main thread. See :ref:`process_thread_group<class_Node_property_process_thread_group>` for more information. +Process this node (and child nodes set to inherit) on the main thread. See :ref:`process_thread_group<class_Node_property_process_thread_group>` for more information. .. _class_Node_constant_PROCESS_THREAD_GROUP_SUB_THREAD: @@ -488,7 +488,7 @@ Process this node (and children nodes set to inherit) on the main thread. See :r :ref:`ProcessThreadGroup<enum_Node_ProcessThreadGroup>` **PROCESS_THREAD_GROUP_SUB_THREAD** = ``2`` -Process this node (and children nodes set to inherit) on a sub-thread. See :ref:`process_thread_group<class_Node_property_process_thread_group>` for more information. +Process this node (and child nodes set to inherit) on a sub-thread. See :ref:`process_thread_group<class_Node_property_process_thread_group>` for more information. .. rst-class:: classref-item-separator @@ -592,7 +592,7 @@ Node will not be internal. :ref:`InternalMode<enum_Node_InternalMode>` **INTERNAL_MODE_FRONT** = ``1`` -Node will be placed at the front of parent's node list, before any non-internal sibling. +The node will be placed at the beginning of the parent's children, before any non-internal sibling. .. _class_Node_constant_INTERNAL_MODE_BACK: @@ -600,7 +600,7 @@ Node will be placed at the front of parent's node list, before any non-internal :ref:`InternalMode<enum_Node_InternalMode>` **INTERNAL_MODE_BACK** = ``2`` -Node will be placed at the back of parent's node list, after any non-internal sibling. +The node will be placed at the end of the parent's children, after any non-internal sibling. .. rst-class:: classref-section-separator @@ -1143,7 +1143,7 @@ By default, the thread group is :ref:`PROCESS_THREAD_GROUP_INHERIT<class_Node_co During processing in a sub-thread, accessing most functions in nodes outside the thread group is forbidden (and it will result in an error in debug mode). Use :ref:`Object.call_deferred<class_Object_method_call_deferred>`, :ref:`call_thread_safe<class_Node_method_call_thread_safe>`, :ref:`call_deferred_thread_group<class_Node_method_call_deferred_thread_group>` and the likes in order to communicate from the thread groups to the main thread (or to other thread groups). -To better understand process thread groups, the idea is that any node set to any other value than :ref:`PROCESS_THREAD_GROUP_INHERIT<class_Node_constant_PROCESS_THREAD_GROUP_INHERIT>` will include any children (and grandchildren) nodes set to inherit into its process thread group. this means that the processing of all the nodes in the group will happen together, at the same time as the node including them. +To better understand process thread groups, the idea is that any node set to any other value than :ref:`PROCESS_THREAD_GROUP_INHERIT<class_Node_constant_PROCESS_THREAD_GROUP_INHERIT>` will include any child (and grandchild) nodes set to inherit into its process thread group. This means that the processing of all the nodes in the group will happen together, at the same time as the node including them. .. rst-class:: classref-item-separator @@ -1361,7 +1361,7 @@ Usually used for initialization. For even earlier initialization, :ref:`Object._ void **_shortcut_input** **(** :ref:`InputEvent<class_InputEvent>` event **)** |virtual| -Called when an :ref:`InputEventKey<class_InputEventKey>` or :ref:`InputEventShortcut<class_InputEventShortcut>` hasn't been consumed by :ref:`_input<class_Node_method__input>` or any GUI :ref:`Control<class_Control>` item. The input event propagates up through the node tree until a node consumes it. +Called when an :ref:`InputEventKey<class_InputEventKey>`\ ¸ :ref:`InputEventShortcut<class_InputEventShortcut>`, or :ref:`InputEventJoypadButton<class_InputEventJoypadButton>` hasn't been consumed by :ref:`_input<class_Node_method__input>` or any GUI :ref:`Control<class_Control>` item. The input event propagates up through the node tree until a node consumes it. It is only called if shortcut processing is enabled, which is done automatically if this method is overridden, and can be toggled with :ref:`set_process_shortcut_input<class_Node_method_set_process_shortcut_input>`. @@ -1939,7 +1939,7 @@ Returns ``true`` if this is an instance load placeholder. See :ref:`InstancePlac :ref:`SceneTree<class_SceneTree>` **get_tree** **(** **)** |const| -Returns the :ref:`SceneTree<class_SceneTree>` that contains this node. +Returns the :ref:`SceneTree<class_SceneTree>` that contains this node. Returns ``null`` and prints an error if this node is not inside the scene tree. See also :ref:`is_inside_tree<class_Node_method_is_inside_tree>`. .. rst-class:: classref-item-separator diff --git a/classes/class_node2d.rst b/classes/class_node2d.rst index c1668ac62..10a493e2d 100644 --- a/classes/class_node2d.rst +++ b/classes/class_node2d.rst @@ -342,7 +342,7 @@ Multiplies the current scale by the ``ratio`` vector. Returns the angle between the node and the ``point`` in radians. -\ `Illustration of the returned angle. <https://raw.githubusercontent.com/godotengine/godot-docs/master/img/node2d_get_angle_to.png>`__ +\ `Illustration of the returned angle. <https://raw.githubusercontent.com/godotengine/godot-docs/4.1/img/node2d_get_angle_to.png>`__ .. rst-class:: classref-item-separator diff --git a/classes/class_node3d.rst b/classes/class_node3d.rst index c5d5006a5..97e9daa78 100644 --- a/classes/class_node3d.rst +++ b/classes/class_node3d.rst @@ -633,7 +633,9 @@ Returns all the gizmos attached to this ``Node3D``. :ref:`Node3D<class_Node3D>` **get_parent_node_3d** **(** **)** |const| -Returns the parent **Node3D**, or an empty :ref:`Object<class_Object>` if no parent exists or parent is not of type **Node3D**. +Returns the parent **Node3D**, or ``null`` if no parent exists, the parent is not of type **Node3D**, or :ref:`top_level<class_Node3D_property_top_level>` is ``true``. + +\ **Note:** Calling this method is not equivalent to ``get_parent() as Node3D``, which does not take :ref:`top_level<class_Node3D_property_top_level>` into account. .. rst-class:: classref-item-separator diff --git a/classes/class_object.rst b/classes/class_object.rst index 91069dfc2..1395406bf 100644 --- a/classes/class_object.rst +++ b/classes/class_object.rst @@ -10,7 +10,7 @@ Object ====== -**Inherited By:** :ref:`AudioServer<class_AudioServer>`, :ref:`CameraServer<class_CameraServer>`, :ref:`ClassDB<class_ClassDB>`, :ref:`DisplayServer<class_DisplayServer>`, :ref:`EditorFileSystemDirectory<class_EditorFileSystemDirectory>`, :ref:`EditorInterface<class_EditorInterface>`, :ref:`EditorPaths<class_EditorPaths>`, :ref:`EditorSelection<class_EditorSelection>`, :ref:`EditorUndoRedoManager<class_EditorUndoRedoManager>`, :ref:`EditorVCSInterface<class_EditorVCSInterface>`, :ref:`Engine<class_Engine>`, :ref:`EngineDebugger<class_EngineDebugger>`, :ref:`GDExtensionManager<class_GDExtensionManager>`, :ref:`Geometry2D<class_Geometry2D>`, :ref:`Geometry3D<class_Geometry3D>`, :ref:`GodotSharp<class_GodotSharp>`, :ref:`Input<class_Input>`, :ref:`InputMap<class_InputMap>`, :ref:`IP<class_IP>`, :ref:`JavaClassWrapper<class_JavaClassWrapper>`, :ref:`JavaScriptBridge<class_JavaScriptBridge>`, :ref:`JNISingleton<class_JNISingleton>`, :ref:`JSONRPC<class_JSONRPC>`, :ref:`MainLoop<class_MainLoop>`, :ref:`Marshalls<class_Marshalls>`, :ref:`MovieWriter<class_MovieWriter>`, :ref:`NavigationMeshGenerator<class_NavigationMeshGenerator>`, :ref:`NavigationServer2D<class_NavigationServer2D>`, :ref:`NavigationServer3D<class_NavigationServer3D>`, :ref:`Node<class_Node>`, :ref:`OS<class_OS>`, :ref:`Performance<class_Performance>`, :ref:`PhysicsDirectBodyState2D<class_PhysicsDirectBodyState2D>`, :ref:`PhysicsDirectBodyState3D<class_PhysicsDirectBodyState3D>`, :ref:`PhysicsDirectSpaceState2D<class_PhysicsDirectSpaceState2D>`, :ref:`PhysicsDirectSpaceState3D<class_PhysicsDirectSpaceState3D>`, :ref:`PhysicsServer2D<class_PhysicsServer2D>`, :ref:`PhysicsServer2DManager<class_PhysicsServer2DManager>`, :ref:`PhysicsServer3D<class_PhysicsServer3D>`, :ref:`PhysicsServer3DManager<class_PhysicsServer3DManager>`, :ref:`PhysicsServer3DRenderingServerHandler<class_PhysicsServer3DRenderingServerHandler>`, :ref:`ProjectSettings<class_ProjectSettings>`, :ref:`RefCounted<class_RefCounted>`, :ref:`RenderingDevice<class_RenderingDevice>`, :ref:`RenderingServer<class_RenderingServer>`, :ref:`ResourceLoader<class_ResourceLoader>`, :ref:`ResourceSaver<class_ResourceSaver>`, :ref:`ResourceUID<class_ResourceUID>`, :ref:`ScriptLanguage<class_ScriptLanguage>`, :ref:`TextServerManager<class_TextServerManager>`, :ref:`ThemeDB<class_ThemeDB>`, :ref:`TileData<class_TileData>`, :ref:`Time<class_Time>`, :ref:`TranslationServer<class_TranslationServer>`, :ref:`TreeItem<class_TreeItem>`, :ref:`UndoRedo<class_UndoRedo>`, :ref:`WorkerThreadPool<class_WorkerThreadPool>`, :ref:`XRServer<class_XRServer>` +**Inherited By:** :ref:`AudioServer<class_AudioServer>`, :ref:`CameraServer<class_CameraServer>`, :ref:`ClassDB<class_ClassDB>`, :ref:`DisplayServer<class_DisplayServer>`, :ref:`EditorFileSystemDirectory<class_EditorFileSystemDirectory>`, :ref:`EditorInterface<class_EditorInterface>`, :ref:`EditorPaths<class_EditorPaths>`, :ref:`EditorSelection<class_EditorSelection>`, :ref:`EditorUndoRedoManager<class_EditorUndoRedoManager>`, :ref:`EditorVCSInterface<class_EditorVCSInterface>`, :ref:`Engine<class_Engine>`, :ref:`EngineDebugger<class_EngineDebugger>`, :ref:`GDExtensionManager<class_GDExtensionManager>`, :ref:`Geometry2D<class_Geometry2D>`, :ref:`Geometry3D<class_Geometry3D>`, :ref:`GodotSharp<class_GodotSharp>`, :ref:`Input<class_Input>`, :ref:`InputMap<class_InputMap>`, :ref:`IP<class_IP>`, :ref:`JavaClassWrapper<class_JavaClassWrapper>`, :ref:`JavaScriptBridge<class_JavaScriptBridge>`, :ref:`JNISingleton<class_JNISingleton>`, :ref:`JSONRPC<class_JSONRPC>`, :ref:`MainLoop<class_MainLoop>`, :ref:`Marshalls<class_Marshalls>`, :ref:`MovieWriter<class_MovieWriter>`, :ref:`NavigationMeshGenerator<class_NavigationMeshGenerator>`, :ref:`NavigationServer2D<class_NavigationServer2D>`, :ref:`NavigationServer3D<class_NavigationServer3D>`, :ref:`Node<class_Node>`, :ref:`OpenXRInteractionProfileMetadata<class_OpenXRInteractionProfileMetadata>`, :ref:`OS<class_OS>`, :ref:`Performance<class_Performance>`, :ref:`PhysicsDirectBodyState2D<class_PhysicsDirectBodyState2D>`, :ref:`PhysicsDirectBodyState3D<class_PhysicsDirectBodyState3D>`, :ref:`PhysicsDirectSpaceState2D<class_PhysicsDirectSpaceState2D>`, :ref:`PhysicsDirectSpaceState3D<class_PhysicsDirectSpaceState3D>`, :ref:`PhysicsServer2D<class_PhysicsServer2D>`, :ref:`PhysicsServer2DManager<class_PhysicsServer2DManager>`, :ref:`PhysicsServer3D<class_PhysicsServer3D>`, :ref:`PhysicsServer3DManager<class_PhysicsServer3DManager>`, :ref:`PhysicsServer3DRenderingServerHandler<class_PhysicsServer3DRenderingServerHandler>`, :ref:`ProjectSettings<class_ProjectSettings>`, :ref:`RefCounted<class_RefCounted>`, :ref:`RenderingDevice<class_RenderingDevice>`, :ref:`RenderingServer<class_RenderingServer>`, :ref:`ResourceLoader<class_ResourceLoader>`, :ref:`ResourceSaver<class_ResourceSaver>`, :ref:`ResourceUID<class_ResourceUID>`, :ref:`ScriptLanguage<class_ScriptLanguage>`, :ref:`TextServerManager<class_TextServerManager>`, :ref:`ThemeDB<class_ThemeDB>`, :ref:`TileData<class_TileData>`, :ref:`Time<class_Time>`, :ref:`TranslationServer<class_TranslationServer>`, :ref:`TreeItem<class_TreeItem>`, :ref:`UndoRedo<class_UndoRedo>`, :ref:`WorkerThreadPool<class_WorkerThreadPool>`, :ref:`XRServer<class_XRServer>` Base class for all other classes in the engine. @@ -21,7 +21,7 @@ Description An advanced :ref:`Variant<class_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<class_Sprite2D>` instance is able to call :ref:`Node.add_child<class_Node_method_add_child>` because it inherits from :ref:`Node<class_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<class_Object_method_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<class_RefCounted>` (and by extension :ref:`Resource<class_Resource>`) deletes itself when no longer referenced, and :ref:`Node<class_Node>` deletes its children when freed. @@ -304,7 +304,7 @@ Combined with :ref:`_set<class_Object_method__set>` and :ref:`_get_property_list .. code-tab:: gdscript func _get(property): - if (property == "fake_property"): + if property == "fake_property": print("Getting my property!") return 4 @@ -447,7 +447,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<class_Object_method__init>` is defined with *required* parameters, the Object with script may only be created directly. If any other means (such as :ref:`PackedScene.instantiate<class_PackedScene_method_instantiate>` or :ref:`Node.duplicate<class_Node_method_duplicate>`) are used, the script's initialization will fail. @@ -533,9 +533,14 @@ Combined with :ref:`_get<class_Object_method__get>` and :ref:`_get_property_list .. code-tab:: gdscript + var internal_data = {} + func _set(property, value): - if (property == "fake_property"): - print("Setting my property to ", value) + if property == "fake_property": + # Storing the value in the fake property. + internal_data["fake_property"] = value + return true + return false func _get_property_list(): return [ @@ -544,11 +549,14 @@ Combined with :ref:`_get<class_Object_method__get>` and :ref:`_get_property_list .. code-tab:: csharp - public override void _Set(StringName property, Variant value) + private Godot.Collections.Dictionary _internalData = new Godot.Collections.Dictionary(); + + public override bool _Set(StringName property, Variant value) { if (property == "FakeProperty") { - GD.Print($"Setting my property to {value}"); + // Storing the value in the fake property. + _internalData["FakeProperty"] = value; return true; } @@ -671,7 +679,7 @@ Calls the ``method`` on the object and returns the result. This method supports Calls the ``method`` on the object during idle time. Always returns null, **not** the method's result. -Idle time happens mainly at the end of process and physics frames. In it, deferred calls will be run until there are none left, which means you can defer calls from other deferred calls and they'll still be run in the current idle time cycle. If not done carefully, this can result in infinite recursion without causing a stack overflow, which will hang the game similarly to an infinite loop. +Idle time happens mainly at the end of process and physics frames. In it, deferred calls will be run until there are none left, which means you can defer calls from other deferred calls and they'll still be run in the current idle time cycle. This means you should not call a method deferred from itself (or from a method called by it), as this causes infinite recursion the same way as if you had called the method directly. This method supports a variable number of arguments, so parameters can be passed as a comma separated list. @@ -1000,7 +1008,7 @@ Returns the :ref:`Variant<class_Variant>` value of the given ``property``. If th var node = new Node2D(); node.Rotation = 1.5f; - var a = node.Get("rotation"); // a is 1.5 + var a = node.Get(Node2D.PropertyName.Rotation); // a is 1.5 @@ -1457,7 +1465,7 @@ Assigns ``value`` to the given ``property``. If the property does not exist or t .. code-tab:: csharp var node = new Node2D(); - node.Set("global_scale", new Vector2(8, 2.5)); + node.Set(Node2D.PropertyName.GlobalScale, new Vector2(8, 2.5)); GD.Print(node.GlobalScale); // Prints Vector2(8, 2.5) @@ -1496,22 +1504,22 @@ Assigns ``value`` to the given ``property``, at the end of the current frame. Th var node = Node2D.new() add_child(node) - node.rotation = 45.0 - node.set_deferred("rotation", 90.0) - print(node.rotation) # Prints 45.0 + node.rotation = 1.5 + node.set_deferred("rotation", 3.0) + print(node.rotation) # Prints 1.5 await get_tree().process_frame - print(node.rotation) # Prints 90.0 + print(node.rotation) # Prints 3.0 .. code-tab:: csharp var node = new Node2D(); - node.Rotation = 45f; - node.SetDeferred("rotation", 90f); - GD.Print(node.Rotation); // Prints 45.0 + node.Rotation = 1.5f; + node.SetDeferred(Node2D.PropertyName.Rotation, 3f); + GD.Print(node.Rotation); // Prints 1.5 await ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame); - GD.Print(node.Rotation); // Prints 90.0 + GD.Print(node.Rotation); // Prints 3.0 diff --git a/classes/class_occluder3d.rst b/classes/class_occluder3d.rst index 418120e3a..d7987e23a 100644 --- a/classes/class_occluder3d.rst +++ b/classes/class_occluder3d.rst @@ -25,6 +25,13 @@ Description See :ref:`OccluderInstance3D<class_OccluderInstance3D>`'s documentation for instructions on setting up occlusion culling. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Occlusion culling <../tutorials/3d/occlusion_culling>` + .. rst-class:: classref-reftable-group Methods diff --git a/classes/class_occluderinstance3d.rst b/classes/class_occluderinstance3d.rst index 16d45d19a..3b4c33c59 100644 --- a/classes/class_occluderinstance3d.rst +++ b/classes/class_occluderinstance3d.rst @@ -29,6 +29,15 @@ The occlusion culling system works by rendering the occluders on the CPU in para \ **Note:** Occlusion culling is only effective if :ref:`ProjectSettings.rendering/occlusion_culling/use_occlusion_culling<class_ProjectSettings_property_rendering/occlusion_culling/use_occlusion_culling>` is ``true``. Enabling occlusion culling has a cost on the CPU. Only enable occlusion culling if you actually plan to use it. Large open scenes with few or no objects blocking the view will generally not benefit much from occlusion culling. Large open scenes generally benefit more from mesh LOD and visibility ranges (:ref:`GeometryInstance3D.visibility_range_begin<class_GeometryInstance3D_property_visibility_range_begin>` and :ref:`GeometryInstance3D.visibility_range_end<class_GeometryInstance3D_property_visibility_range_end>`) compared to occlusion culling. +\ **Note:** Due to memory constraints, occlusion culling is not supported by default in Web export templates. It can be enabled by compiling custom Web export templates with ``module_raycast_enabled=yes``. + +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Occlusion culling <../tutorials/3d/occlusion_culling>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_omnilight3d.rst b/classes/class_omnilight3d.rst index 46dd4d43c..866c2e625 100644 --- a/classes/class_omnilight3d.rst +++ b/classes/class_omnilight3d.rst @@ -32,6 +32,8 @@ Tutorials - :doc:`3D lights and shadows <../tutorials/3d/lights_and_shadows>` +- :doc:`Faking global illumination <../tutorials/3d/global_illumination/faking_global_illumination>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_openxrinteractionprofile.rst b/classes/class_openxrinteractionprofile.rst index 169a346aa..6552d67db 100644 --- a/classes/class_openxrinteractionprofile.rst +++ b/classes/class_openxrinteractionprofile.rst @@ -19,7 +19,7 @@ Suggested bindings object for OpenXR. Description ----------- -This object stores suggested bindings for an interaction profile. Interaction profiles define the meta data for a tracked XR device such as an XR controller. +This object stores suggested bindings for an interaction profile. Interaction profiles define the metadata for a tracked XR device such as an XR controller. For more information see the `interaction profiles info in the OpenXR specification <https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec.html#semantic-path-interaction-profiles>`__. diff --git a/classes/class_openxrinteractionprofilemetadata.rst b/classes/class_openxrinteractionprofilemetadata.rst new file mode 100644 index 000000000..28577f9eb --- /dev/null +++ b/classes/class_openxrinteractionprofilemetadata.rst @@ -0,0 +1,93 @@ +:github_url: hide + +.. DO NOT EDIT THIS FILE!!! +.. Generated automatically from Godot engine sources. +.. Generator: https://github.com/godotengine/godot/tree/4.1/doc/tools/make_rst.py. +.. XML source: https://github.com/godotengine/godot/tree/4.1/modules/openxr/doc_classes/OpenXRInteractionProfileMetadata.xml. + +.. _class_OpenXRInteractionProfileMetadata: + +OpenXRInteractionProfileMetadata +================================ + +**Inherits:** :ref:`Object<class_Object>` + +Meta class registering supported devices in OpenXR. + +.. rst-class:: classref-introduction-group + +Description +----------- + +This class allows OpenXR core and extensions to register metadata relating to supported interaction devices such as controllers, trackers, haptic devices, etc. It is primarily used by the action map editor and to sanitize any action map by removing extension-dependent entries when applicable. + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`register_interaction_profile<class_OpenXRInteractionProfileMetadata_method_register_interaction_profile>` **(** :ref:`String<class_String>` display_name, :ref:`String<class_String>` openxr_path, :ref:`String<class_String>` openxr_extension_name **)** | + +------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`register_io_path<class_OpenXRInteractionProfileMetadata_method_register_io_path>` **(** :ref:`String<class_String>` interaction_profile, :ref:`String<class_String>` display_name, :ref:`String<class_String>` toplevel_path, :ref:`String<class_String>` openxr_path, :ref:`String<class_String>` openxr_extension_name, :ref:`ActionType<enum_OpenXRAction_ActionType>` action_type **)** | + +------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`register_top_level_path<class_OpenXRInteractionProfileMetadata_method_register_top_level_path>` **(** :ref:`String<class_String>` display_name, :ref:`String<class_String>` openxr_path, :ref:`String<class_String>` openxr_extension_name **)** | + +------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_OpenXRInteractionProfileMetadata_method_register_interaction_profile: + +.. rst-class:: classref-method + +void **register_interaction_profile** **(** :ref:`String<class_String>` display_name, :ref:`String<class_String>` openxr_path, :ref:`String<class_String>` openxr_extension_name **)** + +Registers an interaction profile using its OpenXR designation (e.g. ``/interaction_profiles/khr/simple_controller`` is the profile for OpenXR's simple controller profile). + +\ ``display_name`` is the description shown to the user. ``openxr_path`` is the interaction profile path being registered. ``openxr_extension_name`` optionally restricts this profile to the given extension being enabled/available. If the extension is not available, the profile and all related entries used in an action map are filtered out. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRInteractionProfileMetadata_method_register_io_path: + +.. rst-class:: classref-method + +void **register_io_path** **(** :ref:`String<class_String>` interaction_profile, :ref:`String<class_String>` display_name, :ref:`String<class_String>` toplevel_path, :ref:`String<class_String>` openxr_path, :ref:`String<class_String>` openxr_extension_name, :ref:`ActionType<enum_OpenXRAction_ActionType>` action_type **)** + +Registers an input/output path for the given ``interaction_profile``. The profile should previously have been registered using :ref:`register_interaction_profile<class_OpenXRInteractionProfileMetadata_method_register_interaction_profile>`. ``display_name`` is the description shown to the user. ``toplevel_path`` specifies the bind path this input/output can be bound to (e.g. ``/user/hand/left`` or ``/user/hand/right``). ``openxr_path`` is the action input/output being registered (e.g. ``/user/hand/left/input/aim/pose``). ``openxr_extension_name`` restricts this input/output to an enabled/available extension, this doesn't need to repeat the extension on the profile but relates to overlapping extension (e.g. ``XR_EXT_palm_pose`` that introduces ``…/input/palm_ext/pose`` input paths). ``action_type`` defines the type of input or output provided by OpenXR. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRInteractionProfileMetadata_method_register_top_level_path: + +.. rst-class:: classref-method + +void **register_top_level_path** **(** :ref:`String<class_String>` display_name, :ref:`String<class_String>` openxr_path, :ref:`String<class_String>` openxr_extension_name **)** + +Registers a top level path to which profiles can be bound. For instance ``/user/hand/left`` refers to the bind point for the player's left hand. Extensions can register additional top level paths, for instance a haptic vest extension might register ``/user/body/vest``. + +\ ``display_name`` is the name shown to the user. ``openxr_path`` is the top level path being registered. ``openxr_extension_name`` is optional and ensures the top level path is only used if the specified extension is available/enabled. + +When a top level path ends up being bound by OpenXR, a :ref:`XRPositionalTracker<class_XRPositionalTracker>` is instantiated to manage the state of the device. + +.. |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.)` +.. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` +.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` +.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` +.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)` +.. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)` diff --git a/classes/class_os.rst b/classes/class_os.rst index 5738a40f3..6b18323fd 100644 --- a/classes/class_os.rst +++ b/classes/class_os.rst @@ -531,6 +531,8 @@ If you wish to access a shell built-in or execute a composite command, a platfor \ **Note:** On macOS, sandboxed applications are limited to run only embedded helper executables, specified during export. +\ **Note:** On Android, system commands such as ``dumpsys`` can only be run on a rooted device. + .. rst-class:: classref-item-separator ---- @@ -630,9 +632,11 @@ For example, in the command line below, ``--fullscreen`` will not be returned in :: - godot --fullscreen -- --level 1 - # Or: - godot --fullscreen ++ --level 1 + # Godot has been executed with the following command: + # godot --fullscreen -- --level=2 --hardcore + + OS.get_cmdline_args() # Returns ["--fullscreen", "--level=2", "--hardcore"] + OS.get_cmdline_user_args() # Returns ["--level=2", "--hardcore"] .. rst-class:: classref-item-separator diff --git a/classes/class_packedbytearray.rst b/classes/class_packedbytearray.rst index 8bfd8d236..ad7b301fb 100644 --- a/classes/class_packedbytearray.rst +++ b/classes/class_packedbytearray.rst @@ -467,6 +467,8 @@ Decodes a size of a :ref:`Variant<class_Variant>` from the bytes starting at ``b Returns a new **PackedByteArray** with the data decompressed. Set ``buffer_size`` to the size of the uncompressed data. Set the compression mode using one of :ref:`CompressionMode<enum_FileAccess_CompressionMode>`'s constants. +\ **Note:** Decompression is not guaranteed to work with data not compressed by Godot, for example if data compressed with the deflate compression mode lacks a checksum or header. + .. rst-class:: classref-item-separator ---- @@ -483,6 +485,8 @@ This method is potentially slower than ``decompress``, as it may have to re-allo GZIP has a maximal compression ratio of 1032:1, meaning it's very possible for a small compressed payload to decompress to a potentially very large output. To guard against this, you may provide a maximum size this function is allowed to allocate in bytes via ``max_output_size``. Passing -1 will allow for unbounded output. If any positive value is passed, and the decompression exceeds that amount in bytes, then an error will be returned. +\ **Note:** Decompression is not guaranteed to work with data not compressed by Godot, for example if data compressed with the deflate compression mode lacks a checksum or header. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_packedscene.rst b/classes/class_packedscene.rst index 83e186f52..4a596c0f4 100644 --- a/classes/class_packedscene.rst +++ b/classes/class_packedscene.rst @@ -208,7 +208,7 @@ Property Descriptions A dictionary representation of the scene contents. -Available keys include "rnames" and "variants" for resources, "node_count", "nodes", "node_paths" for nodes, "editable_instances" for base scene children overrides, "conn_count" and "conns" for signal connections, and "version" for the format style of the PackedScene. +Available keys include "rnames" and "variants" for resources, "node_count", "nodes", "node_paths" for nodes, "editable_instances" for paths to overridden nodes, "conn_count" and "conns" for signal connections, and "version" for the format style of the PackedScene. .. rst-class:: classref-section-separator diff --git a/classes/class_packetpeerudp.rst b/classes/class_packetpeerudp.rst index 62d9b8def..46383936f 100644 --- a/classes/class_packetpeerudp.rst +++ b/classes/class_packetpeerudp.rst @@ -256,7 +256,7 @@ Waits for a packet to arrive on the bound address. See :ref:`bind<class_PacketPe .. code-tab:: csharp - var socket = new PacketPeerUDP(); + var socket = new PacketPeerUdp(); // Server socket.SetDestAddress("127.0.0.1", 789); socket.PutPacket("Time to stop".ToAsciiBuffer()); diff --git a/classes/class_parallaxlayer.rst b/classes/class_parallaxlayer.rst index d2df59813..895315090 100644 --- a/classes/class_parallaxlayer.rst +++ b/classes/class_parallaxlayer.rst @@ -61,11 +61,13 @@ Property Descriptions - void **set_mirroring** **(** :ref:`Vector2<class_Vector2>` value **)** - :ref:`Vector2<class_Vector2>` **get_mirroring** **(** **)** -The ParallaxLayer's :ref:`Texture2D<class_Texture2D>` repeating. Useful for creating an infinite scrolling background. If an axis is set to ``0``, the :ref:`Texture2D<class_Texture2D>` will not be repeated. +The interval, in pixels, at which the **ParallaxLayer** is drawn repeatedly. Useful for creating an infinitely scrolling background. If an axis is set to ``0``, the **ParallaxLayer** will be drawn only once along that direction. -If the length of the viewport axis is bigger than twice the repeated axis size, it will not repeat infinitely, as the parallax layer only draws 2 instances of the texture at any given time. +\ **Note:** If you want the repetition to pixel-perfect match a :ref:`Texture2D<class_Texture2D>` displayed by a child node, you should account for any scale applied to the texture when defining this interval. For example, if you use a child :ref:`Sprite2D<class_Sprite2D>` scaled to ``0.5`` to display a 600x600 texture, and want this sprite to be repeated continuously horizontally, you should set the mirroring to ``Vector2(300, 0)``. -\ **Note:** Despite its name, the texture will not be mirrored, it will simply be repeated. +\ **Note:** If the length of the viewport axis is bigger than twice the repeated axis size, it will not repeat infinitely, as the parallax layer only draws 2 instances of the layer at any given time. The visibility window is calculated from the parent :ref:`ParallaxBackground<class_ParallaxBackground>`'s position, not the layer's own position. So, if you use mirroring, **do not** change the **ParallaxLayer** position relative to its parent. Instead, if you need to adjust the background's position, set the :ref:`CanvasLayer.offset<class_CanvasLayer_property_offset>` property in the parent :ref:`ParallaxBackground<class_ParallaxBackground>`. + +\ **Note:** Despite the name, the layer will not be mirrored, it will only be repeated. .. rst-class:: classref-item-separator diff --git a/classes/class_pckpacker.rst b/classes/class_pckpacker.rst index 27cfbde80..53c589d34 100644 --- a/classes/class_pckpacker.rst +++ b/classes/class_pckpacker.rst @@ -33,7 +33,7 @@ The **PCKPacker** is used to create packages that can be loaded into a running p .. code-tab:: csharp - var packer = new PCKPacker(); + var packer = new PckPacker(); packer.PckStart("test.pck"); packer.AddFile("res://text.txt", "text.txt"); packer.Flush(); diff --git a/classes/class_physicalbone3d.rst b/classes/class_physicalbone3d.rst index 25591eea2..c5a3c9150 100644 --- a/classes/class_physicalbone3d.rst +++ b/classes/class_physicalbone3d.rst @@ -266,6 +266,8 @@ Sets the body's transform. The body's bounciness. Values range from ``0`` (no bounce) to ``1`` (full bounciness). +\ **Note:** Even with :ref:`bounce<class_PhysicalBone3D_property_bounce>` set to ``1.0``, some energy will be lost over time due to linear and angular damping. To have a **PhysicalBone3D** that preserves all its energy over time, set :ref:`bounce<class_PhysicalBone3D_property_bounce>` to ``1.0``, :ref:`linear_damp_mode<class_PhysicalBone3D_property_linear_damp_mode>` to :ref:`DAMP_MODE_REPLACE<class_PhysicalBone3D_constant_DAMP_MODE_REPLACE>`, :ref:`linear_damp<class_PhysicalBone3D_property_linear_damp>` to ``0.0``, :ref:`angular_damp_mode<class_PhysicalBone3D_property_angular_damp_mode>` to :ref:`DAMP_MODE_REPLACE<class_PhysicalBone3D_constant_DAMP_MODE_REPLACE>`, and :ref:`angular_damp<class_PhysicalBone3D_property_angular_damp>` to ``0.0``. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_physicsdirectbodystate2dextension.rst b/classes/class_physicsdirectbodystate2dextension.rst index 24b979719..5b95bf916 100644 --- a/classes/class_physicsdirectbodystate2dextension.rst +++ b/classes/class_physicsdirectbodystate2dextension.rst @@ -136,9 +136,7 @@ Method Descriptions void **_add_constant_central_force** **(** :ref:`Vector2<class_Vector2>` force **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.add_constant_central_force<class_PhysicsDirectBodyState2D_method_add_constant_central_force>`. .. rst-class:: classref-item-separator @@ -150,9 +148,7 @@ void **_add_constant_central_force** **(** :ref:`Vector2<class_Vector2>` force * void **_add_constant_force** **(** :ref:`Vector2<class_Vector2>` force, :ref:`Vector2<class_Vector2>` position **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.add_constant_force<class_PhysicsDirectBodyState2D_method_add_constant_force>`. .. rst-class:: classref-item-separator @@ -164,9 +160,7 @@ void **_add_constant_force** **(** :ref:`Vector2<class_Vector2>` force, :ref:`Ve void **_add_constant_torque** **(** :ref:`float<class_float>` torque **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.add_constant_torque<class_PhysicsDirectBodyState2D_method_add_constant_torque>`. .. rst-class:: classref-item-separator @@ -178,9 +172,7 @@ void **_add_constant_torque** **(** :ref:`float<class_float>` torque **)** |virt void **_apply_central_force** **(** :ref:`Vector2<class_Vector2>` force **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.apply_central_force<class_PhysicsDirectBodyState2D_method_apply_central_force>`. .. rst-class:: classref-item-separator @@ -192,9 +184,7 @@ void **_apply_central_force** **(** :ref:`Vector2<class_Vector2>` force **)** |v void **_apply_central_impulse** **(** :ref:`Vector2<class_Vector2>` impulse **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.apply_central_impulse<class_PhysicsDirectBodyState2D_method_apply_central_impulse>`. .. rst-class:: classref-item-separator @@ -206,9 +196,7 @@ void **_apply_central_impulse** **(** :ref:`Vector2<class_Vector2>` impulse **)* void **_apply_force** **(** :ref:`Vector2<class_Vector2>` force, :ref:`Vector2<class_Vector2>` position **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.apply_force<class_PhysicsDirectBodyState2D_method_apply_force>`. .. rst-class:: classref-item-separator @@ -220,9 +208,7 @@ void **_apply_force** **(** :ref:`Vector2<class_Vector2>` force, :ref:`Vector2<c void **_apply_impulse** **(** :ref:`Vector2<class_Vector2>` impulse, :ref:`Vector2<class_Vector2>` position **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.apply_impulse<class_PhysicsDirectBodyState2D_method_apply_impulse>`. .. rst-class:: classref-item-separator @@ -234,9 +220,7 @@ void **_apply_impulse** **(** :ref:`Vector2<class_Vector2>` impulse, :ref:`Vecto void **_apply_torque** **(** :ref:`float<class_float>` torque **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.apply_torque<class_PhysicsDirectBodyState2D_method_apply_torque>`. .. rst-class:: classref-item-separator @@ -248,9 +232,7 @@ void **_apply_torque** **(** :ref:`float<class_float>` torque **)** |virtual| void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.apply_torque_impulse<class_PhysicsDirectBodyState2D_method_apply_torque_impulse>`. .. rst-class:: classref-item-separator @@ -262,9 +244,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`float<class_float>` **_get_angular_velocity** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.angular_velocity<class_PhysicsDirectBodyState2D_property_angular_velocity>` and its respective getter. .. rst-class:: classref-item-separator @@ -276,9 +256,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_center_of_mass** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.center_of_mass<class_PhysicsDirectBodyState2D_property_center_of_mass>` and its respective getter. .. rst-class:: classref-item-separator @@ -290,9 +268,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_center_of_mass_local** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.center_of_mass_local<class_PhysicsDirectBodyState2D_property_center_of_mass_local>` and its respective getter. .. rst-class:: classref-item-separator @@ -304,9 +280,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_constant_force** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_constant_force<class_PhysicsDirectBodyState2D_method_get_constant_force>`. .. rst-class:: classref-item-separator @@ -318,9 +292,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`float<class_float>` **_get_constant_torque** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_constant_torque<class_PhysicsDirectBodyState2D_method_get_constant_torque>`. .. rst-class:: classref-item-separator @@ -332,9 +304,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`RID<class_RID>` **_get_contact_collider** **(** :ref:`int<class_int>` contact_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_collider<class_PhysicsDirectBodyState2D_method_get_contact_collider>`. .. rst-class:: classref-item-separator @@ -346,9 +316,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`int<class_int>` **_get_contact_collider_id** **(** :ref:`int<class_int>` contact_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_collider_id<class_PhysicsDirectBodyState2D_method_get_contact_collider_id>`. .. rst-class:: classref-item-separator @@ -360,9 +328,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Object<class_Object>` **_get_contact_collider_object** **(** :ref:`int<class_int>` contact_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_collider_object<class_PhysicsDirectBodyState2D_method_get_contact_collider_object>`. .. rst-class:: classref-item-separator @@ -374,9 +340,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_contact_collider_position** **(** :ref:`int<class_int>` contact_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_collider_position<class_PhysicsDirectBodyState2D_method_get_contact_collider_position>`. .. rst-class:: classref-item-separator @@ -388,9 +352,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`int<class_int>` **_get_contact_collider_shape** **(** :ref:`int<class_int>` contact_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_collider_shape<class_PhysicsDirectBodyState2D_method_get_contact_collider_shape>`. .. rst-class:: classref-item-separator @@ -402,9 +364,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_contact_collider_velocity_at_position** **(** :ref:`int<class_int>` contact_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_collider_velocity_at_position<class_PhysicsDirectBodyState2D_method_get_contact_collider_velocity_at_position>`. .. rst-class:: classref-item-separator @@ -416,9 +376,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`int<class_int>` **_get_contact_count** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_count<class_PhysicsDirectBodyState2D_method_get_contact_count>`. .. rst-class:: classref-item-separator @@ -430,9 +388,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_contact_impulse** **(** :ref:`int<class_int>` contact_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_impulse<class_PhysicsDirectBodyState2D_method_get_contact_impulse>`. .. rst-class:: classref-item-separator @@ -444,9 +400,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_contact_local_normal** **(** :ref:`int<class_int>` contact_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_local_normal<class_PhysicsDirectBodyState2D_method_get_contact_local_normal>`. .. rst-class:: classref-item-separator @@ -458,9 +412,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_contact_local_position** **(** :ref:`int<class_int>` contact_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_local_position<class_PhysicsDirectBodyState2D_method_get_contact_local_position>`. .. rst-class:: classref-item-separator @@ -472,9 +424,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`int<class_int>` **_get_contact_local_shape** **(** :ref:`int<class_int>` contact_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_local_shape<class_PhysicsDirectBodyState2D_method_get_contact_local_shape>`. .. rst-class:: classref-item-separator @@ -486,9 +436,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_contact_local_velocity_at_position** **(** :ref:`int<class_int>` contact_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_contact_local_velocity_at_position<class_PhysicsDirectBodyState2D_method_get_contact_local_velocity_at_position>`. .. rst-class:: classref-item-separator @@ -500,9 +448,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`float<class_float>` **_get_inverse_inertia** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.inverse_inertia<class_PhysicsDirectBodyState2D_property_inverse_inertia>` and its respective getter. .. rst-class:: classref-item-separator @@ -514,9 +460,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`float<class_float>` **_get_inverse_mass** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.inverse_mass<class_PhysicsDirectBodyState2D_property_inverse_mass>` and its respective getter. .. rst-class:: classref-item-separator @@ -528,9 +472,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_linear_velocity** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.linear_velocity<class_PhysicsDirectBodyState2D_property_linear_velocity>` and its respective getter. .. rst-class:: classref-item-separator @@ -542,9 +484,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`PhysicsDirectSpaceState2D<class_PhysicsDirectSpaceState2D>` **_get_space_state** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_space_state<class_PhysicsDirectBodyState2D_method_get_space_state>`. .. rst-class:: classref-item-separator @@ -556,9 +496,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`float<class_float>` **_get_step** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.step<class_PhysicsDirectBodyState2D_property_step>` and its respective getter. .. rst-class:: classref-item-separator @@ -570,9 +508,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`float<class_float>` **_get_total_angular_damp** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.total_angular_damp<class_PhysicsDirectBodyState2D_property_total_angular_damp>` and its respective getter. .. rst-class:: classref-item-separator @@ -584,9 +520,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_total_gravity** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.total_gravity<class_PhysicsDirectBodyState2D_property_total_gravity>` and its respective getter. .. rst-class:: classref-item-separator @@ -598,9 +532,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`float<class_float>` **_get_total_linear_damp** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.total_linear_damp<class_PhysicsDirectBodyState2D_property_total_linear_damp>` and its respective getter. .. rst-class:: classref-item-separator @@ -612,9 +544,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Transform2D<class_Transform2D>` **_get_transform** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.transform<class_PhysicsDirectBodyState2D_property_transform>` and its respective getter. .. rst-class:: classref-item-separator @@ -626,9 +556,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi :ref:`Vector2<class_Vector2>` **_get_velocity_at_local_position** **(** :ref:`Vector2<class_Vector2>` local_position **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.get_velocity_at_local_position<class_PhysicsDirectBodyState2D_method_get_velocity_at_local_position>`. .. rst-class:: classref-item-separator @@ -640,9 +568,7 @@ void **_apply_torque_impulse** **(** :ref:`float<class_float>` impulse **)** |vi void **_integrate_forces** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.integrate_forces<class_PhysicsDirectBodyState2D_method_integrate_forces>`. .. rst-class:: classref-item-separator @@ -654,9 +580,7 @@ void **_integrate_forces** **(** **)** |virtual| :ref:`bool<class_bool>` **_is_sleeping** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.sleeping<class_PhysicsDirectBodyState2D_property_sleeping>` and its respective getter. .. rst-class:: classref-item-separator @@ -668,9 +592,7 @@ void **_integrate_forces** **(** **)** |virtual| void **_set_angular_velocity** **(** :ref:`float<class_float>` velocity **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.angular_velocity<class_PhysicsDirectBodyState2D_property_angular_velocity>` and its respective setter. .. rst-class:: classref-item-separator @@ -682,9 +604,7 @@ void **_set_angular_velocity** **(** :ref:`float<class_float>` velocity **)** |v void **_set_constant_force** **(** :ref:`Vector2<class_Vector2>` force **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.set_constant_force<class_PhysicsDirectBodyState2D_method_set_constant_force>`. .. rst-class:: classref-item-separator @@ -696,9 +616,7 @@ void **_set_constant_force** **(** :ref:`Vector2<class_Vector2>` force **)** |vi void **_set_constant_torque** **(** :ref:`float<class_float>` torque **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsDirectBodyState2D.set_constant_torque<class_PhysicsDirectBodyState2D_method_set_constant_torque>`. .. rst-class:: classref-item-separator @@ -710,9 +628,7 @@ void **_set_constant_torque** **(** :ref:`float<class_float>` torque **)** |virt void **_set_linear_velocity** **(** :ref:`Vector2<class_Vector2>` velocity **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.linear_velocity<class_PhysicsDirectBodyState2D_property_linear_velocity>` and its respective setter. .. rst-class:: classref-item-separator @@ -724,9 +640,7 @@ void **_set_linear_velocity** **(** :ref:`Vector2<class_Vector2>` velocity **)** void **_set_sleep_state** **(** :ref:`bool<class_bool>` enabled **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.sleeping<class_PhysicsDirectBodyState2D_property_sleeping>` and its respective setter. .. rst-class:: classref-item-separator @@ -738,9 +652,7 @@ void **_set_sleep_state** **(** :ref:`bool<class_bool>` enabled **)** |virtual| void **_set_transform** **(** :ref:`Transform2D<class_Transform2D>` transform **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Implement to override the behavior of :ref:`PhysicsDirectBodyState2D.transform<class_PhysicsDirectBodyState2D_property_transform>` and its respective setter. .. |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_physicsmaterial.rst b/classes/class_physicsmaterial.rst index 62fb6f948..5c2d57a76 100644 --- a/classes/class_physicsmaterial.rst +++ b/classes/class_physicsmaterial.rst @@ -78,6 +78,8 @@ If ``true``, subtracts the bounciness from the colliding object's bounciness ins The body's bounciness. Values range from ``0`` (no bounce) to ``1`` (full bounciness). +\ **Note:** Even with :ref:`bounce<class_PhysicsMaterial_property_bounce>` set to ``1.0``, some energy will be lost over time due to linear and angular damping. To have a :ref:`PhysicsBody3D<class_PhysicsBody3D>` that preserves all its energy over time, set :ref:`bounce<class_PhysicsMaterial_property_bounce>` to ``1.0``, the body's linear damp mode to **Replace** (if applicable), its linear damp to ``0.0``, its angular damp mode to **Replace** (if applicable), and its angular damp to ``0.0``. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_physicsserver2dextension.rst b/classes/class_physicsserver2dextension.rst index 0ea37376c..3435e0033 100644 --- a/classes/class_physicsserver2dextension.rst +++ b/classes/class_physicsserver2dextension.rst @@ -324,9 +324,7 @@ Method Descriptions void **_area_add_shape** **(** :ref:`RID<class_RID>` area, :ref:`RID<class_RID>` shape, :ref:`Transform2D<class_Transform2D>` transform, :ref:`bool<class_bool>` disabled **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_add_shape<class_PhysicsServer2D_method_area_add_shape>`. .. rst-class:: classref-item-separator @@ -338,9 +336,7 @@ void **_area_add_shape** **(** :ref:`RID<class_RID>` area, :ref:`RID<class_RID>` void **_area_attach_canvas_instance_id** **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` id **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_attach_canvas_instance_id<class_PhysicsServer2D_method_area_attach_canvas_instance_id>`. .. rst-class:: classref-item-separator @@ -352,9 +348,7 @@ void **_area_attach_canvas_instance_id** **(** :ref:`RID<class_RID>` area, :ref: void **_area_attach_object_instance_id** **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` id **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_attach_object_instance_id<class_PhysicsServer2D_method_area_attach_object_instance_id>`. .. rst-class:: classref-item-separator @@ -366,9 +360,7 @@ void **_area_attach_object_instance_id** **(** :ref:`RID<class_RID>` area, :ref: void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_clear_shapes<class_PhysicsServer2D_method_area_clear_shapes>`. .. rst-class:: classref-item-separator @@ -380,9 +372,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| :ref:`RID<class_RID>` **_area_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_create<class_PhysicsServer2D_method_area_create>`. .. rst-class:: classref-item-separator @@ -394,9 +384,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| :ref:`int<class_int>` **_area_get_canvas_instance_id** **(** :ref:`RID<class_RID>` area **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_get_canvas_instance_id<class_PhysicsServer2D_method_area_get_canvas_instance_id>`. .. rst-class:: classref-item-separator @@ -408,9 +396,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| :ref:`int<class_int>` **_area_get_collision_layer** **(** :ref:`RID<class_RID>` area **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_get_collision_layer<class_PhysicsServer2D_method_area_get_collision_layer>`. .. rst-class:: classref-item-separator @@ -422,9 +408,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| :ref:`int<class_int>` **_area_get_collision_mask** **(** :ref:`RID<class_RID>` area **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_get_collision_mask<class_PhysicsServer2D_method_area_get_collision_mask>`. .. rst-class:: classref-item-separator @@ -436,9 +420,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| :ref:`int<class_int>` **_area_get_object_instance_id** **(** :ref:`RID<class_RID>` area **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_get_object_instance_id<class_PhysicsServer2D_method_area_get_object_instance_id>`. .. rst-class:: classref-item-separator @@ -450,9 +432,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| :ref:`Variant<class_Variant>` **_area_get_param** **(** :ref:`RID<class_RID>` area, :ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` param **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_get_param<class_PhysicsServer2D_method_area_get_param>`. .. rst-class:: classref-item-separator @@ -464,9 +444,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| :ref:`RID<class_RID>` **_area_get_shape** **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_get_shape<class_PhysicsServer2D_method_area_get_shape>`. .. rst-class:: classref-item-separator @@ -478,9 +456,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| :ref:`int<class_int>` **_area_get_shape_count** **(** :ref:`RID<class_RID>` area **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_get_shape_count<class_PhysicsServer2D_method_area_get_shape_count>`. .. rst-class:: classref-item-separator @@ -492,9 +468,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| :ref:`Transform2D<class_Transform2D>` **_area_get_shape_transform** **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_get_shape_transform<class_PhysicsServer2D_method_area_get_shape_transform>`. .. rst-class:: classref-item-separator @@ -506,9 +480,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| :ref:`RID<class_RID>` **_area_get_space** **(** :ref:`RID<class_RID>` area **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_get_space<class_PhysicsServer2D_method_area_get_space>`. .. rst-class:: classref-item-separator @@ -520,9 +492,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| :ref:`Transform2D<class_Transform2D>` **_area_get_transform** **(** :ref:`RID<class_RID>` area **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_get_transform<class_PhysicsServer2D_method_area_get_transform>`. .. rst-class:: classref-item-separator @@ -534,9 +504,7 @@ void **_area_clear_shapes** **(** :ref:`RID<class_RID>` area **)** |virtual| void **_area_remove_shape** **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_remove_shape<class_PhysicsServer2D_method_area_remove_shape>`. .. rst-class:: classref-item-separator @@ -548,9 +516,7 @@ void **_area_remove_shape** **(** :ref:`RID<class_RID>` area, :ref:`int<class_in void **_area_set_area_monitor_callback** **(** :ref:`RID<class_RID>` area, :ref:`Callable<class_Callable>` callback **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_set_area_monitor_callback<class_PhysicsServer2D_method_area_set_area_monitor_callback>`. .. rst-class:: classref-item-separator @@ -562,9 +528,7 @@ void **_area_set_area_monitor_callback** **(** :ref:`RID<class_RID>` area, :ref: void **_area_set_collision_layer** **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` layer **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_set_collision_layer<class_PhysicsServer2D_method_area_set_collision_layer>`. .. rst-class:: classref-item-separator @@ -576,9 +540,7 @@ void **_area_set_collision_layer** **(** :ref:`RID<class_RID>` area, :ref:`int<c void **_area_set_collision_mask** **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` mask **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_set_collision_mask<class_PhysicsServer2D_method_area_set_collision_mask>`. .. rst-class:: classref-item-separator @@ -590,9 +552,7 @@ void **_area_set_collision_mask** **(** :ref:`RID<class_RID>` area, :ref:`int<cl void **_area_set_monitor_callback** **(** :ref:`RID<class_RID>` area, :ref:`Callable<class_Callable>` callback **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_set_monitor_callback<class_PhysicsServer2D_method_area_set_monitor_callback>`. .. rst-class:: classref-item-separator @@ -604,9 +564,7 @@ void **_area_set_monitor_callback** **(** :ref:`RID<class_RID>` area, :ref:`Call void **_area_set_monitorable** **(** :ref:`RID<class_RID>` area, :ref:`bool<class_bool>` monitorable **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_set_monitorable<class_PhysicsServer2D_method_area_set_monitorable>`. .. rst-class:: classref-item-separator @@ -618,9 +576,7 @@ void **_area_set_monitorable** **(** :ref:`RID<class_RID>` area, :ref:`bool<clas void **_area_set_param** **(** :ref:`RID<class_RID>` area, :ref:`AreaParameter<enum_PhysicsServer2D_AreaParameter>` param, :ref:`Variant<class_Variant>` value **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_set_param<class_PhysicsServer2D_method_area_set_param>`. .. rst-class:: classref-item-separator @@ -632,9 +588,9 @@ void **_area_set_param** **(** :ref:`RID<class_RID>` area, :ref:`AreaParameter<e void **_area_set_pickable** **(** :ref:`RID<class_RID>` area, :ref:`bool<class_bool>` pickable **)** |virtual| -.. container:: contribute +If set to ``true``, allows the area with the given :ref:`RID<class_RID>` to detect mouse inputs when the mouse cursor is hovering on it. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``area_set_pickable`` method. Corresponds to :ref:`PhysicsBody2D.input_pickable<class_PhysicsBody2D_property_input_pickable>`. .. rst-class:: classref-item-separator @@ -646,9 +602,7 @@ void **_area_set_pickable** **(** :ref:`RID<class_RID>` area, :ref:`bool<class_b void **_area_set_shape** **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx, :ref:`RID<class_RID>` shape **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_set_shape<class_PhysicsServer2D_method_area_set_shape>`. .. rst-class:: classref-item-separator @@ -660,9 +614,7 @@ void **_area_set_shape** **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` void **_area_set_shape_disabled** **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx, :ref:`bool<class_bool>` disabled **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_set_shape_disabled<class_PhysicsServer2D_method_area_set_shape_disabled>`. .. rst-class:: classref-item-separator @@ -674,9 +626,7 @@ void **_area_set_shape_disabled** **(** :ref:`RID<class_RID>` area, :ref:`int<cl void **_area_set_shape_transform** **(** :ref:`RID<class_RID>` area, :ref:`int<class_int>` shape_idx, :ref:`Transform2D<class_Transform2D>` transform **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_set_shape_transform<class_PhysicsServer2D_method_area_set_shape_transform>`. .. rst-class:: classref-item-separator @@ -688,9 +638,7 @@ void **_area_set_shape_transform** **(** :ref:`RID<class_RID>` area, :ref:`int<c void **_area_set_space** **(** :ref:`RID<class_RID>` area, :ref:`RID<class_RID>` space **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_set_space<class_PhysicsServer2D_method_area_set_space>`. .. rst-class:: classref-item-separator @@ -702,9 +650,7 @@ void **_area_set_space** **(** :ref:`RID<class_RID>` area, :ref:`RID<class_RID>` void **_area_set_transform** **(** :ref:`RID<class_RID>` area, :ref:`Transform2D<class_Transform2D>` transform **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.area_set_transform<class_PhysicsServer2D_method_area_set_transform>`. .. rst-class:: classref-item-separator @@ -716,9 +662,7 @@ void **_area_set_transform** **(** :ref:`RID<class_RID>` area, :ref:`Transform2D void **_body_add_collision_exception** **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` excepted_body **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_add_collision_exception<class_PhysicsServer2D_method_body_add_collision_exception>`. .. rst-class:: classref-item-separator @@ -730,9 +674,7 @@ void **_body_add_collision_exception** **(** :ref:`RID<class_RID>` body, :ref:`R void **_body_add_constant_central_force** **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` force **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_add_constant_central_force<class_PhysicsServer2D_method_body_add_constant_central_force>`. .. rst-class:: classref-item-separator @@ -744,9 +686,7 @@ void **_body_add_constant_central_force** **(** :ref:`RID<class_RID>` body, :ref void **_body_add_constant_force** **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` force, :ref:`Vector2<class_Vector2>` position **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_add_constant_force<class_PhysicsServer2D_method_body_add_constant_force>`. .. rst-class:: classref-item-separator @@ -758,9 +698,7 @@ void **_body_add_constant_force** **(** :ref:`RID<class_RID>` body, :ref:`Vector void **_body_add_constant_torque** **(** :ref:`RID<class_RID>` body, :ref:`float<class_float>` torque **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_add_constant_torque<class_PhysicsServer2D_method_body_add_constant_torque>`. .. rst-class:: classref-item-separator @@ -772,9 +710,7 @@ void **_body_add_constant_torque** **(** :ref:`RID<class_RID>` body, :ref:`float void **_body_add_shape** **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` shape, :ref:`Transform2D<class_Transform2D>` transform, :ref:`bool<class_bool>` disabled **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_add_shape<class_PhysicsServer2D_method_body_add_shape>`. .. rst-class:: classref-item-separator @@ -786,9 +722,7 @@ void **_body_add_shape** **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` void **_body_apply_central_force** **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` force **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_apply_central_force<class_PhysicsServer2D_method_body_apply_central_force>`. .. rst-class:: classref-item-separator @@ -800,9 +734,7 @@ void **_body_apply_central_force** **(** :ref:`RID<class_RID>` body, :ref:`Vecto void **_body_apply_central_impulse** **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` impulse **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_apply_central_impulse<class_PhysicsServer2D_method_body_apply_central_impulse>`. .. rst-class:: classref-item-separator @@ -814,9 +746,7 @@ void **_body_apply_central_impulse** **(** :ref:`RID<class_RID>` body, :ref:`Vec void **_body_apply_force** **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` force, :ref:`Vector2<class_Vector2>` position **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_apply_force<class_PhysicsServer2D_method_body_apply_force>`. .. rst-class:: classref-item-separator @@ -828,9 +758,7 @@ void **_body_apply_force** **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class void **_body_apply_impulse** **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` impulse, :ref:`Vector2<class_Vector2>` position **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_apply_impulse<class_PhysicsServer2D_method_body_apply_impulse>`. .. rst-class:: classref-item-separator @@ -842,9 +770,7 @@ void **_body_apply_impulse** **(** :ref:`RID<class_RID>` body, :ref:`Vector2<cla void **_body_apply_torque** **(** :ref:`RID<class_RID>` body, :ref:`float<class_float>` torque **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_apply_torque<class_PhysicsServer2D_method_body_apply_torque>`. .. rst-class:: classref-item-separator @@ -856,9 +782,7 @@ void **_body_apply_torque** **(** :ref:`RID<class_RID>` body, :ref:`float<class_ void **_body_apply_torque_impulse** **(** :ref:`RID<class_RID>` body, :ref:`float<class_float>` impulse **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_apply_torque_impulse<class_PhysicsServer2D_method_body_apply_torque_impulse>`. .. rst-class:: classref-item-separator @@ -870,9 +794,7 @@ void **_body_apply_torque_impulse** **(** :ref:`RID<class_RID>` body, :ref:`floa void **_body_attach_canvas_instance_id** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` id **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_attach_canvas_instance_id<class_PhysicsServer2D_method_body_attach_canvas_instance_id>`. .. rst-class:: classref-item-separator @@ -884,9 +806,7 @@ void **_body_attach_canvas_instance_id** **(** :ref:`RID<class_RID>` body, :ref: void **_body_attach_object_instance_id** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` id **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_attach_object_instance_id<class_PhysicsServer2D_method_body_attach_object_instance_id>`. .. rst-class:: classref-item-separator @@ -898,9 +818,7 @@ void **_body_attach_object_instance_id** **(** :ref:`RID<class_RID>` body, :ref: void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_clear_shapes<class_PhysicsServer2D_method_body_clear_shapes>`. .. rst-class:: classref-item-separator @@ -912,9 +830,9 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`bool<class_bool>` **_body_collide_shape** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` body_shape, :ref:`RID<class_RID>` shape, :ref:`Transform2D<class_Transform2D>` shape_xform, :ref:`Vector2<class_Vector2>` motion, void* results, :ref:`int<class_int>` result_max, int32_t* result_count **)** |virtual| -.. container:: contribute +Given a ``body``, a ``shape``, and their respective parameters, this method should return ``true`` if a collision between the two would occur, with additional details passed in ``results``. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``shape_collide`` method. Corresponds to :ref:`PhysicsDirectSpaceState2D.collide_shape<class_PhysicsDirectSpaceState2D_method_collide_shape>`. .. rst-class:: classref-item-separator @@ -926,9 +844,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`RID<class_RID>` **_body_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_create<class_PhysicsServer2D_method_body_create>`. .. rst-class:: classref-item-separator @@ -940,9 +856,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`int<class_int>` **_body_get_canvas_instance_id** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_canvas_instance_id<class_PhysicsServer2D_method_body_get_canvas_instance_id>`. .. rst-class:: classref-item-separator @@ -954,9 +868,9 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`RID[]<class_RID>` **_body_get_collision_exceptions** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute +Returns the :ref:`RID<class_RID>`\ s of all bodies added as collision exceptions for the given ``body``. See also :ref:`_body_add_collision_exception<class_PhysicsServer2DExtension_method__body_add_collision_exception>` and :ref:`_body_remove_collision_exception<class_PhysicsServer2DExtension_method__body_remove_collision_exception>`. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``body_get_collision_exceptions`` method. Corresponds to :ref:`PhysicsBody2D.get_collision_exceptions<class_PhysicsBody2D_method_get_collision_exceptions>`. .. rst-class:: classref-item-separator @@ -968,9 +882,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`int<class_int>` **_body_get_collision_layer** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_collision_layer<class_PhysicsServer2D_method_body_get_collision_layer>`. .. rst-class:: classref-item-separator @@ -982,9 +894,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`int<class_int>` **_body_get_collision_mask** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_collision_mask<class_PhysicsServer2D_method_body_get_collision_mask>`. .. rst-class:: classref-item-separator @@ -996,9 +906,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`float<class_float>` **_body_get_collision_priority** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_collision_priority<class_PhysicsServer2D_method_body_get_collision_priority>`. .. rst-class:: classref-item-separator @@ -1010,9 +918,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`Vector2<class_Vector2>` **_body_get_constant_force** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_constant_force<class_PhysicsServer2D_method_body_get_constant_force>`. .. rst-class:: classref-item-separator @@ -1024,9 +930,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`float<class_float>` **_body_get_constant_torque** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_constant_torque<class_PhysicsServer2D_method_body_get_constant_torque>`. .. rst-class:: classref-item-separator @@ -1038,9 +942,9 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`float<class_float>` **_body_get_contacts_reported_depth_threshold** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``body_get_contacts_reported_depth_threshold`` method. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +\ **Note:** This method is currently unused by Godot's default physics implementation. .. rst-class:: classref-item-separator @@ -1052,9 +956,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`CCDMode<enum_PhysicsServer2D_CCDMode>` **_body_get_continuous_collision_detection_mode** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_continuous_collision_detection_mode<class_PhysicsServer2D_method_body_get_continuous_collision_detection_mode>`. .. rst-class:: classref-item-separator @@ -1066,9 +968,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`PhysicsDirectBodyState2D<class_PhysicsDirectBodyState2D>` **_body_get_direct_state** **(** :ref:`RID<class_RID>` body **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_direct_state<class_PhysicsServer2D_method_body_get_direct_state>`. .. rst-class:: classref-item-separator @@ -1080,9 +980,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`int<class_int>` **_body_get_max_contacts_reported** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_max_contacts_reported<class_PhysicsServer2D_method_body_get_max_contacts_reported>`. .. rst-class:: classref-item-separator @@ -1094,9 +992,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`BodyMode<enum_PhysicsServer2D_BodyMode>` **_body_get_mode** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_mode<class_PhysicsServer2D_method_body_get_mode>`. .. rst-class:: classref-item-separator @@ -1108,9 +1004,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`int<class_int>` **_body_get_object_instance_id** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_object_instance_id<class_PhysicsServer2D_method_body_get_object_instance_id>`. .. rst-class:: classref-item-separator @@ -1122,9 +1016,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`Variant<class_Variant>` **_body_get_param** **(** :ref:`RID<class_RID>` body, :ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` param **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_param<class_PhysicsServer2D_method_body_get_param>`. .. rst-class:: classref-item-separator @@ -1136,9 +1028,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`RID<class_RID>` **_body_get_shape** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_shape<class_PhysicsServer2D_method_body_get_shape>`. .. rst-class:: classref-item-separator @@ -1150,9 +1040,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`int<class_int>` **_body_get_shape_count** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_shape_count<class_PhysicsServer2D_method_body_get_shape_count>`. .. rst-class:: classref-item-separator @@ -1164,9 +1052,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`Transform2D<class_Transform2D>` **_body_get_shape_transform** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_shape_transform<class_PhysicsServer2D_method_body_get_shape_transform>`. .. rst-class:: classref-item-separator @@ -1178,9 +1064,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`RID<class_RID>` **_body_get_space** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_space<class_PhysicsServer2D_method_body_get_space>`. .. rst-class:: classref-item-separator @@ -1192,9 +1076,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`Variant<class_Variant>` **_body_get_state** **(** :ref:`RID<class_RID>` body, :ref:`BodyState<enum_PhysicsServer2D_BodyState>` state **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_get_state<class_PhysicsServer2D_method_body_get_state>`. .. rst-class:: classref-item-separator @@ -1206,9 +1088,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| :ref:`bool<class_bool>` **_body_is_omitting_force_integration** **(** :ref:`RID<class_RID>` body **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_is_omitting_force_integration<class_PhysicsServer2D_method_body_is_omitting_force_integration>`. .. rst-class:: classref-item-separator @@ -1220,9 +1100,7 @@ void **_body_clear_shapes** **(** :ref:`RID<class_RID>` body **)** |virtual| void **_body_remove_collision_exception** **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` excepted_body **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_remove_collision_exception<class_PhysicsServer2D_method_body_remove_collision_exception>`. .. rst-class:: classref-item-separator @@ -1234,9 +1112,7 @@ void **_body_remove_collision_exception** **(** :ref:`RID<class_RID>` body, :ref void **_body_remove_shape** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_remove_shape<class_PhysicsServer2D_method_body_remove_shape>`. .. rst-class:: classref-item-separator @@ -1248,9 +1124,7 @@ void **_body_remove_shape** **(** :ref:`RID<class_RID>` body, :ref:`int<class_in void **_body_reset_mass_properties** **(** :ref:`RID<class_RID>` body **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_reset_mass_properties<class_PhysicsServer2D_method_body_reset_mass_properties>`. .. rst-class:: classref-item-separator @@ -1262,9 +1136,7 @@ void **_body_reset_mass_properties** **(** :ref:`RID<class_RID>` body **)** |vir void **_body_set_axis_velocity** **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` axis_velocity **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_axis_velocity<class_PhysicsServer2D_method_body_set_axis_velocity>`. .. rst-class:: classref-item-separator @@ -1276,9 +1148,7 @@ void **_body_set_axis_velocity** **(** :ref:`RID<class_RID>` body, :ref:`Vector2 void **_body_set_collision_layer** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` layer **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_collision_layer<class_PhysicsServer2D_method_body_set_collision_layer>`. .. rst-class:: classref-item-separator @@ -1290,9 +1160,7 @@ void **_body_set_collision_layer** **(** :ref:`RID<class_RID>` body, :ref:`int<c void **_body_set_collision_mask** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` mask **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_collision_mask<class_PhysicsServer2D_method_body_set_collision_mask>`. .. rst-class:: classref-item-separator @@ -1304,9 +1172,7 @@ void **_body_set_collision_mask** **(** :ref:`RID<class_RID>` body, :ref:`int<cl void **_body_set_collision_priority** **(** :ref:`RID<class_RID>` body, :ref:`float<class_float>` priority **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_collision_priority<class_PhysicsServer2D_method_body_set_collision_priority>`. .. rst-class:: classref-item-separator @@ -1318,9 +1184,7 @@ void **_body_set_collision_priority** **(** :ref:`RID<class_RID>` body, :ref:`fl void **_body_set_constant_force** **(** :ref:`RID<class_RID>` body, :ref:`Vector2<class_Vector2>` force **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_constant_force<class_PhysicsServer2D_method_body_set_constant_force>`. .. rst-class:: classref-item-separator @@ -1332,9 +1196,7 @@ void **_body_set_constant_force** **(** :ref:`RID<class_RID>` body, :ref:`Vector void **_body_set_constant_torque** **(** :ref:`RID<class_RID>` body, :ref:`float<class_float>` torque **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_constant_torque<class_PhysicsServer2D_method_body_set_constant_torque>`. .. rst-class:: classref-item-separator @@ -1346,9 +1208,9 @@ void **_body_set_constant_torque** **(** :ref:`RID<class_RID>` body, :ref:`float void **_body_set_contacts_reported_depth_threshold** **(** :ref:`RID<class_RID>` body, :ref:`float<class_float>` threshold **)** |virtual| -.. container:: contribute +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``body_set_contacts_reported_depth_threshold`` method. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +\ **Note:** This method is currently unused by Godot's default physics implementation. .. rst-class:: classref-item-separator @@ -1360,9 +1222,7 @@ void **_body_set_contacts_reported_depth_threshold** **(** :ref:`RID<class_RID>` void **_body_set_continuous_collision_detection_mode** **(** :ref:`RID<class_RID>` body, :ref:`CCDMode<enum_PhysicsServer2D_CCDMode>` mode **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_continuous_collision_detection_mode<class_PhysicsServer2D_method_body_set_continuous_collision_detection_mode>`. .. rst-class:: classref-item-separator @@ -1374,9 +1234,7 @@ void **_body_set_continuous_collision_detection_mode** **(** :ref:`RID<class_RID void **_body_set_force_integration_callback** **(** :ref:`RID<class_RID>` body, :ref:`Callable<class_Callable>` callable, :ref:`Variant<class_Variant>` userdata **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_force_integration_callback<class_PhysicsServer2D_method_body_set_force_integration_callback>`. .. rst-class:: classref-item-separator @@ -1388,9 +1246,7 @@ void **_body_set_force_integration_callback** **(** :ref:`RID<class_RID>` body, void **_body_set_max_contacts_reported** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` amount **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_max_contacts_reported<class_PhysicsServer2D_method_body_set_max_contacts_reported>`. .. rst-class:: classref-item-separator @@ -1402,9 +1258,7 @@ void **_body_set_max_contacts_reported** **(** :ref:`RID<class_RID>` body, :ref: void **_body_set_mode** **(** :ref:`RID<class_RID>` body, :ref:`BodyMode<enum_PhysicsServer2D_BodyMode>` mode **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_mode<class_PhysicsServer2D_method_body_set_mode>`. .. rst-class:: classref-item-separator @@ -1416,9 +1270,7 @@ void **_body_set_mode** **(** :ref:`RID<class_RID>` body, :ref:`BodyMode<enum_Ph void **_body_set_omit_force_integration** **(** :ref:`RID<class_RID>` body, :ref:`bool<class_bool>` enable **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_omit_force_integration<class_PhysicsServer2D_method_body_set_omit_force_integration>`. .. rst-class:: classref-item-separator @@ -1430,9 +1282,7 @@ void **_body_set_omit_force_integration** **(** :ref:`RID<class_RID>` body, :ref void **_body_set_param** **(** :ref:`RID<class_RID>` body, :ref:`BodyParameter<enum_PhysicsServer2D_BodyParameter>` param, :ref:`Variant<class_Variant>` value **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_param<class_PhysicsServer2D_method_body_set_param>`. .. rst-class:: classref-item-separator @@ -1444,9 +1294,9 @@ void **_body_set_param** **(** :ref:`RID<class_RID>` body, :ref:`BodyParameter<e void **_body_set_pickable** **(** :ref:`RID<class_RID>` body, :ref:`bool<class_bool>` pickable **)** |virtual| -.. container:: contribute +If set to ``true``, allows the body with the given :ref:`RID<class_RID>` to detect mouse inputs when the mouse cursor is hovering on it. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``body_set_pickable`` method. Corresponds to :ref:`PhysicsBody2D.input_pickable<class_PhysicsBody2D_property_input_pickable>`. .. rst-class:: classref-item-separator @@ -1458,9 +1308,7 @@ void **_body_set_pickable** **(** :ref:`RID<class_RID>` body, :ref:`bool<class_b void **_body_set_shape** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`RID<class_RID>` shape **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_shape<class_PhysicsServer2D_method_body_set_shape>`. .. rst-class:: classref-item-separator @@ -1472,9 +1320,7 @@ void **_body_set_shape** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` void **_body_set_shape_as_one_way_collision** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`bool<class_bool>` enable, :ref:`float<class_float>` margin **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_shape_as_one_way_collision<class_PhysicsServer2D_method_body_set_shape_as_one_way_collision>`. .. rst-class:: classref-item-separator @@ -1486,9 +1332,7 @@ void **_body_set_shape_as_one_way_collision** **(** :ref:`RID<class_RID>` body, void **_body_set_shape_disabled** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`bool<class_bool>` disabled **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_shape_disabled<class_PhysicsServer2D_method_body_set_shape_disabled>`. .. rst-class:: classref-item-separator @@ -1500,9 +1344,7 @@ void **_body_set_shape_disabled** **(** :ref:`RID<class_RID>` body, :ref:`int<cl void **_body_set_shape_transform** **(** :ref:`RID<class_RID>` body, :ref:`int<class_int>` shape_idx, :ref:`Transform2D<class_Transform2D>` transform **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_shape_transform<class_PhysicsServer2D_method_body_set_shape_transform>`. .. rst-class:: classref-item-separator @@ -1514,9 +1356,7 @@ void **_body_set_shape_transform** **(** :ref:`RID<class_RID>` body, :ref:`int<c void **_body_set_space** **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` space **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_space<class_PhysicsServer2D_method_body_set_space>`. .. rst-class:: classref-item-separator @@ -1528,9 +1368,7 @@ void **_body_set_space** **(** :ref:`RID<class_RID>` body, :ref:`RID<class_RID>` void **_body_set_state** **(** :ref:`RID<class_RID>` body, :ref:`BodyState<enum_PhysicsServer2D_BodyState>` state, :ref:`Variant<class_Variant>` value **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_set_state<class_PhysicsServer2D_method_body_set_state>`. .. rst-class:: classref-item-separator @@ -1542,9 +1380,9 @@ void **_body_set_state** **(** :ref:`RID<class_RID>` body, :ref:`BodyState<enum_ void **_body_set_state_sync_callback** **(** :ref:`RID<class_RID>` body, :ref:`Callable<class_Callable>` callable **)** |virtual| -.. container:: contribute +Assigns the ``body`` to call the given ``callable`` during the synchronization phase of the loop, before :ref:`_step<class_PhysicsServer2DExtension_method__step>` is called. See also :ref:`_sync<class_PhysicsServer2DExtension_method__sync>`. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``body_set_state_sync_callback`` method. .. rst-class:: classref-item-separator @@ -1556,9 +1394,7 @@ void **_body_set_state_sync_callback** **(** :ref:`RID<class_RID>` body, :ref:`C :ref:`bool<class_bool>` **_body_test_motion** **(** :ref:`RID<class_RID>` body, :ref:`Transform2D<class_Transform2D>` from, :ref:`Vector2<class_Vector2>` motion, :ref:`float<class_float>` margin, :ref:`bool<class_bool>` collide_separation_ray, :ref:`bool<class_bool>` recovery_as_collision, PhysicsServer2DExtensionMotionResult* result **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.body_test_motion<class_PhysicsServer2D_method_body_test_motion>`. Unlike the exposed implementation, this method does not receive all of the arguments inside a :ref:`PhysicsTestMotionParameters2D<class_PhysicsTestMotionParameters2D>`. .. rst-class:: classref-item-separator @@ -1570,9 +1406,7 @@ void **_body_set_state_sync_callback** **(** :ref:`RID<class_RID>` body, :ref:`C :ref:`RID<class_RID>` **_capsule_shape_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.capsule_shape_create<class_PhysicsServer2D_method_capsule_shape_create>`. .. rst-class:: classref-item-separator @@ -1584,9 +1418,7 @@ void **_body_set_state_sync_callback** **(** :ref:`RID<class_RID>` body, :ref:`C :ref:`RID<class_RID>` **_circle_shape_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.circle_shape_create<class_PhysicsServer2D_method_circle_shape_create>`. .. rst-class:: classref-item-separator @@ -1598,9 +1430,7 @@ void **_body_set_state_sync_callback** **(** :ref:`RID<class_RID>` body, :ref:`C :ref:`RID<class_RID>` **_concave_polygon_shape_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.concave_polygon_shape_create<class_PhysicsServer2D_method_concave_polygon_shape_create>`. .. rst-class:: classref-item-separator @@ -1612,9 +1442,7 @@ void **_body_set_state_sync_callback** **(** :ref:`RID<class_RID>` body, :ref:`C :ref:`RID<class_RID>` **_convex_polygon_shape_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.convex_polygon_shape_create<class_PhysicsServer2D_method_convex_polygon_shape_create>`. .. rst-class:: classref-item-separator @@ -1626,9 +1454,7 @@ void **_body_set_state_sync_callback** **(** :ref:`RID<class_RID>` body, :ref:`C :ref:`float<class_float>` **_damped_spring_joint_get_param** **(** :ref:`RID<class_RID>` joint, :ref:`DampedSpringParam<enum_PhysicsServer2D_DampedSpringParam>` param **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.damped_spring_joint_get_param<class_PhysicsServer2D_method_damped_spring_joint_get_param>`. .. rst-class:: classref-item-separator @@ -1640,9 +1466,7 @@ void **_body_set_state_sync_callback** **(** :ref:`RID<class_RID>` body, :ref:`C void **_damped_spring_joint_set_param** **(** :ref:`RID<class_RID>` joint, :ref:`DampedSpringParam<enum_PhysicsServer2D_DampedSpringParam>` param, :ref:`float<class_float>` value **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.damped_spring_joint_set_param<class_PhysicsServer2D_method_damped_spring_joint_set_param>`. .. rst-class:: classref-item-separator @@ -1654,9 +1478,9 @@ void **_damped_spring_joint_set_param** **(** :ref:`RID<class_RID>` joint, :ref: void **_end_sync** **(** **)** |virtual| -.. container:: contribute +Called to indicate that the physics server has stopped synchronizing. It is in the loop's iteration/physics phase, and can access physics objects even if running on a separate thread. See also :ref:`_sync<class_PhysicsServer2DExtension_method__sync>`. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``end_sync`` method. .. rst-class:: classref-item-separator @@ -1668,9 +1492,9 @@ void **_end_sync** **(** **)** |virtual| void **_finish** **(** **)** |virtual| -.. container:: contribute +Called when the main loop finalizes to shut down the physics server. See also :ref:`MainLoop._finalize<class_MainLoop_method__finalize>` and :ref:`_init<class_PhysicsServer2DExtension_method__init>`. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``finish`` method. .. rst-class:: classref-item-separator @@ -1682,9 +1506,9 @@ void **_finish** **(** **)** |virtual| void **_flush_queries** **(** **)** |virtual| -.. container:: contribute +Called every physics step before :ref:`_step<class_PhysicsServer2DExtension_method__step>` to process all remaining queries. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``flush_queries`` method. .. rst-class:: classref-item-separator @@ -1696,9 +1520,7 @@ void **_flush_queries** **(** **)** |virtual| void **_free_rid** **(** :ref:`RID<class_RID>` rid **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.free_rid<class_PhysicsServer2D_method_free_rid>`. .. rst-class:: classref-item-separator @@ -1710,9 +1532,7 @@ void **_free_rid** **(** :ref:`RID<class_RID>` rid **)** |virtual| :ref:`int<class_int>` **_get_process_info** **(** :ref:`ProcessInfo<enum_PhysicsServer2D_ProcessInfo>` process_info **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.get_process_info<class_PhysicsServer2D_method_get_process_info>`. .. rst-class:: classref-item-separator @@ -1724,9 +1544,9 @@ void **_free_rid** **(** :ref:`RID<class_RID>` rid **)** |virtual| void **_init** **(** **)** |virtual| -.. container:: contribute +Called when the main loop is initialized and creates a new instance of this physics server. See also :ref:`MainLoop._initialize<class_MainLoop_method__initialize>` and :ref:`_finish<class_PhysicsServer2DExtension_method__finish>`. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``init`` method. .. rst-class:: classref-item-separator @@ -1738,9 +1558,9 @@ void **_init** **(** **)** |virtual| :ref:`bool<class_bool>` **_is_flushing_queries** **(** **)** |virtual| |const| -.. container:: contribute +Overridable method that should return ``true`` when the physics server is processing queries. See also :ref:`_flush_queries<class_PhysicsServer2DExtension_method__flush_queries>`. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``is_flushing_queries`` method. .. rst-class:: classref-item-separator @@ -1752,9 +1572,7 @@ void **_init** **(** **)** |virtual| void **_joint_clear** **(** :ref:`RID<class_RID>` joint **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.joint_clear<class_PhysicsServer2D_method_joint_clear>`. .. rst-class:: classref-item-separator @@ -1766,9 +1584,7 @@ void **_joint_clear** **(** :ref:`RID<class_RID>` joint **)** |virtual| :ref:`RID<class_RID>` **_joint_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.joint_create<class_PhysicsServer2D_method_joint_create>`. .. rst-class:: classref-item-separator @@ -1780,9 +1596,7 @@ void **_joint_clear** **(** :ref:`RID<class_RID>` joint **)** |virtual| void **_joint_disable_collisions_between_bodies** **(** :ref:`RID<class_RID>` joint, :ref:`bool<class_bool>` disable **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.joint_disable_collisions_between_bodies<class_PhysicsServer2D_method_joint_disable_collisions_between_bodies>`. .. rst-class:: classref-item-separator @@ -1794,9 +1608,7 @@ void **_joint_disable_collisions_between_bodies** **(** :ref:`RID<class_RID>` jo :ref:`float<class_float>` **_joint_get_param** **(** :ref:`RID<class_RID>` joint, :ref:`JointParam<enum_PhysicsServer2D_JointParam>` param **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.joint_get_param<class_PhysicsServer2D_method_joint_get_param>`. .. rst-class:: classref-item-separator @@ -1808,9 +1620,7 @@ void **_joint_disable_collisions_between_bodies** **(** :ref:`RID<class_RID>` jo :ref:`JointType<enum_PhysicsServer2D_JointType>` **_joint_get_type** **(** :ref:`RID<class_RID>` joint **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.joint_get_type<class_PhysicsServer2D_method_joint_get_type>`. .. rst-class:: classref-item-separator @@ -1822,9 +1632,7 @@ void **_joint_disable_collisions_between_bodies** **(** :ref:`RID<class_RID>` jo :ref:`bool<class_bool>` **_joint_is_disabled_collisions_between_bodies** **(** :ref:`RID<class_RID>` joint **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.joint_is_disabled_collisions_between_bodies<class_PhysicsServer2D_method_joint_is_disabled_collisions_between_bodies>`. .. rst-class:: classref-item-separator @@ -1836,9 +1644,7 @@ void **_joint_disable_collisions_between_bodies** **(** :ref:`RID<class_RID>` jo void **_joint_make_damped_spring** **(** :ref:`RID<class_RID>` joint, :ref:`Vector2<class_Vector2>` anchor_a, :ref:`Vector2<class_Vector2>` anchor_b, :ref:`RID<class_RID>` body_a, :ref:`RID<class_RID>` body_b **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.joint_make_damped_spring<class_PhysicsServer2D_method_joint_make_damped_spring>`. .. rst-class:: classref-item-separator @@ -1850,9 +1656,7 @@ void **_joint_make_damped_spring** **(** :ref:`RID<class_RID>` joint, :ref:`Vect void **_joint_make_groove** **(** :ref:`RID<class_RID>` joint, :ref:`Vector2<class_Vector2>` a_groove1, :ref:`Vector2<class_Vector2>` a_groove2, :ref:`Vector2<class_Vector2>` b_anchor, :ref:`RID<class_RID>` body_a, :ref:`RID<class_RID>` body_b **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.joint_make_groove<class_PhysicsServer2D_method_joint_make_groove>`. .. rst-class:: classref-item-separator @@ -1864,9 +1668,7 @@ void **_joint_make_groove** **(** :ref:`RID<class_RID>` joint, :ref:`Vector2<cla void **_joint_make_pin** **(** :ref:`RID<class_RID>` joint, :ref:`Vector2<class_Vector2>` anchor, :ref:`RID<class_RID>` body_a, :ref:`RID<class_RID>` body_b **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.joint_make_pin<class_PhysicsServer2D_method_joint_make_pin>`. .. rst-class:: classref-item-separator @@ -1878,9 +1680,7 @@ void **_joint_make_pin** **(** :ref:`RID<class_RID>` joint, :ref:`Vector2<class_ void **_joint_set_param** **(** :ref:`RID<class_RID>` joint, :ref:`JointParam<enum_PhysicsServer2D_JointParam>` param, :ref:`float<class_float>` value **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.joint_set_param<class_PhysicsServer2D_method_joint_set_param>`. .. rst-class:: classref-item-separator @@ -1892,9 +1692,7 @@ void **_joint_set_param** **(** :ref:`RID<class_RID>` joint, :ref:`JointParam<en :ref:`float<class_float>` **_pin_joint_get_param** **(** :ref:`RID<class_RID>` joint, :ref:`PinJointParam<enum_PhysicsServer2D_PinJointParam>` param **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.pin_joint_get_param<class_PhysicsServer2D_method_pin_joint_get_param>`. .. rst-class:: classref-item-separator @@ -1906,9 +1704,7 @@ void **_joint_set_param** **(** :ref:`RID<class_RID>` joint, :ref:`JointParam<en void **_pin_joint_set_param** **(** :ref:`RID<class_RID>` joint, :ref:`PinJointParam<enum_PhysicsServer2D_PinJointParam>` param, :ref:`float<class_float>` value **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.pin_joint_set_param<class_PhysicsServer2D_method_pin_joint_set_param>`. .. rst-class:: classref-item-separator @@ -1920,9 +1716,7 @@ void **_pin_joint_set_param** **(** :ref:`RID<class_RID>` joint, :ref:`PinJointP :ref:`RID<class_RID>` **_rectangle_shape_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.rectangle_shape_create<class_PhysicsServer2D_method_rectangle_shape_create>`. .. rst-class:: classref-item-separator @@ -1934,9 +1728,7 @@ void **_pin_joint_set_param** **(** :ref:`RID<class_RID>` joint, :ref:`PinJointP :ref:`RID<class_RID>` **_segment_shape_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.segment_shape_create<class_PhysicsServer2D_method_segment_shape_create>`. .. rst-class:: classref-item-separator @@ -1948,9 +1740,7 @@ void **_pin_joint_set_param** **(** :ref:`RID<class_RID>` joint, :ref:`PinJointP :ref:`RID<class_RID>` **_separation_ray_shape_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.separation_ray_shape_create<class_PhysicsServer2D_method_separation_ray_shape_create>`. .. rst-class:: classref-item-separator @@ -1962,9 +1752,7 @@ void **_pin_joint_set_param** **(** :ref:`RID<class_RID>` joint, :ref:`PinJointP void **_set_active** **(** :ref:`bool<class_bool>` active **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.set_active<class_PhysicsServer2D_method_set_active>`. .. rst-class:: classref-item-separator @@ -1976,9 +1764,9 @@ void **_set_active** **(** :ref:`bool<class_bool>` active **)** |virtual| :ref:`bool<class_bool>` **_shape_collide** **(** :ref:`RID<class_RID>` shape_A, :ref:`Transform2D<class_Transform2D>` xform_A, :ref:`Vector2<class_Vector2>` motion_A, :ref:`RID<class_RID>` shape_B, :ref:`Transform2D<class_Transform2D>` xform_B, :ref:`Vector2<class_Vector2>` motion_B, void* results, :ref:`int<class_int>` result_max, int32_t* result_count **)** |virtual| -.. container:: contribute +Given two shapes and their parameters, should return ``true`` if a collision between the two would occur, with additional details passed in ``results``. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``shape_collide`` method. Corresponds to :ref:`PhysicsDirectSpaceState2D.collide_shape<class_PhysicsDirectSpaceState2D_method_collide_shape>`. .. rst-class:: classref-item-separator @@ -1990,9 +1778,9 @@ void **_set_active** **(** :ref:`bool<class_bool>` active **)** |virtual| :ref:`float<class_float>` **_shape_get_custom_solver_bias** **(** :ref:`RID<class_RID>` shape **)** |virtual| |const| -.. container:: contribute +Should return the custom solver bias of the given ``shape``, which defines how much bodies are forced to separate on contact when this shape is involved. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``shape_get_custom_solver_bias`` method. Corresponds to :ref:`Shape2D.custom_solver_bias<class_Shape2D_property_custom_solver_bias>`. .. rst-class:: classref-item-separator @@ -2004,9 +1792,7 @@ void **_set_active** **(** :ref:`bool<class_bool>` active **)** |virtual| :ref:`Variant<class_Variant>` **_shape_get_data** **(** :ref:`RID<class_RID>` shape **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.shape_get_data<class_PhysicsServer2D_method_shape_get_data>`. .. rst-class:: classref-item-separator @@ -2018,9 +1804,7 @@ void **_set_active** **(** :ref:`bool<class_bool>` active **)** |virtual| :ref:`ShapeType<enum_PhysicsServer2D_ShapeType>` **_shape_get_type** **(** :ref:`RID<class_RID>` shape **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.shape_get_type<class_PhysicsServer2D_method_shape_get_type>`. .. rst-class:: classref-item-separator @@ -2032,9 +1816,9 @@ void **_set_active** **(** :ref:`bool<class_bool>` active **)** |virtual| void **_shape_set_custom_solver_bias** **(** :ref:`RID<class_RID>` shape, :ref:`float<class_float>` bias **)** |virtual| -.. container:: contribute +Should set the custom solver bias for the given ``shape``. It defines how much bodies are forced to separate on contact. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``shape_get_custom_solver_bias`` method. Corresponds to :ref:`Shape2D.custom_solver_bias<class_Shape2D_property_custom_solver_bias>`. .. rst-class:: classref-item-separator @@ -2046,9 +1830,7 @@ void **_shape_set_custom_solver_bias** **(** :ref:`RID<class_RID>` shape, :ref:` void **_shape_set_data** **(** :ref:`RID<class_RID>` shape, :ref:`Variant<class_Variant>` data **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.shape_set_data<class_PhysicsServer2D_method_shape_set_data>`. .. rst-class:: classref-item-separator @@ -2060,9 +1842,7 @@ void **_shape_set_data** **(** :ref:`RID<class_RID>` shape, :ref:`Variant<class_ :ref:`RID<class_RID>` **_space_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.space_create<class_PhysicsServer2D_method_space_create>`. .. rst-class:: classref-item-separator @@ -2074,9 +1854,9 @@ void **_shape_set_data** **(** :ref:`RID<class_RID>` shape, :ref:`Variant<class_ :ref:`int<class_int>` **_space_get_contact_count** **(** :ref:`RID<class_RID>` space **)** |virtual| |const| -.. container:: contribute +Should return how many contacts have occurred during the last physics step in the given ``space``. See also :ref:`_space_get_contacts<class_PhysicsServer2DExtension_method__space_get_contacts>` and :ref:`_space_set_debug_contacts<class_PhysicsServer2DExtension_method__space_set_debug_contacts>`. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``space_get_contact_count`` method. .. rst-class:: classref-item-separator @@ -2088,9 +1868,9 @@ void **_shape_set_data** **(** :ref:`RID<class_RID>` shape, :ref:`Variant<class_ :ref:`PackedVector2Array<class_PackedVector2Array>` **_space_get_contacts** **(** :ref:`RID<class_RID>` space **)** |virtual| |const| -.. container:: contribute +Should return the positions of all contacts that have occurred during the last physics step in the given ``space``. See also :ref:`_space_get_contact_count<class_PhysicsServer2DExtension_method__space_get_contact_count>` and :ref:`_space_set_debug_contacts<class_PhysicsServer2DExtension_method__space_set_debug_contacts>`. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``space_get_contacts`` method. .. rst-class:: classref-item-separator @@ -2102,9 +1882,7 @@ void **_shape_set_data** **(** :ref:`RID<class_RID>` shape, :ref:`Variant<class_ :ref:`PhysicsDirectSpaceState2D<class_PhysicsDirectSpaceState2D>` **_space_get_direct_state** **(** :ref:`RID<class_RID>` space **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.space_get_direct_state<class_PhysicsServer2D_method_space_get_direct_state>`. .. rst-class:: classref-item-separator @@ -2116,9 +1894,7 @@ void **_shape_set_data** **(** :ref:`RID<class_RID>` shape, :ref:`Variant<class_ :ref:`float<class_float>` **_space_get_param** **(** :ref:`RID<class_RID>` space, :ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>` param **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.space_get_param<class_PhysicsServer2D_method_space_get_param>`. .. rst-class:: classref-item-separator @@ -2130,9 +1906,7 @@ void **_shape_set_data** **(** :ref:`RID<class_RID>` shape, :ref:`Variant<class_ :ref:`bool<class_bool>` **_space_is_active** **(** :ref:`RID<class_RID>` space **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.space_is_active<class_PhysicsServer2D_method_space_is_active>`. .. rst-class:: classref-item-separator @@ -2144,9 +1918,7 @@ void **_shape_set_data** **(** :ref:`RID<class_RID>` shape, :ref:`Variant<class_ void **_space_set_active** **(** :ref:`RID<class_RID>` space, :ref:`bool<class_bool>` active **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.space_set_active<class_PhysicsServer2D_method_space_set_active>`. .. rst-class:: classref-item-separator @@ -2158,9 +1930,9 @@ void **_space_set_active** **(** :ref:`RID<class_RID>` space, :ref:`bool<class_b void **_space_set_debug_contacts** **(** :ref:`RID<class_RID>` space, :ref:`int<class_int>` max_contacts **)** |virtual| -.. container:: contribute +Used internally to allow the given ``space`` to store contact points, up to ``max_contacts``. This is automatically set for the main :ref:`World2D<class_World2D>`'s space when :ref:`SceneTree.debug_collisions_hint<class_SceneTree_property_debug_collisions_hint>` is ``true``, or by checking "Visible Collision Shapes" in the editor. Only works in debug builds. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``space_set_debug_contacts`` method. .. rst-class:: classref-item-separator @@ -2172,9 +1944,7 @@ void **_space_set_debug_contacts** **(** :ref:`RID<class_RID>` space, :ref:`int< void **_space_set_param** **(** :ref:`RID<class_RID>` space, :ref:`SpaceParameter<enum_PhysicsServer2D_SpaceParameter>` param, :ref:`float<class_float>` value **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.space_set_param<class_PhysicsServer2D_method_space_set_param>`. .. rst-class:: classref-item-separator @@ -2186,9 +1956,9 @@ void **_space_set_param** **(** :ref:`RID<class_RID>` space, :ref:`SpaceParamete void **_step** **(** :ref:`float<class_float>` step **)** |virtual| -.. container:: contribute +Called every physics step to process the physics simulation. ``step`` is the time elapsed since the last physics step, in seconds. It is usually the same as :ref:`Node.get_physics_process_delta_time<class_Node_method_get_physics_process_delta_time>`. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``step`` method. .. rst-class:: classref-item-separator @@ -2200,9 +1970,9 @@ void **_step** **(** :ref:`float<class_float>` step **)** |virtual| void **_sync** **(** **)** |virtual| -.. container:: contribute +Called to indicate that the physics server is synchronizing and cannot access physics states if running on a separate thread. See also :ref:`_end_sync<class_PhysicsServer2DExtension_method__end_sync>`. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D<class_PhysicsServer2D>`'s internal ``sync`` method. .. rst-class:: classref-item-separator @@ -2214,9 +1984,7 @@ void **_sync** **(** **)** |virtual| :ref:`RID<class_RID>` **_world_boundary_shape_create** **(** **)** |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Overridable version of :ref:`PhysicsServer2D.world_boundary_shape_create<class_PhysicsServer2D_method_world_boundary_shape_create>`. .. rst-class:: classref-item-separator @@ -2228,9 +1996,7 @@ void **_sync** **(** **)** |virtual| :ref:`bool<class_bool>` **body_test_motion_is_excluding_body** **(** :ref:`RID<class_RID>` body **)** |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Returns ``true`` if the body with the given :ref:`RID<class_RID>` is being excluded from :ref:`_body_test_motion<class_PhysicsServer2DExtension_method__body_test_motion>`. See also :ref:`Object.get_instance_id<class_Object_method_get_instance_id>`. .. rst-class:: classref-item-separator @@ -2242,9 +2008,7 @@ void **_sync** **(** **)** |virtual| :ref:`bool<class_bool>` **body_test_motion_is_excluding_object** **(** :ref:`int<class_int>` object **)** |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Returns ``true`` if the object with the given instance ID is being excluded from :ref:`_body_test_motion<class_PhysicsServer2DExtension_method__body_test_motion>`. See also :ref:`Object.get_instance_id<class_Object_method_get_instance_id>`. .. |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_physicsserver3d.rst b/classes/class_physicsserver3d.rst index b884971ba..29ded047d 100644 --- a/classes/class_physicsserver3d.rst +++ b/classes/class_physicsserver3d.rst @@ -21,7 +21,7 @@ A server interface for low-level 3D physics access. Description ----------- -PhysicsServer2D is the server responsible for all 2D physics. It can directly create and manipulate all physics objects: +PhysicsServer3D is the server responsible for all 3D physics. It can directly create and manipulate all physics objects: - A *space* is a self-contained world for a physics simulation. It contains bodies, areas, and joints. Its state can be queried for collision and intersection information, and several parameters of the simulation can be modified. @@ -556,7 +556,7 @@ A factor applied to the movement across the slider axis once the limits get surp :ref:`SliderJointParam<enum_PhysicsServer3D_SliderJointParam>` **SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION** = ``3`` -The amount of restitution once the limits are surpassed. The lower, the more velocityenergy gets lost. +The amount of restitution once the limits are surpassed. The lower, the more velocity-energy gets lost. .. _class_PhysicsServer3D_constant_SLIDER_JOINT_LINEAR_LIMIT_DAMPING: diff --git a/classes/class_pinjoint3d.rst b/classes/class_pinjoint3d.rst index 3674c91fa..fff52e090 100644 --- a/classes/class_pinjoint3d.rst +++ b/classes/class_pinjoint3d.rst @@ -19,7 +19,7 @@ A physics joint that attaches two 3D physics bodies at a single point, allowing Description ----------- -A physics joint that attaches two 2D physics bodies at a single point, allowing them to freely rotate. For example, a :ref:`RigidBody3D<class_RigidBody3D>` can be attached to a :ref:`StaticBody3D<class_StaticBody3D>` to create a pendulum or a seesaw. +A physics joint that attaches two 3D physics bodies at a single point, allowing them to freely rotate. For example, a :ref:`RigidBody3D<class_RigidBody3D>` can be attached to a :ref:`StaticBody3D<class_StaticBody3D>` to create a pendulum or a seesaw. .. rst-class:: classref-reftable-group diff --git a/classes/class_polygonoccluder3d.rst b/classes/class_polygonoccluder3d.rst index 6e85c21a1..bfbf8fe5a 100644 --- a/classes/class_polygonoccluder3d.rst +++ b/classes/class_polygonoccluder3d.rst @@ -23,6 +23,13 @@ Description See :ref:`OccluderInstance3D<class_OccluderInstance3D>`'s documentation for instructions on setting up occlusion culling. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Occlusion culling <../tutorials/3d/occlusion_culling>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_popupmenu.rst b/classes/class_popupmenu.rst index 5fe2ccbf9..ef931738f 100644 --- a/classes/class_popupmenu.rst +++ b/classes/class_popupmenu.rst @@ -650,7 +650,7 @@ An ``id`` can optionally be provided. If no ``id`` is provided, one will be crea void **add_submenu_item** **(** :ref:`String<class_String>` label, :ref:`String<class_String>` submenu, :ref:`int<class_int>` id=-1 **)** -Adds an item that will act as a submenu of the parent **PopupMenu** node when clicked. The ``submenu`` argument is the name of the child **PopupMenu** node that will be shown when the item is clicked. +Adds an item that will act as a submenu of the parent **PopupMenu** node when clicked. The ``submenu`` argument must be the name of an existing **PopupMenu** that has been added as a child to this node. This submenu will be shown when the item is clicked, hovered for long enough, or activated using the ``ui_select`` or ``ui_right`` input actions. An ``id`` can optionally be provided. If no ``id`` is provided, one will be created from the index. diff --git a/classes/class_primitivemesh.rst b/classes/class_primitivemesh.rst index b0865f875..68bbde8d7 100644 --- a/classes/class_primitivemesh.rst +++ b/classes/class_primitivemesh.rst @@ -166,9 +166,7 @@ Method Descriptions :ref:`Array<class_Array>` **_create_mesh_array** **(** **)** |virtual| |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Override this method to customize how this primitive mesh should be generated. Should return an :ref:`Array<class_Array>` where each element is another Array of values required for the mesh (see the :ref:`ArrayType<enum_Mesh_ArrayType>` constants). .. rst-class:: classref-item-separator diff --git a/classes/class_projectsettings.rst b/classes/class_projectsettings.rst index bb852537a..1afa72e40 100644 --- a/classes/class_projectsettings.rst +++ b/classes/class_projectsettings.rst @@ -1879,7 +1879,9 @@ Changes to this setting will only be applied upon restarting the application. :ref:`int<class_int>` **application/run/frame_delay_msec** = ``0`` -Forces a delay between frames in the main loop (in milliseconds). This may be useful if you plan to disable vertical synchronization. +Forces a *constant* delay between frames in the main loop (in milliseconds). In most situations, :ref:`application/run/max_fps<class_ProjectSettings_property_application/run/max_fps>` should be preferred as an FPS limiter as it's more precise. + +This setting can be overridden using the ``--frame-delay <ms;>`` command line argument. .. rst-class:: classref-item-separator @@ -3565,6 +3567,8 @@ Main window content is expanded to the full size of the window. Unlike a borderl Main window initial position (in virtual desktop coordinates), this setting is used only if :ref:`display/window/size/initial_position_type<class_ProjectSettings_property_display/window/size/initial_position_type>` is set to "Absolute" (``0``). +\ **Note:** This setting only affects the exported project, or when the project is run from the command line. In the editor, the value of :ref:`EditorSettings.run/window_placement/rect_custom_position<class_EditorSettings_property_run/window_placement/rect_custom_position>` is used instead. + .. rst-class:: classref-item-separator ---- @@ -3583,6 +3587,8 @@ Main window initial position. \ ``2`` - "Other Screen Center", :ref:`display/window/size/initial_screen<class_ProjectSettings_property_display/window/size/initial_screen>` is used to set the screen. +\ **Note:** This setting only affects the exported project, or when the project is run from the command line. In the editor, the value of :ref:`EditorSettings.run/window_placement/rect<class_EditorSettings_property_run/window_placement/rect>` is used instead. + .. rst-class:: classref-item-separator ---- @@ -3595,6 +3601,8 @@ Main window initial position. Main window initial screen, this setting is used only if :ref:`display/window/size/initial_position_type<class_ProjectSettings_property_display/window/size/initial_position_type>` is set to "Other Screen Center" (``2``). +\ **Note:** This setting only affects the exported project, or when the project is run from the command line. In the editor, the value of :ref:`EditorSettings.run/window_placement/screen<class_EditorSettings_property_run/window_placement/screen>` is used instead. + .. rst-class:: classref-item-separator ---- @@ -3629,7 +3637,11 @@ Main window can't be focused. No-focus window will ignore all input, except mous :ref:`bool<class_bool>` **display/window/size/resizable** = ``true`` -Allows the window to be resizable by default. +If ``true``, allows the window to be resizable by default. + +\ **Note:** This property is only read when the project starts. To change whether the window is resizable at runtime, set :ref:`Window.unresizable<class_Window_property_unresizable>` instead on the root Window, which can be retrieved using ``get_viewport().get_window()``. :ref:`Window.unresizable<class_Window_property_unresizable>` takes the opposite value of this setting. + +\ **Note:** Certain window managers can be configured to ignore the non-resizable status of a window. Do not rely on this setting as a guarantee that the window will *never* be resizable. \ **Note:** This setting is ignored on iOS. @@ -3729,9 +3741,9 @@ Defines how the base size is stretched to fit the resolution of the window or sc \ **"disabled"**: No stretching happens. One unit in the scene corresponds to one pixel on the screen. In this mode, :ref:`display/window/stretch/aspect<class_ProjectSettings_property_display/window/stretch/aspect>` has no effect. Recommended for non-game applications. -\ **"canvas_items"**: The base size specified in width and height in the project settings is stretched to cover the whole screen (taking :ref:`display/window/stretch/aspect<class_ProjectSettings_property_display/window/stretch/aspect>` into account). This means that everything is rendered directly at the target resolution. 3D is unaffected, while in 2D, there is no longer a 1:1 correspondence between sprite pixels and screen pixels, which may result in scaling artifacts. Recommended for most games that don't use a pixel art aesthetic, although it is possible to use this stretch mode for pixel art games too (especially in 3D). +\ **"canvas_items"**: The base size specified in width and height in the project settings is stretched to cover the whole screen (taking :ref:`display/window/stretch/aspect<class_ProjectSettings_property_display/window/stretch/aspect>` into account). This means that everything is rendered directly at the target resolution. 3D is unaffected, while in 2D, there is no longer a 1:1 correspondence between sprite pixels and screen pixels, which may result in scaling artifacts. Recommended for most games that don't use a pixel art esthetic, although it is possible to use this stretch mode for pixel art games too (especially in 3D). -\ **"viewport"**: The size of the root :ref:`Viewport<class_Viewport>` is set precisely to the base size specified in the Project Settings' Display section. The scene is rendered to this viewport first. Finally, this viewport is scaled to fit the screen (taking :ref:`display/window/stretch/aspect<class_ProjectSettings_property_display/window/stretch/aspect>` into account). Recommended for games that use a pixel art aesthetic. +\ **"viewport"**: The size of the root :ref:`Viewport<class_Viewport>` is set precisely to the base size specified in the Project Settings' Display section. The scene is rendered to this viewport first. Finally, this viewport is scaled to fit the screen (taking :ref:`display/window/stretch/aspect<class_ProjectSettings_property_display/window/stretch/aspect>` into account). Recommended for games that use a pixel art esthetic. .. rst-class:: classref-item-separator @@ -10013,9 +10025,7 @@ Max number of positional lights renderable in a frame. If more lights than this :ref:`int<class_int>` **rendering/limits/spatial_indexer/threaded_cull_minimum_instances** = ``1000`` -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +The minimum number of instances that must be present in a scene to enable culling computations on multiple threads. If a scene has fewer instances than this number, culling is done on a single thread. .. rst-class:: classref-item-separator @@ -10103,6 +10113,8 @@ If ``true``, :ref:`OccluderInstance3D<class_OccluderInstance3D>` nodes will be u \ **Note:** Enabling occlusion culling has a cost on the CPU. Only enable occlusion culling if you actually plan to use it. Large open scenes with few or no objects blocking the view will generally not benefit much from occlusion culling. Large open scenes generally benefit more from mesh LOD and visibility ranges (:ref:`GeometryInstance3D.visibility_range_begin<class_GeometryInstance3D_property_visibility_range_begin>` and :ref:`GeometryInstance3D.visibility_range_end<class_GeometryInstance3D_property_visibility_range_end>`) compared to occlusion culling. +\ **Note:** Due to memory constraints, occlusion culling is not supported by default in Web export templates. It can be enabled by compiling custom Web export templates with ``module_raycast_enabled=yes``. + .. rst-class:: classref-item-separator ---- @@ -10617,7 +10629,7 @@ The anisotropic filtering level also affects decals and light projectors if they Affects the final texture sharpness by reading from a lower or higher mipmap (also called "texture LOD bias"). Negative values make mipmapped textures sharper but grainier when viewed at a distance, while positive values make mipmapped textures blurrier (even when up close). -Enabling temporal antialiasing (:ref:`rendering/anti_aliasing/quality/use_taa<class_ProjectSettings_property_rendering/anti_aliasing/quality/use_taa>`) will automatically apply a ``-0.5`` offset to this value, while enabling FXAA (:ref:`rendering/anti_aliasing/quality/screen_space_aa<class_ProjectSettings_property_rendering/anti_aliasing/quality/screen_space_aa>`) will automatically apply a ``-0.25`` offset to this value. If both TAA and FXAA are enbled at the same time, an offset of ``-0.75`` is applied to this value. +Enabling temporal antialiasing (:ref:`rendering/anti_aliasing/quality/use_taa<class_ProjectSettings_property_rendering/anti_aliasing/quality/use_taa>`) will automatically apply a ``-0.5`` offset to this value, while enabling FXAA (:ref:`rendering/anti_aliasing/quality/screen_space_aa<class_ProjectSettings_property_rendering/anti_aliasing/quality/screen_space_aa>`) will automatically apply a ``-0.25`` offset to this value. If both TAA and FXAA are enabled at the same time, an offset of ``-0.75`` is applied to this value. \ **Note:** If :ref:`rendering/scaling_3d/scale<class_ProjectSettings_property_rendering/scaling_3d/scale>` is lower than ``1.0`` (exclusive), :ref:`rendering/textures/default_filters/texture_mipmap_bias<class_ProjectSettings_property_rendering/textures/default_filters/texture_mipmap_bias>` is used to adjust the automatic mipmap bias which is calculated internally based on the scale factor. The formula for this is ``log2(scaling_3d_scale) + mipmap_bias``. @@ -10952,8 +10964,8 @@ Adds a custom property info to a property. The dictionary must contain: var propertyInfo = new Godot.Collections.Dictionary { {"name", "category/propertyName"}, - {"type", Variant.Type.Int}, - {"hint", PropertyHint.Enum}, + {"type", (int)Variant.Type.Int}, + {"hint", (int)PropertyHint.Enum}, {"hint_string", "one,two,three"}, }; diff --git a/classes/class_quadoccluder3d.rst b/classes/class_quadoccluder3d.rst index 4e5f93411..d12a337a6 100644 --- a/classes/class_quadoccluder3d.rst +++ b/classes/class_quadoccluder3d.rst @@ -23,6 +23,13 @@ Description See :ref:`OccluderInstance3D<class_OccluderInstance3D>`'s documentation for instructions on setting up occlusion culling. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Occlusion culling <../tutorials/3d/occlusion_culling>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_quaternion.rst b/classes/class_quaternion.rst index 141d1edb3..14168eb85 100644 --- a/classes/class_quaternion.rst +++ b/classes/class_quaternion.rst @@ -17,21 +17,31 @@ A unit quaternion used for representing 3D rotations. Description ----------- -Quaternions are similar to :ref:`Basis<class_Basis>`, which implements the matrix representation of rotations. Unlike :ref:`Basis<class_Basis>`, which stores rotation, scale, and shearing, quaternions only store rotation. +The **Quaternion** built-in :ref:`Variant<class_Variant>` type is a 4D data structure that represents rotation in the form of a `Hamilton convention quaternion <https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation>`__. Compared to the :ref:`Basis<class_Basis>` type which can store both rotation and scale, quaternions can *only* store rotation. -Quaternions can be parametrized using both an axis-angle pair or Euler angles. Due to their compactness and the way they are stored in memory, certain operations (obtaining axis-angle and performing SLERP, in particular) are more efficient and robust against floating-point errors. +A **Quaternion** is composed by 4 floating-point components: :ref:`w<class_Quaternion_property_w>`, :ref:`x<class_Quaternion_property_x>`, :ref:`y<class_Quaternion_property_y>`, and :ref:`z<class_Quaternion_property_z>`. These components are very compact in memory, and because of this some operations are more efficient and less likely to cause floating-point errors. Methods such as :ref:`get_angle<class_Quaternion_method_get_angle>`, :ref:`get_axis<class_Quaternion_method_get_axis>`, and :ref:`slerp<class_Quaternion_method_slerp>` are faster than their :ref:`Basis<class_Basis>` counterparts. -\ **Note:** Quaternions need to be normalized before being used for rotation. +For a great introduction to quaternions, see `this video by 3Blue1Brown <https://www.youtube.com/watch?v=d4EgbgTm0Bg>`__. You do not need to know the math behind quaternions, as Godot provides several helper methods that handle it for you. These include :ref:`slerp<class_Quaternion_method_slerp>` and :ref:`spherical_cubic_interpolate<class_Quaternion_method_spherical_cubic_interpolate>`, as well as the ``*`` operator. + +\ **Note:** Quaternions must be normalized before being used for rotation (see :ref:`normalized<class_Quaternion_method_normalized>`). + +\ **Note:** Similarly to :ref:`Vector2<class_Vector2>` and :ref:`Vector3<class_Vector3>`, the components of a quaternion use 32-bit precision by default, unlike :ref:`float<class_float>` which is always 64-bit. If double precision is needed, compile the engine with the option ``precision=double``. .. rst-class:: classref-introduction-group Tutorials --------- +- `3Blue1Brown's video on Quaternions <https://www.youtube.com/watch?v=d4EgbgTm0Bg>`__ + +- `Online Quaternion Visualization <https://quaternions.online/>`__ + - `Using 3D transforms <../tutorials/3d/using_transforms.html#interpolating-with-quaternions>`__ - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__ +- `Advanced Quaternion Visualization <https://iwatake2222.github.io/rotation_master/rotation_master.html>`__ + .. rst-class:: classref-reftable-group Properties @@ -171,7 +181,9 @@ Constants **IDENTITY** = ``Quaternion(0, 0, 0, 1)`` -The identity quaternion, representing no rotation. Equivalent to an identity :ref:`Basis<class_Basis>` matrix. If a vector is transformed by an identity quaternion, it will not change. +The identity quaternion, representing no rotation. This has the same rotation as :ref:`Basis.IDENTITY<class_Basis_constant_IDENTITY>`. + +If a :ref:`Vector3<class_Vector3>` is rotated (multiplied) by this quaternion, it does not change. .. rst-class:: classref-section-separator @@ -188,9 +200,9 @@ Property Descriptions :ref:`float<class_float>` **w** = ``1.0`` -W component of the quaternion (real part). +W component of the quaternion. This is the "real" part. -Quaternion components should usually not be manipulated directly. +\ **Note:** Quaternion components should usually not be manipulated directly. .. rst-class:: classref-item-separator @@ -202,9 +214,9 @@ Quaternion components should usually not be manipulated directly. :ref:`float<class_float>` **x** = ``0.0`` -X component of the quaternion (imaginary ``i`` axis part). +X component of the quaternion. This is the value along the "imaginary" ``i`` axis. -Quaternion components should usually not be manipulated directly. +\ **Note:** Quaternion components should usually not be manipulated directly. .. rst-class:: classref-item-separator @@ -216,9 +228,9 @@ Quaternion components should usually not be manipulated directly. :ref:`float<class_float>` **y** = ``0.0`` -Y component of the quaternion (imaginary ``j`` axis part). +Y component of the quaternion. This is the value along the "imaginary" ``j`` axis. -Quaternion components should usually not be manipulated directly. +\ **Note:** Quaternion components should usually not be manipulated directly. .. rst-class:: classref-item-separator @@ -230,9 +242,9 @@ Quaternion components should usually not be manipulated directly. :ref:`float<class_float>` **z** = ``0.0`` -Z component of the quaternion (imaginary ``k`` axis part). +Z component of the quaternion. This is the value along the "imaginary" ``k`` axis. -Quaternion components should usually not be manipulated directly. +\ **Note:** Quaternion components should usually not be manipulated directly. .. rst-class:: classref-section-separator @@ -249,7 +261,7 @@ Constructor Descriptions :ref:`Quaternion<class_Quaternion>` **Quaternion** **(** **)** -Constructs a default-initialized quaternion with all components set to ``0``. +Constructs a **Quaternion** identical to the :ref:`IDENTITY<class_Quaternion_constant_IDENTITY>`. .. rst-class:: classref-item-separator @@ -269,7 +281,7 @@ Constructs a **Quaternion** as a copy of the given **Quaternion**. :ref:`Quaternion<class_Quaternion>` **Quaternion** **(** :ref:`Vector3<class_Vector3>` arc_from, :ref:`Vector3<class_Vector3>` arc_to **)** -Constructs a quaternion representing the shortest arc between two points on the surface of a sphere with a radius of ``1.0``. +Constructs a **Quaternion** representing the shortest arc between ``arc_from`` and ``arc_to``. These can be imagined as two points intersecting a sphere's surface, with a radius of ``1.0``. .. rst-class:: classref-item-separator @@ -279,7 +291,7 @@ Constructs a quaternion representing the shortest arc between two points on the :ref:`Quaternion<class_Quaternion>` **Quaternion** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)** -Constructs a quaternion that will rotate around the given axis by the specified angle. The axis must be a normalized vector. +Constructs a **Quaternion** representing rotation around the ``axis`` by the given ``angle``, in radians. The axis must be a normalized vector. .. rst-class:: classref-item-separator @@ -289,7 +301,9 @@ Constructs a quaternion that will rotate around the given axis by the specified :ref:`Quaternion<class_Quaternion>` **Quaternion** **(** :ref:`Basis<class_Basis>` from **)** -Constructs a quaternion from the given :ref:`Basis<class_Basis>`. +Constructs a **Quaternion** from the given rotation :ref:`Basis<class_Basis>`. + +This constructor is faster than :ref:`Basis.get_rotation_quaternion<class_Basis_method_get_rotation_quaternion>`, but the given basis must be *orthonormalized* (see :ref:`Basis.orthonormalized<class_Basis_method_orthonormalized>`). Otherwise, the constructor fails and returns :ref:`IDENTITY<class_Quaternion_constant_IDENTITY>`. .. rst-class:: classref-item-separator @@ -299,7 +313,9 @@ Constructs a quaternion from the given :ref:`Basis<class_Basis>`. :ref:`Quaternion<class_Quaternion>` **Quaternion** **(** :ref:`float<class_float>` x, :ref:`float<class_float>` y, :ref:`float<class_float>` z, :ref:`float<class_float>` w **)** -Constructs a quaternion defined by the given values. +Constructs a **Quaternion** defined by the given values. + +\ **Note:** Only normalized quaternions represent rotation; if these values are not normalized, the new **Quaternion** will not be a valid rotation. .. rst-class:: classref-section-separator @@ -330,7 +346,9 @@ Returns the angle between this quaternion and ``to``. This is the magnitude of t :ref:`float<class_float>` **dot** **(** :ref:`Quaternion<class_Quaternion>` with **)** |const| -Returns the dot product of two quaternions. +Returns the dot product between this quaternion and ``with``. + +This is equivalent to ``(quat.x * with.x) + (quat.y * with.y) + (quat.z * with.z) + (quat.w * with.w)``. .. rst-class:: classref-item-separator @@ -356,7 +374,7 @@ Returns the dot product of two quaternions. :ref:`Quaternion<class_Quaternion>` **from_euler** **(** :ref:`Vector3<class_Vector3>` euler **)** |static| -Constructs a Quaternion from Euler angles in YXZ rotation order. +Constructs a new **Quaternion** from the given :ref:`Vector3<class_Vector3>` of `Euler angles <https://en.wikipedia.org/wiki/Euler_angles>`__, in radians. This method always uses the YXZ convention (:ref:`@GlobalScope.EULER_ORDER_YXZ<class_@GlobalScope_constant_EULER_ORDER_YXZ>`). .. rst-class:: classref-item-separator @@ -396,7 +414,9 @@ Constructs a Quaternion from Euler angles in YXZ rotation order. :ref:`Vector3<class_Vector3>` **get_euler** **(** :ref:`int<class_int>` order=2 **)** |const| -Returns the quaternion's rotation in the form of Euler angles. The Euler order depends on the ``order`` parameter, for example using the YXZ convention: since this method decomposes, first Z, then X, and Y last. See the :ref:`EulerOrder<enum_@GlobalScope_EulerOrder>` enum for possible values. The returned vector contains the rotation angles in the format (X angle, Y angle, Z angle). +Returns this quaternion's rotation as a :ref:`Vector3<class_Vector3>` of `Euler angles <https://en.wikipedia.org/wiki/Euler_angles>`__, in radians. + +The order of each consecutive rotation can be changed with ``order`` (see :ref:`EulerOrder<enum_@GlobalScope_EulerOrder>` constants). By default, the YXZ convention is used (:ref:`@GlobalScope.EULER_ORDER_YXZ<class_@GlobalScope_constant_EULER_ORDER_YXZ>`): Z (roll) is calculated first, then X (pitch), and lastly Y (yaw). When using the opposite method :ref:`from_euler<class_Quaternion_method_from_euler>`, this order is reversed. .. rst-class:: classref-item-separator @@ -408,7 +428,7 @@ Returns the quaternion's rotation in the form of Euler angles. The Euler order d :ref:`Quaternion<class_Quaternion>` **inverse** **(** **)** |const| -Returns the inverse of the quaternion. +Returns the inverse version of this quaternion, inverting the sign of every component except :ref:`w<class_Quaternion_property_w>`. .. rst-class:: classref-item-separator @@ -444,7 +464,7 @@ Returns ``true`` if this quaternion is finite, by calling :ref:`@GlobalScope.is_ :ref:`bool<class_bool>` **is_normalized** **(** **)** |const| -Returns whether the quaternion is normalized or not. +Returns ``true`` if this quaternion is normalized. See also :ref:`normalized<class_Quaternion_method_normalized>`. .. rst-class:: classref-item-separator @@ -456,7 +476,7 @@ Returns whether the quaternion is normalized or not. :ref:`float<class_float>` **length** **(** **)** |const| -Returns the length of the quaternion. +Returns this quaternion's length, also called magnitude. .. rst-class:: classref-item-separator @@ -468,7 +488,9 @@ Returns the length of the quaternion. :ref:`float<class_float>` **length_squared** **(** **)** |const| -Returns the length of the quaternion, squared. +Returns this quaternion's length, squared. + +\ **Note:** This method is faster than :ref:`length<class_Quaternion_method_length>`, so prefer it if you only need to compare quaternion lengths. .. rst-class:: classref-item-separator @@ -480,9 +502,7 @@ Returns the length of the quaternion, squared. :ref:`Quaternion<class_Quaternion>` **log** **(** **)** |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Returns the logarithm of this quaternion. Multiplies this quaternion's rotation axis by its rotation angle, and stores the result in the returned quaternion's vector part (:ref:`x<class_Quaternion_property_x>`, :ref:`y<class_Quaternion_property_y>`, and :ref:`z<class_Quaternion_property_z>`). The returned quaternion's real part (:ref:`w<class_Quaternion_property_w>`) is always ``0.0``. .. rst-class:: classref-item-separator @@ -494,7 +514,7 @@ Returns the length of the quaternion, squared. :ref:`Quaternion<class_Quaternion>` **normalized** **(** **)** |const| -Returns a copy of the quaternion, normalized to unit length. +Returns a copy of this quaternion, normalized so that its length is ``1.0``. See also :ref:`is_normalized<class_Quaternion_method_is_normalized>`. .. rst-class:: classref-item-separator @@ -506,9 +526,7 @@ Returns a copy of the quaternion, normalized to unit length. :ref:`Quaternion<class_Quaternion>` **slerp** **(** :ref:`Quaternion<class_Quaternion>` to, :ref:`float<class_float>` weight **)** |const| -Returns the result of the spherical linear interpolation between this quaternion and ``to`` by amount ``weight``. - -\ **Note:** Both quaternions must be normalized. +Performs a spherical-linear interpolation with the ``to`` quaternion, given a ``weight`` and returns the result. Both this quaternion and ``to`` must be normalized. .. rst-class:: classref-item-separator @@ -520,7 +538,7 @@ Returns the result of the spherical linear interpolation between this quaternion :ref:`Quaternion<class_Quaternion>` **slerpni** **(** :ref:`Quaternion<class_Quaternion>` to, :ref:`float<class_float>` weight **)** |const| -Returns the result of the spherical linear interpolation between this quaternion and ``to`` by amount ``weight``, but without checking if the rotation path is not bigger than 90 degrees. +Performs a spherical-linear interpolation with the ``to`` quaternion, given a ``weight`` and returns the result. Unlike :ref:`slerp<class_Quaternion_method_slerp>`, this method does not check if the rotation path is smaller than 90 degrees. Both this quaternion and ``to`` must be normalized. .. rst-class:: classref-item-separator @@ -563,7 +581,7 @@ Operator Descriptions :ref:`bool<class_bool>` **operator !=** **(** :ref:`Quaternion<class_Quaternion>` right **)** -Returns ``true`` if the quaternions are not equal. +Returns ``true`` if the components of both quaternions are not exactly equal. \ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx<class_Quaternion_method_is_equal_approx>` instead, which is more reliable. @@ -577,7 +595,7 @@ Returns ``true`` if the quaternions are not equal. :ref:`Quaternion<class_Quaternion>` **operator *** **(** :ref:`Quaternion<class_Quaternion>` right **)** -Composes these two quaternions by multiplying them together. This has the effect of rotating the second quaternion (the child) by the first quaternion (the parent). +Composes (multiplies) two quaternions. This rotates the ``right`` quaternion (the child) by this quaternion (the parent). .. rst-class:: classref-item-separator @@ -589,7 +607,7 @@ Composes these two quaternions by multiplying them together. This has the effect :ref:`Vector3<class_Vector3>` **operator *** **(** :ref:`Vector3<class_Vector3>` right **)** -Rotates (multiplies) the :ref:`Vector3<class_Vector3>` by the given **Quaternion**. +Rotates (multiplies) the ``right`` vector by this quaternion, returning a :ref:`Vector3<class_Vector3>`. .. rst-class:: classref-item-separator @@ -601,7 +619,9 @@ Rotates (multiplies) the :ref:`Vector3<class_Vector3>` by the given **Quaternion :ref:`Quaternion<class_Quaternion>` **operator *** **(** :ref:`float<class_float>` right **)** -Multiplies each component of the **Quaternion** by the given value. This operation is not meaningful on its own, but it can be used as a part of a larger expression. +Multiplies each component of the **Quaternion** by the right :ref:`float<class_float>` value. + +This operation is not meaningful on its own, but it can be used as a part of a larger expression. .. rst-class:: classref-item-separator @@ -613,7 +633,9 @@ Multiplies each component of the **Quaternion** by the given value. This operati :ref:`Quaternion<class_Quaternion>` **operator *** **(** :ref:`int<class_int>` right **)** -Multiplies each component of the **Quaternion** by the given value. This operation is not meaningful on its own, but it can be used as a part of a larger expression. +Multiplies each component of the **Quaternion** by the right :ref:`int<class_int>` value. + +This operation is not meaningful on its own, but it can be used as a part of a larger expression. .. rst-class:: classref-item-separator @@ -625,7 +647,9 @@ Multiplies each component of the **Quaternion** by the given value. This operati :ref:`Quaternion<class_Quaternion>` **operator +** **(** :ref:`Quaternion<class_Quaternion>` right **)** -Adds each component of the left **Quaternion** to the right **Quaternion**. This operation is not meaningful on its own, but it can be used as a part of a larger expression, such as approximating an intermediate rotation between two nearby rotations. +Adds each component of the left **Quaternion** to the right **Quaternion**. + +This operation is not meaningful on its own, but it can be used as a part of a larger expression, such as approximating an intermediate rotation between two nearby rotations. .. rst-class:: classref-item-separator @@ -637,7 +661,9 @@ Adds each component of the left **Quaternion** to the right **Quaternion**. This :ref:`Quaternion<class_Quaternion>` **operator -** **(** :ref:`Quaternion<class_Quaternion>` right **)** -Subtracts each component of the left **Quaternion** by the right **Quaternion**. This operation is not meaningful on its own, but it can be used as a part of a larger expression. +Subtracts each component of the left **Quaternion** by the right **Quaternion**. + +This operation is not meaningful on its own, but it can be used as a part of a larger expression. .. rst-class:: classref-item-separator @@ -649,7 +675,9 @@ Subtracts each component of the left **Quaternion** by the right **Quaternion**. :ref:`Quaternion<class_Quaternion>` **operator /** **(** :ref:`float<class_float>` right **)** -Divides each component of the **Quaternion** by the given value. This operation is not meaningful on its own, but it can be used as a part of a larger expression. +Divides each component of the **Quaternion** by the right :ref:`float<class_float>` value. + +This operation is not meaningful on its own, but it can be used as a part of a larger expression. .. rst-class:: classref-item-separator @@ -661,7 +689,9 @@ Divides each component of the **Quaternion** by the given value. This operation :ref:`Quaternion<class_Quaternion>` **operator /** **(** :ref:`int<class_int>` right **)** -Divides each component of the **Quaternion** by the given value. This operation is not meaningful on its own, but it can be used as a part of a larger expression. +Divides each component of the **Quaternion** by the right :ref:`int<class_int>` value. + +This operation is not meaningful on its own, but it can be used as a part of a larger expression. .. rst-class:: classref-item-separator @@ -673,7 +703,7 @@ Divides each component of the **Quaternion** by the given value. This operation :ref:`bool<class_bool>` **operator ==** **(** :ref:`Quaternion<class_Quaternion>` right **)** -Returns ``true`` if the quaternions are exactly equal. +Returns ``true`` if the components of both quaternions are exactly equal. \ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx<class_Quaternion_method_is_equal_approx>` instead, which is more reliable. @@ -687,7 +717,9 @@ Returns ``true`` if the quaternions are exactly equal. :ref:`float<class_float>` **operator []** **(** :ref:`int<class_int>` index **)** -Access quaternion components using their index. ``q[0]`` is equivalent to ``q.x``, ``q[1]`` is equivalent to ``q.y``, ``q[2]`` is equivalent to ``q.z``, and ``q[3]`` is equivalent to ``q.w``. +Accesses each component of this quaternion by their index. + +Index ``0`` is the same as :ref:`x<class_Quaternion_property_x>`, index ``1`` is the same as :ref:`y<class_Quaternion_property_y>`, index ``2`` is the same as :ref:`z<class_Quaternion_property_z>`, and index ``3`` is the same as :ref:`w<class_Quaternion_property_w>`. .. rst-class:: classref-item-separator @@ -711,7 +743,7 @@ Returns the same value as if the ``+`` was not there. Unary ``+`` does nothing, :ref:`Quaternion<class_Quaternion>` **operator unary-** **(** **)** -Returns the negative value of the **Quaternion**. This is the same as writing ``Quaternion(-q.x, -q.y, -q.z, -q.w)``. This operation results in a quaternion that represents the same rotation. +Returns the negative value of the **Quaternion**. This is the same as multiplying all components by ``-1``. This operation results in a quaternion that represents the same rotation. .. |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_raycast2d.rst b/classes/class_raycast2d.rst index c6c0f7ae0..32d275b8c 100644 --- a/classes/class_raycast2d.rst +++ b/classes/class_raycast2d.rst @@ -311,6 +311,27 @@ Returns the :ref:`RID<class_RID>` of the first object that the ray intersects, o Returns the shape ID of the first object that the ray intersects, or ``0`` if no object is intersecting the ray (i.e. :ref:`is_colliding<class_RayCast2D_method_is_colliding>` returns ``false``). +To get the intersected shape node, for a :ref:`CollisionObject2D<class_CollisionObject2D>` target, use: + + +.. tabs:: + + .. code-tab:: gdscript + + var target = get_collider() # A CollisionObject2D. + var shape_id = get_collider_shape() # The shape index in the collider. + var owner_id = target.shape_find_owner(shape_id) # The owner ID in the collider. + var shape = target.shape_owner_get_owner(owner_id) + + .. code-tab:: csharp + + var target = (CollisionObject2D)GetCollider(); // A CollisionObject2D. + var shapeId = GetColliderShape(); // The shape index in the collider. + var ownerId = target.ShapeFindOwner(shapeId); // The owner ID in the collider. + var shape = target.ShapeOwnerGetOwner(ownerId); + + + .. rst-class:: classref-item-separator ---- @@ -345,7 +366,7 @@ Returns the normal of the intersecting object's shape at the collision point, or :ref:`Vector2<class_Vector2>` **get_collision_point** **(** **)** |const| -Returns the collision point at which the ray intersects the closest object. +Returns the collision point at which the ray intersects the closest object. If :ref:`hit_from_inside<class_RayCast2D_property_hit_from_inside>` is ``true`` and the ray starts inside of a collision shape, this function will return the origin point of the ray. \ **Note:** This point is in the **global** coordinate system. diff --git a/classes/class_raycast3d.rst b/classes/class_raycast3d.rst index 174e549e3..bc567e985 100644 --- a/classes/class_raycast3d.rst +++ b/classes/class_raycast3d.rst @@ -353,6 +353,27 @@ Returns the :ref:`RID<class_RID>` of the first object that the ray intersects, o Returns the shape ID of the first object that the ray intersects, or ``0`` if no object is intersecting the ray (i.e. :ref:`is_colliding<class_RayCast3D_method_is_colliding>` returns ``false``). +To get the intersected shape node, for a :ref:`CollisionObject3D<class_CollisionObject3D>` target, use: + + +.. tabs:: + + .. code-tab:: gdscript + + var target = get_collider() # A CollisionObject3D. + var shape_id = get_collider_shape() # The shape index in the collider. + var owner_id = target.shape_find_owner(shape_id) # The owner ID in the collider. + var shape = target.shape_owner_get_owner(owner_id) + + .. code-tab:: csharp + + var target = (CollisionObject3D)GetCollider(); // A CollisionObject3D. + var shapeId = GetColliderShape(); // The shape index in the collider. + var ownerId = target.ShapeFindOwner(shapeId); // The owner ID in the collider. + var shape = target.ShapeOwnerGetOwner(ownerId); + + + .. rst-class:: classref-item-separator ---- @@ -387,7 +408,7 @@ Returns the normal of the intersecting object's shape at the collision point, or :ref:`Vector3<class_Vector3>` **get_collision_point** **(** **)** |const| -Returns the collision point at which the ray intersects the closest object. +Returns the collision point at which the ray intersects the closest object. If :ref:`hit_from_inside<class_RayCast3D_property_hit_from_inside>` is ``true`` and the ray starts inside of a collision shape, this function will return the origin point of the ray. \ **Note:** This point is in the **global** coordinate system. diff --git a/classes/class_refcounted.rst b/classes/class_refcounted.rst index 785c619e0..614a73869 100644 --- a/classes/class_refcounted.rst +++ b/classes/class_refcounted.rst @@ -111,7 +111,7 @@ Returns ``true`` if the increment was successful, ``false`` otherwise. Decrements the internal reference counter. Use this only if you really know what you are doing. -Returns ``true`` if the decrement was successful, ``false`` otherwise. +Returns ``true`` if the object should be freed after the decrement, ``false`` otherwise. .. |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_renderingdevice.rst b/classes/class_renderingdevice.rst index 23afb4a92..3e7bc8194 100644 --- a/classes/class_renderingdevice.rst +++ b/classes/class_renderingdevice.rst @@ -34,7 +34,7 @@ On startup, Godot creates a global **RenderingDevice** which can be retrieved us Tutorials --------- -- `Using compute shaders <https://docs.godotengine.org/en/latest/tutorials/shaders/compute_shaders.html>`__ +- :doc:`Using compute shaders <../tutorials/shaders/compute_shaders>` .. rst-class:: classref-reftable-group @@ -4325,9 +4325,17 @@ Puts a memory barrier in place. This is used for synchronization to avoid data r :ref:`Error<enum_@GlobalScope_Error>` **buffer_clear** **(** :ref:`RID<class_RID>` buffer, :ref:`int<class_int>` offset, :ref:`int<class_int>` size_bytes, |bitfield|\<:ref:`BarrierMask<enum_RenderingDevice_BarrierMask>`\> post_barrier=7 **)** -.. container:: contribute +Clears the contents of the ``buffer``, clearing ``size_bytes`` bytes, starting at ``offset``. Always raises a memory barrier. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Prints an error if: + +- the size isn't a multiple of four + +- the region specified by ``offset`` + ``size_bytes`` exceeds the buffer + +- a draw list is currently active (created by :ref:`draw_list_begin<class_RenderingDevice_method_draw_list_begin>`) + +- a compute list is currently active (created by :ref:`compute_list_begin<class_RenderingDevice_method_compute_list_begin>`) .. rst-class:: classref-item-separator @@ -4351,9 +4359,15 @@ Returns a copy of the data of the specified ``buffer``, optionally ``offset_byte :ref:`Error<enum_@GlobalScope_Error>` **buffer_update** **(** :ref:`RID<class_RID>` buffer, :ref:`int<class_int>` offset, :ref:`int<class_int>` size_bytes, :ref:`PackedByteArray<class_PackedByteArray>` data, |bitfield|\<:ref:`BarrierMask<enum_RenderingDevice_BarrierMask>`\> post_barrier=7 **)** -.. container:: contribute +Updates a region of ``size_bytes`` bytes, starting at ``offset``, in the buffer, with the specified ``data``. Raises a memory barrier except when ``post_barrier`` is set to :ref:`BARRIER_MASK_NO_BARRIER<class_RenderingDevice_constant_BARRIER_MASK_NO_BARRIER>`. - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Prints an error if: + +- the region specified by ``offset`` + ``size_bytes`` exceeds the buffer + +- a draw list is currently active (created by :ref:`draw_list_begin<class_RenderingDevice_method_draw_list_begin>`) + +- a compute list is currently active (created by :ref:`compute_list_begin<class_RenderingDevice_method_compute_list_begin>`) .. rst-class:: classref-item-separator @@ -4377,9 +4391,7 @@ Creates a timestamp marker with the specified ``name``. This is used for perform void **compute_list_add_barrier** **(** :ref:`int<class_int>` compute_list **)** -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Raises a Vulkan compute barrier in the specified ``compute_list``. .. rst-class:: classref-item-separator @@ -4423,9 +4435,7 @@ A simple compute operation might look like this (code is not a complete example) void **compute_list_bind_compute_pipeline** **(** :ref:`int<class_int>` compute_list, :ref:`RID<class_RID>` compute_pipeline **)** -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Tells the GPU what compute pipeline to use when processing the compute list. If the shader has changed since the last time this function was called, Godot will unbind all descriptor sets and will re-bind them inside :ref:`compute_list_dispatch<class_RenderingDevice_method_compute_list_dispatch>`. .. rst-class:: classref-item-separator @@ -4437,9 +4447,7 @@ void **compute_list_bind_compute_pipeline** **(** :ref:`int<class_int>` compute_ void **compute_list_bind_uniform_set** **(** :ref:`int<class_int>` compute_list, :ref:`RID<class_RID>` uniform_set, :ref:`int<class_int>` set_index **)** -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Binds the ``uniform_set`` to this ``compute_list``. Godot ensures that all textures in the uniform set have the correct Vulkan access masks. If Godot had to change access masks of textures, it will raise a Vulkan image memory barrier. .. rst-class:: classref-item-separator @@ -5250,9 +5258,7 @@ Once finished with your RID, you will want to free the RID using the RenderingDe :ref:`int<class_int>` **shader_get_vertex_input_attribute_mask** **(** :ref:`RID<class_RID>` shader **)** -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Returns the internal vertex input mask. Internally, the vertex input mask is an unsigned integer consisting of the locations (specified in GLSL via. ``layout(location = ...)``) of the input variables (specified in GLSL by the ``in`` keyword). .. rst-class:: classref-item-separator @@ -5512,7 +5518,7 @@ Updates texture data with new data, replacing the previous data in place. The up :ref:`RID<class_RID>` **uniform_buffer_create** **(** :ref:`int<class_int>` size_bytes, :ref:`PackedByteArray<class_PackedByteArray>` data=PackedByteArray() **)** -It can be accessed with the RID that is returned. +Creates a new uniform buffer. It can be accessed with the RID that is returned. Once finished with your RID, you will want to free the RID using the RenderingDevice's :ref:`free_rid<class_RenderingDevice_method_free_rid>` method. @@ -5526,7 +5532,7 @@ Once finished with your RID, you will want to free the RID using the RenderingDe :ref:`RID<class_RID>` **uniform_set_create** **(** :ref:`RDUniform[]<class_RDUniform>` uniforms, :ref:`RID<class_RID>` shader, :ref:`int<class_int>` shader_set **)** -It can be accessed with the RID that is returned. +Creates a new uniform set. It can be accessed with the RID that is returned. Once finished with your RID, you will want to free the RID using the RenderingDevice's :ref:`free_rid<class_RenderingDevice_method_free_rid>` method. @@ -5540,9 +5546,7 @@ Once finished with your RID, you will want to free the RID using the RenderingDe :ref:`bool<class_bool>` **uniform_set_is_valid** **(** :ref:`RID<class_RID>` uniform_set **)** -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Checks if the ``uniform_set`` is valid, i.e. is owned. .. rst-class:: classref-item-separator diff --git a/classes/class_renderingserver.rst b/classes/class_renderingserver.rst index d04f0b825..fc386fff3 100644 --- a/classes/class_renderingserver.rst +++ b/classes/class_renderingserver.rst @@ -265,6 +265,8 @@ Methods +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RenderingDevice<class_RenderingDevice>` | :ref:`create_local_rendering_device<class_RenderingServer_method_create_local_rendering_device>` **(** **)** |const| | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2<class_Rect2>` | :ref:`debug_canvas_item_get_rect<class_RenderingServer_method_debug_canvas_item_get_rect>` **(** :ref:`RID<class_RID>` item **)** | + +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID<class_RID>` | :ref:`decal_create<class_RenderingServer_method_decal_create>` **(** **)** | +----------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`decal_set_albedo_mix<class_RenderingServer_method_decal_set_albedo_mix>` **(** :ref:`RID<class_RID>` decal, :ref:`float<class_float>` albedo_mix **)** | @@ -2460,7 +2462,7 @@ Draw particles in the order that they appear in the particles array. :ref:`ParticlesDrawOrder<enum_RenderingServer_ParticlesDrawOrder>` **PARTICLES_DRAW_ORDER_LIFETIME** = ``1`` -Sort particles based on their lifetime. +Sort particles based on their lifetime. In other words, the particle with the highest lifetime is drawn at the front. .. _class_RenderingServer_constant_PARTICLES_DRAW_ORDER_REVERSE_LIFETIME: @@ -2468,7 +2470,7 @@ Sort particles based on their lifetime. :ref:`ParticlesDrawOrder<enum_RenderingServer_ParticlesDrawOrder>` **PARTICLES_DRAW_ORDER_REVERSE_LIFETIME** = ``2`` - +Sort particles based on the inverse of their lifetime. In other words, the particle with the lowest lifetime is drawn at the front. .. _class_RenderingServer_constant_PARTICLES_DRAW_ORDER_VIEW_DEPTH: @@ -4538,7 +4540,7 @@ Uses the default filter mode for this :ref:`Viewport<class_Viewport>`. :ref:`CanvasItemTextureFilter<enum_RenderingServer_CanvasItemTextureFilter>` **CANVAS_ITEM_TEXTURE_FILTER_NEAREST** = ``1`` -The texture filter reads from the nearest pixel only. The simplest and fastest method of filtering, but the texture will look pixelized. +The texture filter reads from the nearest pixel only. This makes the texture look pixelated from up close, and grainy from a distance (due to mipmaps not being sampled). .. _class_RenderingServer_constant_CANVAS_ITEM_TEXTURE_FILTER_LINEAR: @@ -4546,7 +4548,7 @@ The texture filter reads from the nearest pixel only. The simplest and fastest m :ref:`CanvasItemTextureFilter<enum_RenderingServer_CanvasItemTextureFilter>` **CANVAS_ITEM_TEXTURE_FILTER_LINEAR** = ``2`` -The texture filter blends between the nearest 4 pixels. Use this when you want to avoid a pixelated style, but do not want mipmaps. +The texture filter blends between the nearest 4 pixels. This makes the texture look smooth from up close, and grainy from a distance (due to mipmaps not being sampled). .. _class_RenderingServer_constant_CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS: @@ -4554,7 +4556,9 @@ The texture filter blends between the nearest 4 pixels. Use this when you want t :ref:`CanvasItemTextureFilter<enum_RenderingServer_CanvasItemTextureFilter>` **CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS** = ``3`` -The texture filter reads from the nearest pixel in the nearest mipmap. The fastest way to read from textures with mipmaps. +The texture filter reads from the nearest pixel and blends between the nearest 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter<class_ProjectSettings_property_rendering/textures/default_filters/use_nearest_mipmap_filter>` is ``true``). This makes the texture look pixelated from up close, and smooth from a distance. + +Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to :ref:`Camera2D<class_Camera2D>` zoom or sprite scaling), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels. .. _class_RenderingServer_constant_CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS: @@ -4562,7 +4566,9 @@ The texture filter reads from the nearest pixel in the nearest mipmap. The faste :ref:`CanvasItemTextureFilter<enum_RenderingServer_CanvasItemTextureFilter>` **CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS** = ``4`` -The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps. +The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter<class_ProjectSettings_property_rendering/textures/default_filters/use_nearest_mipmap_filter>` is ``true``). This makes the texture look smooth from up close, and smooth from a distance. + +Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to :ref:`Camera2D<class_Camera2D>` zoom or sprite scaling), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels. .. _class_RenderingServer_constant_CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC: @@ -4570,7 +4576,9 @@ The texture filter blends between the nearest 4 pixels and between the nearest 2 :ref:`CanvasItemTextureFilter<enum_RenderingServer_CanvasItemTextureFilter>` **CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC** = ``5`` -The texture filter reads from the nearest pixel, but selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. +The texture filter reads from the nearest pixel and blends between 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter<class_ProjectSettings_property_rendering/textures/default_filters/use_nearest_mipmap_filter>` is ``true``) based on the angle between the surface and the camera view. This makes the texture look pixelated from up close, and smooth from a distance. Anisotropic filtering improves texture quality on surfaces that are almost in line with the camera, but is slightly slower. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level<class_ProjectSettings_property_rendering/textures/default_filters/anisotropic_filtering_level>`. + +\ **Note:** This texture filter is rarely useful in 2D projects. :ref:`CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS<class_RenderingServer_constant_CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS>` is usually more appropriate in this case. .. _class_RenderingServer_constant_CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC: @@ -4578,7 +4586,9 @@ The texture filter reads from the nearest pixel, but selects a mipmap based on t :ref:`CanvasItemTextureFilter<enum_RenderingServer_CanvasItemTextureFilter>` **CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC** = ``6`` -The texture filter blends between the nearest 4 pixels and selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. This is the slowest of the filtering options, but results in the highest quality texturing. +The texture filter blends between the nearest 4 pixels and blends between 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter<class_ProjectSettings_property_rendering/textures/default_filters/use_nearest_mipmap_filter>` is ``true``) based on the angle between the surface and the camera view. This makes the texture look smooth from up close, and smooth from a distance. Anisotropic filtering improves texture quality on surfaces that are almost in line with the camera, but is slightly slower. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level<class_ProjectSettings_property_rendering/textures/default_filters/anisotropic_filtering_level>`. + +\ **Note:** This texture filter is rarely useful in 2D projects. :ref:`CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS<class_RenderingServer_constant_CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS>` is usually more appropriate in this case. .. _class_RenderingServer_constant_CANVAS_ITEM_TEXTURE_FILTER_MAX: @@ -6562,6 +6572,20 @@ Creates a RenderingDevice that can be used to do draw and compute operations on ---- +.. _class_RenderingServer_method_debug_canvas_item_get_rect: + +.. rst-class:: classref-method + +:ref:`Rect2<class_Rect2>` **debug_canvas_item_get_rect** **(** :ref:`RID<class_RID>` item **)** + +Returns the bounding rectangle for a canvas item in local space, as calculated by the renderer. This bound is used internally for culling. + +\ **Warning:** This function is intended for debugging in the editor, and will pass through and return a zero :ref:`Rect2<class_Rect2>` in exported projects. + +.. rst-class:: classref-item-separator + +---- + .. _class_RenderingServer_method_decal_create: .. rst-class:: classref-method @@ -7294,6 +7318,8 @@ Returns the name of the video adapter (e.g. "GeForce GTX 1080/PCIe/SSE2"). \ **Note:** When running a headless or server binary, this function returns an empty string. +\ **Note:** On the web platform, some browsers such as Firefox may report a different, fixed GPU name such as "GeForce GTX 980" (regardless of the user's actual GPU model). This is done to make fingerprinting more difficult. + .. rst-class:: classref-item-separator ---- @@ -7808,7 +7834,7 @@ Sets the override material of a specific surface. Equivalent to :ref:`MeshInstan void **instance_set_transform** **(** :ref:`RID<class_RID>` instance, :ref:`Transform3D<class_Transform3D>` transform **)** -Sets the world space transform of the instance. Equivalent to :ref:`Node3D.transform<class_Node3D_property_transform>`. +Sets the world space transform of the instance. Equivalent to :ref:`Node3D.global_transform<class_Node3D_property_global_transform>`. .. rst-class:: classref-item-separator diff --git a/classes/class_resourceloader.rst b/classes/class_resourceloader.rst index 9435e5c50..a0165ecbd 100644 --- a/classes/class_resourceloader.rst +++ b/classes/class_resourceloader.rst @@ -262,6 +262,8 @@ GDScript has a simplified :ref:`@GDScript.load<class_@GDScript_method_load>` bui \ **Note:** If :ref:`ProjectSettings.editor/export/convert_text_resources_to_binary<class_ProjectSettings_property_editor/export/convert_text_resources_to_binary>` is ``true``, :ref:`@GDScript.load<class_@GDScript_method_load>` will not be able to read converted files in an exported project. If you rely on run-time loading of files present within the PCK, set :ref:`ProjectSettings.editor/export/convert_text_resources_to_binary<class_ProjectSettings_property_editor/export/convert_text_resources_to_binary>` to ``false``. +\ **Note:** Relative paths will be prefixed with ``"res://"`` before loading, to avoid unexpected results make sure your paths are absolute. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_richtexteffect.rst b/classes/class_richtexteffect.rst index 91fb56e3f..ed460a470 100644 --- a/classes/class_richtexteffect.rst +++ b/classes/class_richtexteffect.rst @@ -19,7 +19,7 @@ A custom effect for a :ref:`RichTextLabel<class_RichTextLabel>`. Description ----------- -A custom effect for a :ref:`RichTextLabel<class_RichTextLabel>`. +A custom effect for a :ref:`RichTextLabel<class_RichTextLabel>`, which can be loaded in the :ref:`RichTextLabel<class_RichTextLabel>` inspector or using :ref:`RichTextLabel.install_effect<class_RichTextLabel_method_install_effect>`. \ **Note:** For a **RichTextEffect** to be usable, a BBCode tag must be defined as a member variable called ``bbcode`` in the script. diff --git a/classes/class_richtextlabel.rst b/classes/class_richtextlabel.rst index 6515a471b..8287b2acc 100644 --- a/classes/class_richtextlabel.rst +++ b/classes/class_richtextlabel.rst @@ -925,7 +925,7 @@ Clears the current selection. :ref:`int<class_int>` **get_character_line** **(** :ref:`int<class_int>` character **)** -Returns the line number of the character position provided. +Returns the line number of the character position provided. Line and character numbers are both zero-indexed. \ **Note:** If :ref:`threaded<class_RichTextLabel_property_threaded>` is enabled, this method returns a value for the loaded part of the document. Use :ref:`is_ready<class_RichTextLabel_method_is_ready>` or :ref:`finished<class_RichTextLabel_signal_finished>` to determine whether document is fully loaded. @@ -939,7 +939,7 @@ Returns the line number of the character position provided. :ref:`int<class_int>` **get_character_paragraph** **(** :ref:`int<class_int>` character **)** -Returns the paragraph number of the character position provided. +Returns the paragraph number of the character position provided. Paragraph and character numbers are both zero-indexed. \ **Note:** If :ref:`threaded<class_RichTextLabel_property_threaded>` is enabled, this method returns a value for the loaded part of the document. Use :ref:`is_ready<class_RichTextLabel_method_is_ready>` or :ref:`finished<class_RichTextLabel_signal_finished>` to determine whether document is fully loaded. @@ -1196,7 +1196,32 @@ Returns the number of visible paragraphs. A paragraph is considered visible if a void **install_effect** **(** :ref:`Variant<class_Variant>` effect **)** -Installs a custom effect. ``effect`` should be a valid :ref:`RichTextEffect<class_RichTextEffect>`. +Installs a custom effect. This can also be done in the RichTextLabel inspector using the :ref:`custom_effects<class_RichTextLabel_property_custom_effects>` property. ``effect`` should be a valid :ref:`RichTextEffect<class_RichTextEffect>`. + +Example RichTextEffect: + +:: + + # effect.gd + class_name MyCustomEffect + extends RichTextEffect + + var bbcode = "my_custom_effect" + + # ... + +Registering the above effect in RichTextLabel from script: + +:: + + # rich_text_label.gd + extends RichTextLabel + + func _ready(): + install_effect(MyCustomEffect.new()) + + # Alternatively, if not using `class_name` in the script that extends RichTextEffect: + install_effect(preload("res://effect.gd").new()) .. rst-class:: classref-item-separator diff --git a/classes/class_scrollcontainer.rst b/classes/class_scrollcontainer.rst index 5d2991da9..b91ab0cf6 100644 --- a/classes/class_scrollcontainer.rst +++ b/classes/class_scrollcontainer.rst @@ -101,7 +101,9 @@ Signals **scroll_ended** **(** **)** -Emitted when scrolling stops. +Emitted when scrolling stops when dragging the scrollable area *with a touch event*. This signal is *not* emitted when scrolling by dragging the scrollbar, scrolling with the mouse wheel or scrolling with keyboard/gamepad events. + +\ **Note:** This signal is only emitted on Android or iOS, or on desktop/web platforms when :ref:`ProjectSettings.input_devices/pointing/emulate_touch_from_mouse<class_ProjectSettings_property_input_devices/pointing/emulate_touch_from_mouse>` is enabled. .. rst-class:: classref-item-separator @@ -113,7 +115,9 @@ Emitted when scrolling stops. **scroll_started** **(** **)** -Emitted when scrolling is started. +Emitted when scrolling starts when dragging the scrollable area w\ *ith a touch event*. This signal is *not* emitted when scrolling by dragging the scrollbar, scrolling with the mouse wheel or scrolling with keyboard/gamepad events. + +\ **Note:** This signal is only emitted on Android or iOS, or on desktop/web platforms when :ref:`ProjectSettings.input_devices/pointing/emulate_touch_from_mouse<class_ProjectSettings_property_input_devices/pointing/emulate_touch_from_mouse>` is enabled. .. rst-class:: classref-section-separator @@ -233,7 +237,7 @@ Deadzone for touch scrolling. Lower deadzone makes the scrolling more sensitive. - void **set_h_scroll** **(** :ref:`int<class_int>` value **)** - :ref:`int<class_int>` **get_h_scroll** **(** **)** -The current horizontal scroll value. +The current horizontal scroll value. \ **Note:** If you are setting this value in the :ref:`Node._ready<class_Node_method__ready>` function or earlier, it needs to be wrapped with :ref:`Object.set_deferred<class_Object_method_set_deferred>`, since scroll bar's :ref:`Range.max_value<class_Range_property_max_value>` is not initialized yet. diff --git a/classes/class_separationrayshape3d.rst b/classes/class_separationrayshape3d.rst index 25a066127..de9ff125f 100644 --- a/classes/class_separationrayshape3d.rst +++ b/classes/class_separationrayshape3d.rst @@ -19,7 +19,7 @@ A 3D ray shape used for physics collision that tries to separate itself from any Description ----------- -A 3D ray shape, intended for use in physics. Usually used to provide a shape for a :ref:`CollisionShape2D<class_CollisionShape2D>`. When a **SeparationRayShape3D** collides with an object, it tries to separate itself from it by moving its endpoint to the collision point. It can for example be used for spears falling from the sky. +A 3D ray shape, intended for use in physics. Usually used to provide a shape for a :ref:`CollisionShape3D<class_CollisionShape3D>`. When a **SeparationRayShape3D** collides with an object, it tries to separate itself from it by moving its endpoint to the collision point. It can for example be used for spears falling from the sky. .. rst-class:: classref-reftable-group diff --git a/classes/class_skeleton3d.rst b/classes/class_skeleton3d.rst index 5ab14404e..a3a911bb6 100644 --- a/classes/class_skeleton3d.rst +++ b/classes/class_skeleton3d.rst @@ -25,8 +25,6 @@ The overall transform of a bone with respect to the skeleton is determined by bo Note that "global pose" below refers to the overall transform of the bone with respect to skeleton, so it is not the actual global/world transform of the bone. -To setup different types of inverse kinematics, consider using :ref:`SkeletonIK3D<class_SkeletonIK3D>`, or add a custom IK implementation in :ref:`Node._process<class_Node_method__process>` as a child node. - .. rst-class:: classref-introduction-group Tutorials @@ -383,7 +381,7 @@ Force updates the bone transform for the bone at ``bone_idx`` and all of its chi :ref:`PackedInt32Array<class_PackedInt32Array>` **get_bone_children** **(** :ref:`int<class_int>` bone_idx **)** |const| -Returns an array containing the bone indexes of all the children node of the passed in bone, ``bone_idx``. +Returns an array containing the bone indexes of all the child node of the passed in bone, ``bone_idx``. .. rst-class:: classref-item-separator diff --git a/classes/class_sliderjoint3d.rst b/classes/class_sliderjoint3d.rst index 0e27be582..f8ba25ae5 100644 --- a/classes/class_sliderjoint3d.rst +++ b/classes/class_sliderjoint3d.rst @@ -134,7 +134,7 @@ A factor applied to the movement across the slider axis once the limits get surp :ref:`Param<enum_SliderJoint3D_Param>` **PARAM_LINEAR_LIMIT_RESTITUTION** = ``3`` -The amount of restitution once the limits are surpassed. The lower, the more velocityenergy gets lost. +The amount of restitution once the limits are surpassed. The lower, the more velocity-energy gets lost. .. _class_SliderJoint3D_constant_PARAM_LINEAR_LIMIT_DAMPING: diff --git a/classes/class_softbody3d.rst b/classes/class_softbody3d.rst index 36cdad47d..75c030bbd 100644 --- a/classes/class_softbody3d.rst +++ b/classes/class_softbody3d.rst @@ -185,9 +185,7 @@ The physics layers this SoftBody3D **scans**. Collision objects can scan one or - void **set_damping_coefficient** **(** :ref:`float<class_float>` value **)** - :ref:`float<class_float>` **get_damping_coefficient** **(** **)** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +The body's damping coefficient. Higher values will slow down the body more noticeably when forces are applied. .. rst-class:: classref-item-separator @@ -221,9 +219,9 @@ Defines the behavior in physics when :ref:`Node.process_mode<class_Node_property - void **set_drag_coefficient** **(** :ref:`float<class_float>` value **)** - :ref:`float<class_float>` **get_drag_coefficient** **(** **)** -.. container:: contribute +The body's drag coefficient. Higher values increase this body's air resistance. - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +\ **Note:** This value is currently unused by Godot's default physics implementation. .. rst-class:: classref-item-separator @@ -240,9 +238,7 @@ Defines the behavior in physics when :ref:`Node.process_mode<class_Node_property - void **set_linear_stiffness** **(** :ref:`float<class_float>` value **)** - :ref:`float<class_float>` **get_linear_stiffness** **(** **)** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Higher values will result in a stiffer body, while lower values will increase the body's ability to bend. The value can be between ``0.0`` and ``1.0`` (inclusive). .. rst-class:: classref-item-separator @@ -276,9 +272,7 @@ Defines the behavior in physics when :ref:`Node.process_mode<class_Node_property - void **set_pressure_coefficient** **(** :ref:`float<class_float>` value **)** - :ref:`float<class_float>` **get_pressure_coefficient** **(** **)** -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +The pressure coefficient of this soft body. Simulate pressure build-up from inside this body. Higher values increase the strength of this effect. .. rst-class:: classref-item-separator @@ -394,9 +388,7 @@ Returns whether or not the specified layer of the :ref:`collision_mask<class_Sof :ref:`RID<class_RID>` **get_physics_rid** **(** **)** |const| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one <doc_updating_the_class_reference>`! +Returns the internal :ref:`RID<class_RID>` used by the :ref:`PhysicsServer3D<class_PhysicsServer3D>` for this body. .. rst-class:: classref-item-separator diff --git a/classes/class_sphereoccluder3d.rst b/classes/class_sphereoccluder3d.rst index c09b395cb..b56e190a2 100644 --- a/classes/class_sphereoccluder3d.rst +++ b/classes/class_sphereoccluder3d.rst @@ -23,6 +23,13 @@ Description See :ref:`OccluderInstance3D<class_OccluderInstance3D>`'s documentation for instructions on setting up occlusion culling. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Occlusion culling <../tutorials/3d/occlusion_culling>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_spotlight3d.rst b/classes/class_spotlight3d.rst index 11f44fe93..224a1b3ab 100644 --- a/classes/class_spotlight3d.rst +++ b/classes/class_spotlight3d.rst @@ -32,6 +32,8 @@ Tutorials - :doc:`3D lights and shadows <../tutorials/3d/lights_and_shadows>` +- :doc:`Faking global illumination <../tutorials/3d/global_illumination/faking_global_illumination>` + - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__ .. rst-class:: classref-reftable-group diff --git a/classes/class_spritebase3d.rst b/classes/class_spritebase3d.rst index 10daad99e..a8f691a33 100644 --- a/classes/class_spritebase3d.rst +++ b/classes/class_spritebase3d.rst @@ -420,7 +420,9 @@ If ``true``, texture is flipped vertically. - void **set_modulate** **(** :ref:`Color<class_Color>` value **)** - :ref:`Color<class_Color>` **get_modulate** **(** **)** -A color value used to *multiply* the texture's colors. Can be used for mood-coloring or to simulate the color of light. +A color value used to *multiply* the texture's colors. Can be used for mood-coloring or to simulate the color of ambient light. + +\ **Note:** Unlike :ref:`CanvasItem.modulate<class_CanvasItem_property_modulate>` for 2D, colors with values above ``1.0`` (overbright) are not supported. \ **Note:** If a :ref:`GeometryInstance3D.material_override<class_GeometryInstance3D_property_material_override>` is defined on the **SpriteBase3D**, the material override must be configured to take vertex colors into account for albedo. Otherwise, the color defined in :ref:`modulate<class_SpriteBase3D_property_modulate>` will be ignored. For a :ref:`BaseMaterial3D<class_BaseMaterial3D>`, :ref:`BaseMaterial3D.vertex_color_use_as_albedo<class_BaseMaterial3D_property_vertex_color_use_as_albedo>` must be ``true``. For a :ref:`ShaderMaterial<class_ShaderMaterial>`, ``ALBEDO *= COLOR.rgb;`` must be inserted in the shader's ``fragment()`` function. @@ -530,6 +532,8 @@ If ``true``, the :ref:`Light3D<class_Light3D>` in the :ref:`Environment<class_En Filter flags for the texture. See :ref:`TextureFilter<enum_BaseMaterial3D_TextureFilter>` for options. +\ **Note:** Linear filtering may cause artifacts around the edges, which are especially noticeable on opaque textures. To prevent this, use textures with transparent or identical colors around the edges. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_string.rst b/classes/class_string.rst index f4e6a04cf..f8aaa27c7 100644 --- a/classes/class_string.rst +++ b/classes/class_string.rst @@ -452,16 +452,16 @@ Changes the appearance of the string: replaces underscores (``_``) with spaces, "move_local_x".capitalize() # Returns "Move Local X" "sceneFile_path".capitalize() # Returns "Scene File Path" + "2D, FPS, PNG".capitalize() # Returns "2d, Fps, Png" .. code-tab:: csharp "move_local_x".Capitalize(); // Returns "Move Local X" "sceneFile_path".Capitalize(); // Returns "Scene File Path" + "2D, FPS, PNG".Capitalize(); // Returns "2d, Fps, Png" -\ **Note:** This method not the same as the default appearance of properties in the Inspector dock, as it does not capitalize acronyms (``"2D"``, ``"FPS"``, ``"PNG"``, etc.) as you may expect. - .. rst-class:: classref-item-separator ---- @@ -665,6 +665,15 @@ Some additional handling is performed when ``values`` is an :ref:`Array<class_Ar See also the :doc:`GDScript format string <../tutorials/scripting/gdscript/gdscript_format_string>` tutorial. +\ **Note:** The replacement of placeholders is not done all at once, instead each placeholder is replaced in the order they are passed, this means that if one of the replacement strings contains a key it will also be replaced. This can be very powerful, but can also cause unexpected results if you are not careful. If you do not need to perform replacement in the replacement strings, make sure your replacements do not contain placeholders to ensure reliable results. + +:: + + print("{0} {1}".format(["{1}", "x"])) # Prints "x x". + print("{0} {1}".format(["x", "{0}"])) # Prints "x {0}". + print("{foo} {bar}".format({"foo": "{bar}", "bar": "baz"})) # Prints "baz baz". + print("{foo} {bar}".format({"bar": "baz", "foo": "{bar}"})) # Prints "{bar} baz". + \ **Note:** In C#, it's recommended to `interpolate strings with "$" <https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated>`__, instead. .. rst-class:: classref-item-separator @@ -1349,8 +1358,8 @@ Converts the given ``number`` to a string representation, in scientific notation .. code-tab:: gdscript var n = -5.2e8 - print(n) # Prints -520000000 - print(String.NumScientific(n)) # Prints -5.2e+08 + print(n) # Prints -520000000 + print(String.num_scientific(n)) # Prints -5.2e+08 .. code-tab:: csharp @@ -1815,7 +1824,7 @@ Converts the string representing an integer number into an :ref:`int<class_int>` :ref:`String<class_String>` **to_lower** **(** **)** |const| -Returns the string converted to lowercase. +Returns the string converted to ``lowercase``. .. rst-class:: classref-item-separator @@ -1841,6 +1850,25 @@ Returns the string converted to ``PascalCase``. Returns the string converted to ``snake_case``. +\ **Note:** Numbers followed by a *single* letter are not separated in the conversion to keep some words (such as "2D") together. + + +.. tabs:: + + .. code-tab:: gdscript + + "Node2D".to_snake_case() # Returns "node_2d" + "2nd place".to_snake_case() # Returns "2_nd_place" + "Texture3DAssetFolder".to_snake_case() # Returns "texture_3d_asset_folder" + + .. code-tab:: csharp + + "Node2D".ToSnakeCase(); // Returns "node_2d" + "2nd place".ToSnakeCase(); // Returns "2_nd_place" + "Texture3DAssetFolder".ToSnakeCase(); // Returns "texture_3d_asset_folder" + + + .. rst-class:: classref-item-separator ---- @@ -1851,7 +1879,7 @@ Returns the string converted to ``snake_case``. :ref:`String<class_String>` **to_upper** **(** **)** |const| -Returns the string converted to uppercase. +Returns the string converted to ``UPPERCASE``. .. rst-class:: classref-item-separator diff --git a/classes/class_stringname.rst b/classes/class_stringname.rst index 13779ca0a..f75ae2a7a 100644 --- a/classes/class_stringname.rst +++ b/classes/class_stringname.rst @@ -25,6 +25,8 @@ See also :ref:`NodePath<class_NodePath>`, which is a similar concept specificall All of :ref:`String<class_String>`'s methods are available in this class too. They convert the **StringName** into a string, and they also return a string. This is highly inefficient and should only be used if the string is desired. +\ **Note:** In C#, an explicit conversion to ``System.String`` is required to use the methods listed on this page. Use the ``ToString()`` method to cast a **StringName** to a string, and then use the equivalent methods in ``System.String`` or ``StringExtensions``. + \ **Note:** In a boolean context, a **StringName** will evaluate to ``false`` if it is empty (``StringName("")``). Otherwise, a **StringName** will always evaluate to ``true``. The ``not`` operator cannot be used. Instead, :ref:`is_empty<class_StringName_method_is_empty>` should be used to check for empty **StringName**\ s. .. rst-class:: classref-reftable-group @@ -423,16 +425,16 @@ Changes the appearance of the string: replaces underscores (``_``) with spaces, "move_local_x".capitalize() # Returns "Move Local X" "sceneFile_path".capitalize() # Returns "Scene File Path" + "2D, FPS, PNG".capitalize() # Returns "2d, Fps, Png" .. code-tab:: csharp "move_local_x".Capitalize(); // Returns "Move Local X" "sceneFile_path".Capitalize(); // Returns "Scene File Path" + "2D, FPS, PNG".Capitalize(); // Returns "2d, Fps, Png" -\ **Note:** This method not the same as the default appearance of properties in the Inspector dock, as it does not capitalize acronyms (``"2D"``, ``"FPS"``, ``"PNG"``, etc.) as you may expect. - .. rst-class:: classref-item-separator ---- @@ -1658,7 +1660,7 @@ Converts the string representing an integer number into an :ref:`int<class_int>` :ref:`String<class_String>` **to_lower** **(** **)** |const| -Returns the string converted to lowercase. +Returns the string converted to ``lowercase``. .. rst-class:: classref-item-separator @@ -1684,6 +1686,25 @@ Returns the string converted to ``PascalCase``. Returns the string converted to ``snake_case``. +\ **Note:** Numbers followed by a *single* letter are not separated in the conversion to keep some words (such as "2D") together. + + +.. tabs:: + + .. code-tab:: gdscript + + "Node2D".to_snake_case() # Returns "node_2d" + "2nd place".to_snake_case() # Returns "2_nd_place" + "Texture3DAssetFolder".to_snake_case() # Returns "texture_3d_asset_folder" + + .. code-tab:: csharp + + "Node2D".ToSnakeCase(); // Returns "node_2d" + "2nd place".ToSnakeCase(); // Returns "2_nd_place" + "Texture3DAssetFolder".ToSnakeCase(); // Returns "texture_3d_asset_folder" + + + .. rst-class:: classref-item-separator ---- @@ -1694,7 +1715,7 @@ Returns the string converted to ``snake_case``. :ref:`String<class_String>` **to_upper** **(** **)** |const| -Returns the string converted to uppercase. +Returns the string converted to ``UPPERCASE``. .. rst-class:: classref-item-separator diff --git a/classes/class_stylebox.rst b/classes/class_stylebox.rst index a53aa7df2..71b2a271a 100644 --- a/classes/class_stylebox.rst +++ b/classes/class_stylebox.rst @@ -122,7 +122,7 @@ It is up to the code using this style box to decide what these contents are: for - void **set_content_margin** **(** :ref:`Side<enum_@GlobalScope_Side>` margin, :ref:`float<class_float>` offset **)** - :ref:`float<class_float>` **get_content_margin** **(** :ref:`Side<enum_@GlobalScope_Side>` margin **)** |const| -The left margin for the contents of this style box. Increasing this value reduces the space available to the contents from the left. +The left margin for the contents of this style box. Increasing this value reduces the space available to the contents from the left. Refer to :ref:`content_margin_bottom<class_StyleBox_property_content_margin_bottom>` for extra considerations. diff --git a/classes/class_surfacetool.rst b/classes/class_surfacetool.rst index e776e6d75..82e51c170 100644 --- a/classes/class_surfacetool.rst +++ b/classes/class_surfacetool.rst @@ -57,6 +57,8 @@ See also :ref:`ArrayMesh<class_ArrayMesh>`, :ref:`ImmediateMesh<class_ImmediateM Tutorials --------- +- :doc:`Using the SurfaceTool <../tutorials/3d/procedural_geometry/surfacetool>` + - `3D Voxel Demo <https://godotengine.org/asset-library/asset/676>`__ .. rst-class:: classref-reftable-group diff --git a/classes/class_tabbar.rst b/classes/class_tabbar.rst index 1cd447fc4..0b2d5d76f 100644 --- a/classes/class_tabbar.rst +++ b/classes/class_tabbar.rst @@ -1174,6 +1174,8 @@ The style of disabled tabs. The style of the currently hovered tab. Does not apply to the selected tab. +\ **Note:** This style will be drawn with the same width as :ref:`tab_unselected<class_TabBar_theme_style_tab_unselected>` at minimum. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_tabcontainer.rst b/classes/class_tabcontainer.rst index aae2db11e..d661571fe 100644 --- a/classes/class_tabcontainer.rst +++ b/classes/class_tabcontainer.rst @@ -396,7 +396,7 @@ If ``true``, tabs are visible. If ``false``, tabs' content and titles are hidden - void **set_use_hidden_tabs_for_min_size** **(** :ref:`bool<class_bool>` value **)** - :ref:`bool<class_bool>` **get_use_hidden_tabs_for_min_size** **(** **)** -If ``true``, children :ref:`Control<class_Control>` nodes that are hidden have their minimum size take into account in the total, instead of only the currently visible one. +If ``true``, child :ref:`Control<class_Control>` nodes that are hidden have their minimum size take into account in the total, instead of only the currently visible one. .. rst-class:: classref-section-separator @@ -918,6 +918,8 @@ The style of disabled tabs. The style of the currently hovered tab. +\ **Note:** This style will be drawn with the same width as :ref:`tab_unselected<class_TabContainer_theme_style_tab_unselected>` at minimum. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_textedit.rst b/classes/class_textedit.rst index 263e18a82..f35130421 100644 --- a/classes/class_textedit.rst +++ b/classes/class_textedit.rst @@ -524,7 +524,7 @@ Emitted when a gutter is removed. Emitted immediately when the text changes. -When text is added ``from_line`` will be less then ``to_line``. On a remove ``to_line`` will be less then ``from_line``. +When text is added ``from_line`` will be less than ``to_line``. On a remove ``to_line`` will be less than ``from_line``. .. rst-class:: classref-item-separator diff --git a/classes/class_textmesh.rst b/classes/class_textmesh.rst index faf86dd2f..a82f14e34 100644 --- a/classes/class_textmesh.rst +++ b/classes/class_textmesh.rst @@ -25,6 +25,13 @@ TextMesh can be generated only when using dynamic fonts with vector glyph contou The UV layout is arranged in 4 horizontal strips, top to bottom: 40% of the height for the front face, 40% for the back face, 10% for the outer edges and 10% for the inner edges. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`3D text <../tutorials/3d/3d_text>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_textserver.rst b/classes/class_textserver.rst index 38b4068e1..125e139a0 100644 --- a/classes/class_textserver.rst +++ b/classes/class_textserver.rst @@ -518,7 +518,7 @@ Vertical BGR subpixel layout. :ref:`FontLCDSubpixelLayout<enum_TextServer_FontLCDSubpixelLayout>` **FONT_LCD_SUBPIXEL_LAYOUT_MAX** = ``5`` - +Represents the size of the :ref:`FontLCDSubpixelLayout<enum_TextServer_FontLCDSubpixelLayout>` enum. .. rst-class:: classref-item-separator @@ -928,7 +928,7 @@ Determines whether the ellipsis at the end of the text is enforced and may not b :ref:`TextOverrunFlag<enum_TextServer_TextOverrunFlag>` **OVERRUN_JUSTIFICATION_AWARE** = ``16`` - +Accounts for the text being justified before attempting to trim it (see :ref:`JustificationFlag<enum_TextServer_JustificationFlag>`). .. rst-class:: classref-item-separator @@ -1356,7 +1356,7 @@ Spacing at the bottom of the line. :ref:`SpacingType<enum_TextServer_SpacingType>` **SPACING_MAX** = ``4`` - +Represents the size of the :ref:`SpacingType<enum_TextServer_SpacingType>` enum. .. rst-class:: classref-item-separator diff --git a/classes/class_texture3d.rst b/classes/class_texture3d.rst index 996293be9..2cf1dc1a6 100644 --- a/classes/class_texture3d.rst +++ b/classes/class_texture3d.rst @@ -14,7 +14,7 @@ Texture3D **Inherited By:** :ref:`CompressedTexture3D<class_CompressedTexture3D>`, :ref:`ImageTexture3D<class_ImageTexture3D>`, :ref:`NoiseTexture3D<class_NoiseTexture3D>`, :ref:`PlaceholderTexture3D<class_PlaceholderTexture3D>` -Base class for 3-dimensionnal textures. +Base class for 3-dimensional textures. .. rst-class:: classref-introduction-group diff --git a/classes/class_tilemap.rst b/classes/class_tilemap.rst index ebf51a4d2..3f4f7a290 100644 --- a/classes/class_tilemap.rst +++ b/classes/class_tilemap.rst @@ -641,7 +641,7 @@ Returns a :ref:`Vector2i<class_Vector2i>` array with the positions of all cells Returns a :ref:`Vector2i<class_Vector2i>` array with the positions of all cells containing a tile in the given layer. Tiles may be filtered according to their source (``source_id``), their atlas coordinates (``atlas_coords``) or alternative id (``alternative_tile``). -If a parameter has it's value set to the default one, this parameter is not used to filter a cell. Thus, if all parameters have their respective default value, this method returns the same result as :ref:`get_used_cells<class_TileMap_method_get_used_cells>`. +If a parameter has its value set to the default one, this parameter is not used to filter a cell. Thus, if all parameters have their respective default value, this method returns the same result as :ref:`get_used_cells<class_TileMap_method_get_used_cells>`. A cell is considered empty if its source identifier equals -1, its atlas coordinates identifiers is ``Vector2(-1, -1)`` and its alternative identifier is -1. @@ -753,7 +753,7 @@ Removes the layer at index ``layer``. void **set_cell** **(** :ref:`int<class_int>` layer, :ref:`Vector2i<class_Vector2i>` coords, :ref:`int<class_int>` source_id=-1, :ref:`Vector2i<class_Vector2i>` atlas_coords=Vector2i(-1, -1), :ref:`int<class_int>` alternative_tile=0 **)** -Sets the tile indentifiers for the cell on layer ``layer`` at coordinates ``coords``. Each tile of the :ref:`TileSet<class_TileSet>` is identified using three parts: +Sets the tile identifiers for the cell on layer ``layer`` at coordinates ``coords``. Each tile of the :ref:`TileSet<class_TileSet>` is identified using three parts: - The source identifier ``source_id`` identifies a :ref:`TileSetSource<class_TileSetSource>` identifier. See :ref:`TileSet.set_source_id<class_TileSet_method_set_source_id>`, diff --git a/classes/class_tilemappattern.rst b/classes/class_tilemappattern.rst index 292498d79..20ee2f86d 100644 --- a/classes/class_tilemappattern.rst +++ b/classes/class_tilemappattern.rst @@ -164,7 +164,7 @@ Remove the cell at the given coordinates. void **set_cell** **(** :ref:`Vector2i<class_Vector2i>` coords, :ref:`int<class_int>` source_id=-1, :ref:`Vector2i<class_Vector2i>` atlas_coords=Vector2i(-1, -1), :ref:`int<class_int>` alternative_tile=-1 **)** -Sets the tile indentifiers for the cell at coordinates ``coords``. See :ref:`TileMap.set_cell<class_TileMap_method_set_cell>`. +Sets the tile identifiers for the cell at coordinates ``coords``. See :ref:`TileMap.set_cell<class_TileMap_method_set_cell>`. .. rst-class:: classref-item-separator diff --git a/classes/class_tileset.rst b/classes/class_tileset.rst index c8aa243fa..d29d7fdb7 100644 --- a/classes/class_tileset.rst +++ b/classes/class_tileset.rst @@ -1164,7 +1164,7 @@ Returns if there is a source-level proxy for the given source ID. :ref:`Array<class_Array>` **map_tile_proxy** **(** :ref:`int<class_int>` source_from, :ref:`Vector2i<class_Vector2i>` coords_from, :ref:`int<class_int>` alternative_from **)** |const| -According to the configured proxies, maps the provided indentifiers to a new set of identifiers. The source ID, atlas coordinates ID and alternative tile ID are returned as a 3 elements Array. +According to the configured proxies, maps the provided identifiers to a new set of identifiers. The source ID, atlas coordinates ID and alternative tile ID are returned as a 3 elements Array. This function first look for matching alternative-level proxies, then coordinates-level proxies, then source-level proxies. diff --git a/classes/class_time.rst b/classes/class_time.rst index 37e0213be..3b5e14da8 100644 --- a/classes/class_time.rst +++ b/classes/class_time.rst @@ -25,7 +25,7 @@ This class conforms with as many of the ISO 8601 standards as possible. All date Conversion methods assume "the same timezone", and do not handle timezone conversions or DST automatically. Leap seconds are also not handled, they must be done manually if desired. Suffixes such as "Z" are not handled, you need to strip them away manually. -When getting time information from the system, the time can either be in the local timezone or UTC depending on the ``utc`` parameter. However, the :ref:`get_unix_time_from_system<class_Time_method_get_unix_time_from_system>` method always returns the time in UTC. +When getting time information from the system, the time can either be in the local timezone or UTC depending on the ``utc`` parameter. However, the :ref:`get_unix_time_from_system<class_Time_method_get_unix_time_from_system>` method always uses UTC as it returns the seconds passed since the `Unix epoch <https://en.wikipedia.org/wiki/Unix_time>`__. \ **Important:** The ``_from_system`` methods use the system clock that the user can manually set. **Never use** this method for precise time calculation since its results are subject to automatic adjustments by the user or the operating system. **Always use** :ref:`get_ticks_usec<class_Time_method_get_ticks_usec>` or :ref:`get_ticks_msec<class_Time_method_get_ticks_msec>` for precise time calculation instead, since they are guaranteed to be monotonic (i.e. never decrease). @@ -555,7 +555,7 @@ Converts the given ISO 8601 date and/or time string to a Unix timestamp. The str :ref:`float<class_float>` **get_unix_time_from_system** **(** **)** |const| -Returns the current Unix timestamp in seconds based on the system time in UTC. This method is implemented by the operating system and always returns the time in UTC. +Returns the current Unix timestamp in seconds based on the system time in UTC. This method is implemented by the operating system and always returns the time in UTC. The Unix timestamp is the number of seconds passed since 1970-01-01 at 00:00:00, the `Unix epoch <https://en.wikipedia.org/wiki/Unix_time>`__. \ **Note:** Unlike other methods that use integer timestamps, this method returns the timestamp as a :ref:`float<class_float>` for sub-second precision. diff --git a/classes/class_transform3d.rst b/classes/class_transform3d.rst index b2eeeb8db..ca6591d7c 100644 --- a/classes/class_transform3d.rst +++ b/classes/class_transform3d.rst @@ -17,9 +17,11 @@ A 3×4 matrix representing a 3D transformation. Description ----------- -A 3×4 matrix (3 rows, 4 columns) used for 3D linear transformations. It can represent transformations such as translation, rotation, and scaling. It consists of a :ref:`basis<class_Transform3D_property_basis>` (first 3 columns) and a :ref:`Vector3<class_Vector3>` for the :ref:`origin<class_Transform3D_property_origin>` (last column). +The **Transform3D** built-in :ref:`Variant<class_Variant>` type is a 3×4 matrix representing a transformation in 3D space. It contains a :ref:`Basis<class_Basis>`, which on its own can represent rotation, scale, and shear. Additionally, combined with its own :ref:`origin<class_Transform3D_property_origin>`, the transform can also represent a translation. -For more information, read the "Matrices and transforms" documentation article. +For a general introduction, see the :doc:`Matrices and transforms <../tutorials/math/matrices_and_transforms>` tutorial. + +\ **Note:** Godot uses a `right-handed coordinate system <https://en.wikipedia.org/wiki/Right-hand_rule>`__, which is a common standard. For directions, the convention for built-in types like :ref:`Camera3D<class_Camera3D>` is for -Z to point forward (+X is right, +Y is up, and +Z is back). Other objects may use different direction conventions. For more information, see the `Importing 3D Scenes <../tutorials/assets_pipeline/importing_scenes.html#d-asset-direction-conventions>`__ tutorial. .. rst-class:: classref-introduction-group @@ -151,7 +153,9 @@ Constants **IDENTITY** = ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` -**Transform3D** with no translation, rotation or scaling applied. When applied to other data structures, :ref:`IDENTITY<class_Transform3D_constant_IDENTITY>` performs no transformation. +A transform with no translation, no rotation, and its scale being ``1``. Its :ref:`basis<class_Transform3D_property_basis>` is equal to :ref:`Basis.IDENTITY<class_Basis_constant_IDENTITY>`. + +When multiplied by another :ref:`Variant<class_Variant>` such as :ref:`AABB<class_AABB>` or another **Transform3D**, no transformation occurs. .. _class_Transform3D_constant_FLIP_X: @@ -159,7 +163,7 @@ Constants **FLIP_X** = ``Transform3D(-1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` -**Transform3D** with mirroring applied perpendicular to the YZ plane. +**Transform3D** with mirroring applied perpendicular to the YZ plane. Its :ref:`basis<class_Transform3D_property_basis>` is equal to :ref:`Basis.FLIP_X<class_Basis_constant_FLIP_X>`. .. _class_Transform3D_constant_FLIP_Y: @@ -167,7 +171,7 @@ Constants **FLIP_Y** = ``Transform3D(1, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0)`` -**Transform3D** with mirroring applied perpendicular to the XZ plane. +**Transform3D** with mirroring applied perpendicular to the XZ plane. Its :ref:`basis<class_Transform3D_property_basis>` is equal to :ref:`Basis.FLIP_Y<class_Basis_constant_FLIP_Y>`. .. _class_Transform3D_constant_FLIP_Z: @@ -175,7 +179,7 @@ Constants **FLIP_Z** = ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0)`` -**Transform3D** with mirroring applied perpendicular to the XY plane. +**Transform3D** with mirroring applied perpendicular to the XY plane. Its :ref:`basis<class_Transform3D_property_basis>` is equal to :ref:`Basis.FLIP_Z<class_Basis_constant_FLIP_Z>`. .. rst-class:: classref-section-separator @@ -192,7 +196,7 @@ Property Descriptions :ref:`Basis<class_Basis>` **basis** = ``Basis(1, 0, 0, 0, 1, 0, 0, 0, 1)`` -The basis is a matrix containing 3 :ref:`Vector3<class_Vector3>` as its columns: X axis, Y axis, and Z axis. These vectors can be interpreted as the basis vectors of local coordinate system traveling with the object. +The :ref:`Basis<class_Basis>` of this transform. It is composed by 3 axes (:ref:`Basis.x<class_Basis_property_x>`, :ref:`Basis.y<class_Basis_property_y>`, and :ref:`Basis.z<class_Basis_property_z>`). Together, these represent the transform's rotation, scale, and shear. .. rst-class:: classref-item-separator @@ -204,7 +208,7 @@ The basis is a matrix containing 3 :ref:`Vector3<class_Vector3>` as its columns: :ref:`Vector3<class_Vector3>` **origin** = ``Vector3(0, 0, 0)`` -The translation offset of the transform (column 3, the fourth column). Equivalent to array index ``3``. +The translation offset of this transform. In 3D space, this can be seen as the position. .. rst-class:: classref-section-separator @@ -221,7 +225,7 @@ Constructor Descriptions :ref:`Transform3D<class_Transform3D>` **Transform3D** **(** **)** -Constructs a default-initialized **Transform3D** set to :ref:`IDENTITY<class_Transform3D_constant_IDENTITY>`. +Constructs a **Transform3D** identical to the :ref:`IDENTITY<class_Transform3D_constant_IDENTITY>`. .. rst-class:: classref-item-separator @@ -241,7 +245,7 @@ Constructs a **Transform3D** as a copy of the given **Transform3D**. :ref:`Transform3D<class_Transform3D>` **Transform3D** **(** :ref:`Basis<class_Basis>` basis, :ref:`Vector3<class_Vector3>` origin **)** -Constructs a Transform3D from a :ref:`Basis<class_Basis>` and :ref:`Vector3<class_Vector3>`. +Constructs a **Transform3D** from a :ref:`Basis<class_Basis>` and :ref:`Vector3<class_Vector3>`. .. rst-class:: classref-item-separator @@ -251,7 +255,7 @@ Constructs a Transform3D from a :ref:`Basis<class_Basis>` and :ref:`Vector3<clas :ref:`Transform3D<class_Transform3D>` **Transform3D** **(** :ref:`Projection<class_Projection>` from **)** -Constructs a Transform3D from a :ref:`Projection<class_Projection>` by trimming the last row of the projection matrix (``from.x.w``, ``from.y.w``, ``from.z.w``, and ``from.w.w`` are not copied over). +Constructs a **Transform3D** from a :ref:`Projection<class_Projection>`. Because **Transform3D** is a 3×4 matrix and :ref:`Projection<class_Projection>` is a 4×4 matrix, this operation trims the last row of the projection matrix (``from.x.w``, ``from.y.w``, ``from.z.w``, and ``from.w.w`` are not included in the new transform). .. rst-class:: classref-item-separator @@ -261,7 +265,9 @@ Constructs a Transform3D from a :ref:`Projection<class_Projection>` by trimming :ref:`Transform3D<class_Transform3D>` **Transform3D** **(** :ref:`Vector3<class_Vector3>` x_axis, :ref:`Vector3<class_Vector3>` y_axis, :ref:`Vector3<class_Vector3>` z_axis, :ref:`Vector3<class_Vector3>` origin **)** -Constructs a Transform3D from four :ref:`Vector3<class_Vector3>` values (matrix columns). Each axis corresponds to local basis vectors (some of which may be scaled). +Constructs a **Transform3D** from four :ref:`Vector3<class_Vector3>` values (also called matrix columns). + +The first three arguments are the :ref:`basis<class_Transform3D_property_basis>`'s axes (:ref:`Basis.x<class_Basis_property_x>`, :ref:`Basis.y<class_Basis_property_y>`, and :ref:`Basis.z<class_Basis_property_z>`). .. rst-class:: classref-section-separator @@ -278,7 +284,9 @@ Method Descriptions :ref:`Transform3D<class_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 inverted version of this transform. Unlike :ref:`inverse<class_Transform3D_method_inverse>`, this method works with almost any :ref:`basis<class_Transform3D_property_basis>`, including non-uniform ones, but is slower. See also :ref:`Basis.inverse<class_Basis_method_inverse>`. + +\ **Note:** For this method to return correctly, the transform's :ref:`basis<class_Transform3D_property_basis>` needs to have a determinant that is not exactly ``0`` (see :ref:`Basis.determinant<class_Basis_method_determinant>`). .. rst-class:: classref-item-separator @@ -290,7 +298,9 @@ Returns the inverse of the transform, under the assumption that the transformati :ref:`Transform3D<class_Transform3D>` **interpolate_with** **(** :ref:`Transform3D<class_Transform3D>` xform, :ref:`float<class_float>` weight **)** |const| -Returns a transform interpolated between this transform and another by a given ``weight`` (on the range of 0.0 to 1.0). +Returns the result of the linear interpolation between this transform and ``xform`` by the given ``weight``. + +The ``weight`` should be between ``0.0`` and ``1.0`` (inclusive). Values outside this range are allowed and can be used to perform *extrapolation* instead. .. rst-class:: classref-item-separator @@ -302,7 +312,9 @@ Returns a transform interpolated between this transform and another by a given ` :ref:`Transform3D<class_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<class_Transform3D_method_affine_inverse>` for transforms with scaling). +Returns the inverted version of this transform. See also :ref:`Basis.inverse<class_Basis_method_inverse>`. + +\ **Note:** For this method to return correctly, the transform's :ref:`basis<class_Transform3D_property_basis>` needs to be *orthonormal* (see :ref:`Basis.orthonormalized<class_Basis_method_orthonormalized>`). That means, the basis should only represent a rotation. If it does not, use :ref:`affine_inverse<class_Transform3D_method_affine_inverse>` instead. .. rst-class:: classref-item-separator @@ -338,7 +350,7 @@ Returns ``true`` if this transform is finite, by calling :ref:`@GlobalScope.is_f :ref:`Transform3D<class_Transform3D>` **looking_at** **(** :ref:`Vector3<class_Vector3>` target, :ref:`Vector3<class_Vector3>` up=Vector3(0, 1, 0), :ref:`bool<class_bool>` use_model_front=false **)** |const| -Returns a copy of the transform rotated such that the forward axis (-Z) points towards the ``target`` position. +Returns a copy of this transform rotated so that the forward axis (-Z) points towards the ``target`` position. The up axis (+Y) points as close to the ``up`` vector as possible while staying perpendicular to the forward axis. The resulting transform is orthonormalized. The existing rotation, scale, and skew information from the original transform is discarded. The ``target`` and ``up`` vectors cannot be zero, cannot be parallel to each other, and are defined in global/parent space. @@ -354,7 +366,7 @@ If ``use_model_front`` is ``true``, the +Z axis (asset front) is treated as forw :ref:`Transform3D<class_Transform3D>` **orthonormalized** **(** **)** |const| -Returns the transform with the basis orthogonal (90 degrees), and normalized axis vectors (scale of 1 or -1). +Returns a copy of this transform with its :ref:`basis<class_Transform3D_property_basis>` orthonormalized. An orthonormal basis is both *orthogonal* (the axes are perpendicular to each other) and *normalized* (the axes have a length of ``1``), which also means it can only represent rotation. See also :ref:`Basis.orthonormalized<class_Basis_method_orthonormalized>`. .. rst-class:: classref-item-separator @@ -366,7 +378,7 @@ Returns the transform with the basis orthogonal (90 degrees), and normalized axi :ref:`Transform3D<class_Transform3D>` **rotated** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)** |const| -Returns a copy of the transform rotated around the given ``axis`` by the given ``angle`` (in radians). +Returns a copy of this transform rotated around the given ``axis`` by the given ``angle`` (in radians). The ``axis`` must be a normalized vector. @@ -384,7 +396,7 @@ This can be seen as transforming with respect to the global/parent frame. :ref:`Transform3D<class_Transform3D>` **rotated_local** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)** |const| -Returns a copy of the transform rotated around the given ``axis`` by the given ``angle`` (in radians). +Returns a copy of this transform rotated around the given ``axis`` by the given ``angle`` (in radians). The ``axis`` must be a normalized vector. @@ -402,7 +414,7 @@ This can be seen as transforming with respect to the local frame. :ref:`Transform3D<class_Transform3D>` **scaled** **(** :ref:`Vector3<class_Vector3>` scale **)** |const| -Returns a copy of the transform scaled by the given ``scale`` factor. +Returns a copy of this transform scaled by the given ``scale`` factor. This method is an optimized version of multiplying the given transform ``X`` with a corresponding scaling transform ``S`` from the left, i.e., ``S * X``. @@ -418,7 +430,7 @@ This can be seen as transforming with respect to the global/parent frame. :ref:`Transform3D<class_Transform3D>` **scaled_local** **(** :ref:`Vector3<class_Vector3>` scale **)** |const| -Returns a copy of the transform scaled by the given ``scale`` factor. +Returns a copy of this transform scaled by the given ``scale`` factor. This method is an optimized version of multiplying the given transform ``X`` with a corresponding scaling transform ``S`` from the right, i.e., ``X * S``. @@ -434,7 +446,7 @@ This can be seen as transforming with respect to the local frame. :ref:`Transform3D<class_Transform3D>` **translated** **(** :ref:`Vector3<class_Vector3>` offset **)** |const| -Returns a copy of the transform translated by the given ``offset``. +Returns a copy of this transform translated by the given ``offset``. This method is an optimized version of multiplying the given transform ``X`` with a corresponding translation transform ``T`` from the left, i.e., ``T * X``. @@ -450,7 +462,7 @@ This can be seen as transforming with respect to the global/parent frame. :ref:`Transform3D<class_Transform3D>` **translated_local** **(** :ref:`Vector3<class_Vector3>` offset **)** |const| -Returns a copy of the transform translated by the given ``offset``. +Returns a copy of this transform translated by the given ``offset``. This method is an optimized version of multiplying the given transform ``X`` with a corresponding translation transform ``T`` from the right, i.e., ``X * T``. @@ -471,7 +483,7 @@ Operator Descriptions :ref:`bool<class_bool>` **operator !=** **(** :ref:`Transform3D<class_Transform3D>` right **)** -Returns ``true`` if the transforms are not equal. +Returns ``true`` if the components of both transforms are not equal. \ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx<class_Transform3D_method_is_equal_approx>` instead, which is more reliable. @@ -485,7 +497,7 @@ Returns ``true`` if the transforms are not equal. :ref:`AABB<class_AABB>` **operator *** **(** :ref:`AABB<class_AABB>` right **)** -Transforms (multiplies) the :ref:`AABB<class_AABB>` by the given **Transform3D** matrix. +Transforms (multiplies) the :ref:`AABB<class_AABB>` by this transformation matrix. .. rst-class:: classref-item-separator @@ -497,7 +509,9 @@ Transforms (multiplies) the :ref:`AABB<class_AABB>` by the given **Transform3D** :ref:`PackedVector3Array<class_PackedVector3Array>` **operator *** **(** :ref:`PackedVector3Array<class_PackedVector3Array>` right **)** -Transforms (multiplies) each element of the :ref:`Vector3<class_Vector3>` array by the given **Transform3D** matrix. +Transforms (multiplies) every :ref:`Vector3<class_Vector3>` element of the given :ref:`PackedVector3Array<class_PackedVector3Array>` by this transformation matrix. + +On larger arrays, this operation is much faster than transforming each :ref:`Vector3<class_Vector3>` individually. .. rst-class:: classref-item-separator @@ -509,7 +523,7 @@ Transforms (multiplies) each element of the :ref:`Vector3<class_Vector3>` array :ref:`Plane<class_Plane>` **operator *** **(** :ref:`Plane<class_Plane>` right **)** -Transforms (multiplies) the :ref:`Plane<class_Plane>` by the given **Transform3D** transformation matrix. +Transforms (multiplies) the :ref:`Plane<class_Plane>` by this transformation matrix. .. rst-class:: classref-item-separator @@ -521,7 +535,17 @@ Transforms (multiplies) the :ref:`Plane<class_Plane>` by the given **Transform3D :ref:`Transform3D<class_Transform3D>` **operator *** **(** :ref:`Transform3D<class_Transform3D>` right **)** -Composes these two transformation matrices by multiplying them together. This has the effect of transforming the second transform (the child) by the first transform (the parent). +Transforms (multiplies) this transform by the ``right`` transform. + +This is the operation performed between parent and child :ref:`Node3D<class_Node3D>`\ s. + +\ **Note:** If you need to only modify one attribute of this transform, consider using one of the following methods, instead: + +- For translation, see :ref:`translated<class_Transform3D_method_translated>` or :ref:`translated_local<class_Transform3D_method_translated_local>`. + +- For rotation, see :ref:`rotated<class_Transform3D_method_rotated>` or :ref:`rotated_local<class_Transform3D_method_rotated_local>`. + +- For scale, see :ref:`scaled<class_Transform3D_method_scaled>` or :ref:`scaled_local<class_Transform3D_method_scaled_local>`. .. rst-class:: classref-item-separator @@ -533,7 +557,7 @@ Composes these two transformation matrices by multiplying them together. This ha :ref:`Vector3<class_Vector3>` **operator *** **(** :ref:`Vector3<class_Vector3>` right **)** -Transforms (multiplies) the :ref:`Vector3<class_Vector3>` by the given **Transform3D** matrix. +Transforms (multiplies) the :ref:`Vector3<class_Vector3>` by this transformation matrix. .. rst-class:: classref-item-separator @@ -545,7 +569,7 @@ Transforms (multiplies) the :ref:`Vector3<class_Vector3>` by the given **Transfo :ref:`Transform3D<class_Transform3D>` **operator *** **(** :ref:`float<class_float>` right **)** -This operator multiplies all components of the **Transform3D**, including the origin vector, which scales it uniformly. +Multiplies all components of the **Transform3D** by the given :ref:`float<class_float>`, including the :ref:`origin<class_Transform3D_property_origin>`. This affects the transform's scale uniformly, scaling the :ref:`basis<class_Transform3D_property_basis>`. .. rst-class:: classref-item-separator @@ -557,7 +581,7 @@ This operator multiplies all components of the **Transform3D**, including the or :ref:`Transform3D<class_Transform3D>` **operator *** **(** :ref:`int<class_int>` right **)** -This operator multiplies all components of the **Transform3D**, including the origin vector, which scales it uniformly. +Multiplies all components of the **Transform3D** by the given :ref:`int<class_int>`, including the :ref:`origin<class_Transform3D_property_origin>`. This affects the transform's scale uniformly, scaling the :ref:`basis<class_Transform3D_property_basis>`. .. rst-class:: classref-item-separator @@ -569,7 +593,7 @@ This operator multiplies all components of the **Transform3D**, including the or :ref:`bool<class_bool>` **operator ==** **(** :ref:`Transform3D<class_Transform3D>` right **)** -Returns ``true`` if the transforms are exactly equal. +Returns ``true`` if the components of both transforms are exactly equal. \ **Note:** Due to floating-point precision errors, consider using :ref:`is_equal_approx<class_Transform3D_method_is_equal_approx>` instead, which is more reliable. diff --git a/classes/class_treeitem.rst b/classes/class_treeitem.rst index 0b83bfdc5..90b7acf53 100644 --- a/classes/class_treeitem.rst +++ b/classes/class_treeitem.rst @@ -144,6 +144,8 @@ Methods +-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`TextDirection<enum_Control_TextDirection>` | :ref:`get_text_direction<class_TreeItem_method_get_text_direction>` **(** :ref:`int<class_int>` column **)** |const| | +-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` | :ref:`get_text_overrun_behavior<class_TreeItem_method_get_text_overrun_behavior>` **(** :ref:`int<class_int>` column **)** |const| | + +-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String<class_String>` | :ref:`get_tooltip_text<class_TreeItem_method_get_tooltip_text>` **(** :ref:`int<class_int>` column **)** |const| | +-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Tree<class_Tree>` | :ref:`get_tree<class_TreeItem_method_get_tree>` **(** **)** |const| | @@ -240,6 +242,8 @@ Methods +-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_text_direction<class_TreeItem_method_set_text_direction>` **(** :ref:`int<class_int>` column, :ref:`TextDirection<enum_Control_TextDirection>` direction **)** | +-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | void | :ref:`set_text_overrun_behavior<class_TreeItem_method_set_text_overrun_behavior>` **(** :ref:`int<class_int>` column, :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` overrun_behavior **)** | + +-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_tooltip_text<class_TreeItem_method_set_tooltip_text>` **(** :ref:`int<class_int>` column, :ref:`String<class_String>` tooltip **)** | +-------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`uncollapse_tree<class_TreeItem_method_uncollapse_tree>` **(** **)** | @@ -952,6 +956,18 @@ Returns item's text base writing direction. ---- +.. _class_TreeItem_method_get_text_overrun_behavior: + +.. rst-class:: classref-method + +:ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` **get_text_overrun_behavior** **(** :ref:`int<class_int>` column **)** |const| + +Returns the clipping behavior when the text exceeds the item's bounding rectangle in the given ``column``. By default it is :ref:`TextServer.OVERRUN_TRIM_ELLIPSIS<class_TextServer_constant_OVERRUN_TRIM_ELLIPSIS>`. + +.. rst-class:: classref-item-separator + +---- + .. _class_TreeItem_method_get_tooltip_text: .. rst-class:: classref-method @@ -1552,6 +1568,18 @@ Sets item's text base writing direction. ---- +.. _class_TreeItem_method_set_text_overrun_behavior: + +.. rst-class:: classref-method + +void **set_text_overrun_behavior** **(** :ref:`int<class_int>` column, :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` overrun_behavior **)** + +Sets the clipping behavior when the text exceeds the item's bounding rectangle in the given ``column``. + +.. rst-class:: classref-item-separator + +---- + .. _class_TreeItem_method_set_tooltip_text: .. rst-class:: classref-method diff --git a/classes/class_tween.rst b/classes/class_tween.rst index 0ea41d948..3977fd1ff 100644 --- a/classes/class_tween.rst +++ b/classes/class_tween.rst @@ -139,7 +139,7 @@ You should avoid using more than one **Tween** per object's property. If two or Some :ref:`Tweener<class_Tweener>`\ s use transitions and eases. The first accepts a :ref:`TransitionType<enum_Tween_TransitionType>` constant, and refers to the way the timing of the animation is handled (see `easings.net <https://easings.net/>`__ for some examples). The second accepts an :ref:`EaseType<enum_Tween_EaseType>` constant, and controls where the ``trans_type`` is applied to the interpolation (in the beginning, the end, or both). If you don't know which transition and easing to pick, you can try different :ref:`TransitionType<enum_Tween_TransitionType>` constants with :ref:`EASE_IN_OUT<class_Tween_constant_EASE_IN_OUT>`, and use the one that looks best. -\ `Tween easing and transition types cheatsheet <https://raw.githubusercontent.com/godotengine/godot-docs/master/img/tween_cheatsheet.webp>`__\ +\ `Tween easing and transition types cheatsheet <https://raw.githubusercontent.com/godotengine/godot-docs/4.1/img/tween_cheatsheet.webp>`__\ \ **Note:** Tweens are not designed to be re-used and trying to do so results in an undefined behavior. Create a new Tween for each animation and every time you replay an animation from start. Keep in mind that Tweens start immediately, so only create a Tween when you want to start animating. @@ -654,6 +654,8 @@ void **pause** **(** **)** Pauses the tweening. The animation can be resumed by using :ref:`play<class_Tween_method_play>`. +\ **Note:** If a Tween is paused and not bound to any node, it will exist indefinitely until manually started or invalidated. If you lose a reference to such Tween, you can retrieve it using :ref:`SceneTree.get_processed_tweens<class_SceneTree_method_get_processed_tweens>`. + .. rst-class:: classref-item-separator ---- @@ -708,6 +710,14 @@ Calling this method without arguments will make the **Tween** run infinitely, un If ``parallel`` is ``true``, the :ref:`Tweener<class_Tweener>`\ s appended after this method will by default run simultaneously, as opposed to sequentially. +\ **Note:** Just like with :ref:`parallel<class_Tween_method_parallel>`, the tweener added right before this method will also be part of the parallel step. + +:: + + tween.tween_property(self, "position", Vector2(300, 0), 0.5) + tween.set_parallel() + tween.tween_property(self, "modulate", Color.GREEN, 0.5) # Runs together with the position tweener. + .. rst-class:: classref-item-separator ---- @@ -774,6 +784,8 @@ void **stop** **(** **)** Stops the tweening and resets the **Tween** to its initial state. This will not remove any appended :ref:`Tweener<class_Tweener>`\ s. +\ **Note:** If a Tween is stopped and not bound to any node, it will exist indefinitely until manually started or invalidated. If you lose a reference to such Tween, you can retrieve it using :ref:`SceneTree.get_processed_tweens<class_SceneTree_method_get_processed_tweens>`. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_variant.rst b/classes/class_variant.rst index 2aea43bf3..1ac1bcf83 100644 --- a/classes/class_variant.rst +++ b/classes/class_variant.rst @@ -28,7 +28,7 @@ In computer programming, a Variant class is a class that is designed to store a foo = "Now foo is a string!" foo = RefCounted.new() # foo is an Object var bar: int = 2 # bar is a statically typed integer. - # bar = "Uh oh! I can't make static variables become a different type!" + # bar = "Uh oh! I can't make statically typed variables become a different type!" .. code-tab:: csharp @@ -62,7 +62,7 @@ The global :ref:`@GlobalScope.typeof<class_@GlobalScope_method_typeof>` function match typeof(foo): TYPE_NIL: print("foo is null") - TYPE_INTEGER: + TYPE_INT: print("foo is an integer") TYPE_OBJECT: # Note that Objects are their own special category. diff --git a/classes/class_vector2.rst b/classes/class_vector2.rst index f2d311199..21b38fd93 100644 --- a/classes/class_vector2.rst +++ b/classes/class_vector2.rst @@ -402,7 +402,7 @@ Returns this vector's angle with respect to the positive X axis, or ``(1, 0)`` v For example, ``Vector2.RIGHT.angle()`` will return zero, ``Vector2.DOWN.angle()`` will return ``PI / 2`` (a quarter turn, or 90 degrees), and ``Vector2(1, -1).angle()`` will return ``-PI / 4`` (a negative eighth turn, or -45 degrees). -\ `Illustration of the returned angle. <https://raw.githubusercontent.com/godotengine/godot-docs/master/img/vector2_angle.png>`__\ +\ `Illustration of the returned angle. <https://raw.githubusercontent.com/godotengine/godot-docs/4.1/img/vector2_angle.png>`__\ Equivalent to the result of :ref:`@GlobalScope.atan2<class_@GlobalScope_method_atan2>` when called with the vector's :ref:`y<class_Vector2_property_y>` and :ref:`x<class_Vector2_property_x>` as parameters: ``atan2(y, x)``. @@ -418,7 +418,7 @@ Equivalent to the result of :ref:`@GlobalScope.atan2<class_@GlobalScope_method_a Returns the angle to the given vector, in radians. -\ `Illustration of the returned angle. <https://raw.githubusercontent.com/godotengine/godot-docs/master/img/vector2_angle_to.png>`__ +\ `Illustration of the returned angle. <https://raw.githubusercontent.com/godotengine/godot-docs/4.1/img/vector2_angle_to.png>`__ .. rst-class:: classref-item-separator @@ -434,7 +434,7 @@ Returns the angle between the line connecting the two points and the X axis, in \ ``a.angle_to_point(b)`` is equivalent of doing ``(b - a).angle()``. -\ `Illustration of the returned angle. <https://raw.githubusercontent.com/godotengine/godot-docs/master/img/vector2_angle_to_point.png>`__ +\ `Illustration of the returned angle. <https://raw.githubusercontent.com/godotengine/godot-docs/4.1/img/vector2_angle_to_point.png>`__ .. rst-class:: classref-item-separator @@ -520,7 +520,7 @@ Returns a new vector with all components clamped between the components of ``min Returns the 2D analog of the cross product for this vector and ``with``. -This is the signed area of the parallelogram formed by the two vectors. If the second vector is clockwise from the first vector, then the cross product is the positive area. If counter-clockwise, the cross product is the negative area. +This is the signed area of the parallelogram formed by the two vectors. If the second vector is clockwise from the first vector, then the cross product is the positive area. If counter-clockwise, the cross product is the negative area. If the two vectors are parallel this returns zero, making it useful for testing if two vectors are parallel. \ **Note:** Cross product is not defined in 2D mathematically. This method embeds the 2D vectors in the XY plane of 3D space and uses their cross product's Z component as the analog. diff --git a/classes/class_vector3.rst b/classes/class_vector3.rst index aed1f5a85..5a926c94e 100644 --- a/classes/class_vector3.rst +++ b/classes/class_vector3.rst @@ -562,6 +562,8 @@ Returns a new vector with all components clamped between the components of ``min Returns the cross product of this vector and ``with``. +This returns a vector perpendicular to both this and ``with``, which would be the normal vector of the plane defined by the two vectors. As there are two such vectors, in opposite directions, this method returns the vector defined by a right-handed coordinate system. If the two vectors are parallel this returns an empty vector, making it useful for testing if two vectors are parallel. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_vehiclewheel3d.rst b/classes/class_vehiclewheel3d.rst index 924a2ba11..24615999c 100644 --- a/classes/class_vehiclewheel3d.rst +++ b/classes/class_vehiclewheel3d.rst @@ -333,7 +333,7 @@ This is the distance in meters the wheel is lowered from its origin point. Don't - void **set_roll_influence** **(** :ref:`float<class_float>` value **)** - :ref:`float<class_float>` **get_roll_influence** **(** **)** -This value affects the roll of your vehicle. If set to 1.0 for all wheels, your vehicle will be prone to rolling over, while a value of 0.0 will resist body roll. +This value affects the roll of your vehicle. If set to 1.0 for all wheels, your vehicle will resist body roll, while a value of 0.0 will be prone to rolling over. .. rst-class:: classref-section-separator diff --git a/classes/class_videostream.rst b/classes/class_videostream.rst index 9d32698de..7b7737380 100644 --- a/classes/class_videostream.rst +++ b/classes/class_videostream.rst @@ -23,6 +23,13 @@ Description Base resource type for all video streams. Classes that derive from **VideoStream** can all be used as resource types to play back videos in :ref:`VideoStreamPlayer<class_VideoStreamPlayer>`. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Playing videos <../tutorials/animation/playing_videos>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_videostreamplayer.rst b/classes/class_videostreamplayer.rst index 4d9d916ec..d114f3736 100644 --- a/classes/class_videostreamplayer.rst +++ b/classes/class_videostreamplayer.rst @@ -23,10 +23,15 @@ A control used for playback of :ref:`VideoStream<class_VideoStream>` resources. Supported video formats are `Ogg Theora <https://www.theora.org/>`__ (``.ogv``, :ref:`VideoStreamTheora<class_VideoStreamTheora>`) and any format exposed via a GDExtension plugin. -\ **Note:** Due to a bug, VideoStreamPlayer does not support localization remapping yet. - \ **Warning:** On Web, video playback *will* perform poorly due to missing architecture-specific assembly optimizations. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`Playing videos <../tutorials/animation/playing_videos>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_viewport.rst b/classes/class_viewport.rst index cbe9b34a4..ff0da3e5f 100644 --- a/classes/class_viewport.rst +++ b/classes/class_viewport.rst @@ -21,7 +21,7 @@ Abstract base class for viewports. Encapsulates drawing and interaction with a g Description ----------- -A Viewport creates a different view into the screen, or a sub-view inside another viewport. Children 2D Nodes will display on it, and children Camera3D 3D nodes will render on it too. +A **Viewport** creates a different view into the screen, or a sub-view inside another viewport. Child 2D nodes will display on it, and child Camera3D 3D nodes will render on it too. Optionally, a viewport can have its own 2D or 3D world, so it doesn't share what it draws with other viewports. @@ -748,7 +748,7 @@ enum **DefaultCanvasItemTextureFilter**: :ref:`DefaultCanvasItemTextureFilter<enum_Viewport_DefaultCanvasItemTextureFilter>` **DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST** = ``0`` -The texture filter reads from the nearest pixel only. The simplest and fastest method of filtering, but the texture will look pixelized. +The texture filter reads from the nearest pixel only. This makes the texture look pixelated from up close, and grainy from a distance (due to mipmaps not being sampled). .. _class_Viewport_constant_DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR: @@ -756,7 +756,7 @@ The texture filter reads from the nearest pixel only. The simplest and fastest m :ref:`DefaultCanvasItemTextureFilter<enum_Viewport_DefaultCanvasItemTextureFilter>` **DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR** = ``1`` -The texture filter blends between the nearest 4 pixels. Use this when you want to avoid a pixelated style, but do not want mipmaps. +The texture filter blends between the nearest 4 pixels. This makes the texture look smooth from up close, and grainy from a distance (due to mipmaps not being sampled). .. _class_Viewport_constant_DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS: @@ -764,7 +764,9 @@ The texture filter blends between the nearest 4 pixels. Use this when you want t :ref:`DefaultCanvasItemTextureFilter<enum_Viewport_DefaultCanvasItemTextureFilter>` **DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS** = ``2`` -The texture filter reads from the nearest pixel in the nearest mipmap. The fastest way to read from textures with mipmaps. +The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter<class_ProjectSettings_property_rendering/textures/default_filters/use_nearest_mipmap_filter>` is ``true``). This makes the texture look smooth from up close, and smooth from a distance. + +Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to :ref:`Camera2D<class_Camera2D>` zoom or sprite scaling), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels. .. _class_Viewport_constant_DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS: @@ -772,7 +774,9 @@ The texture filter reads from the nearest pixel in the nearest mipmap. The faste :ref:`DefaultCanvasItemTextureFilter<enum_Viewport_DefaultCanvasItemTextureFilter>` **DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS** = ``3`` -The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps. +The texture filter reads from the nearest pixel and blends between the nearest 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter<class_ProjectSettings_property_rendering/textures/default_filters/use_nearest_mipmap_filter>` is ``true``). This makes the texture look pixelated from up close, and smooth from a distance. + +Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to :ref:`Camera2D<class_Camera2D>` zoom or sprite scaling), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels. .. _class_Viewport_constant_DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_MAX: @@ -1296,6 +1300,8 @@ If ``true``, the viewport will use a unique copy of the :ref:`World3D<class_Worl If ``true``, the objects rendered by viewport become subjects of mouse picking process. +\ **Note:** The number of simultaneously pickable objects is limited to 64 and they are selected in a non-deterministic order, which can be different in each picking process. + .. rst-class:: classref-item-separator ---- @@ -1315,6 +1321,8 @@ If ``true``, objects receive mouse picking events sorted primarily by their :ref \ **Note:** This setting is disabled by default because of its potential expensive computational cost. +\ **Note:** Sorting happens after selecting the pickable objects. Because of the limitation of 64 simultaneously pickable objects, it is not guaranteed that the object with the highest :ref:`CanvasItem.z_index<class_CanvasItem_property_z_index>` receives the picking event. + .. rst-class:: classref-item-separator ---- @@ -1569,7 +1577,7 @@ Sets the screen-space antialiasing method used. Screen-space antialiasing works Affects the final texture sharpness by reading from a lower or higher mipmap (also called "texture LOD bias"). Negative values make mipmapped textures sharper but grainier when viewed at a distance, while positive values make mipmapped textures blurrier (even when up close). -Enabling temporal antialiasing (:ref:`use_taa<class_Viewport_property_use_taa>`) will automatically apply a ``-0.5`` offset to this value, while enabling FXAA (:ref:`screen_space_aa<class_Viewport_property_screen_space_aa>`) will automatically apply a ``-0.25`` offset to this value. If both TAA and FXAA are enbled at the same time, an offset of ``-0.75`` is applied to this value. +Enabling temporal antialiasing (:ref:`use_taa<class_Viewport_property_use_taa>`) will automatically apply a ``-0.5`` offset to this value, while enabling FXAA (:ref:`screen_space_aa<class_Viewport_property_screen_space_aa>`) will automatically apply a ``-0.25`` offset to this value. If both TAA and FXAA are enabled at the same time, an offset of ``-0.75`` is applied to this value. \ **Note:** If :ref:`scaling_3d_scale<class_Viewport_property_scaling_3d_scale>` is lower than ``1.0`` (exclusive), :ref:`texture_mipmap_bias<class_Viewport_property_texture_mipmap_bias>` is used to adjust the automatic mipmap bias which is calculated internally based on the scale factor. The formula for this is ``log2(scaling_3d_scale) + mipmap_bias``. @@ -1630,6 +1638,8 @@ If ``true``, :ref:`OccluderInstance3D<class_OccluderInstance3D>` nodes will be u \ **Note:** Enabling occlusion culling has a cost on the CPU. Only enable occlusion culling if you actually plan to use it, and think whether your scene can actually benefit from occlusion culling. Large, open scenes with few or no objects blocking the view will generally not benefit much from occlusion culling. Large open scenes generally benefit more from mesh LOD and visibility ranges (:ref:`GeometryInstance3D.visibility_range_begin<class_GeometryInstance3D_property_visibility_range_begin>` and :ref:`GeometryInstance3D.visibility_range_end<class_GeometryInstance3D_property_visibility_range_end>`) compared to occlusion culling. +\ **Note:** Due to memory constraints, occlusion culling is not supported by default in Web export templates. It can be enabled by compiling custom Web export templates with ``module_raycast_enabled=yes``. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_visualshadernodecubemap.rst b/classes/class_visualshadernodecubemap.rst index 603e9872d..a5505b6a5 100644 --- a/classes/class_visualshadernodecubemap.rst +++ b/classes/class_visualshadernodecubemap.rst @@ -100,7 +100,7 @@ No hints are added to the uniform declaration. :ref:`TextureType<enum_VisualShaderNodeCubemap_TextureType>` **TYPE_COLOR** = ``1`` -Adds ``hint_albedo`` as hint to the uniform declaration for proper sRGB to linear conversion. +Adds ``source_color`` as hint to the uniform declaration for proper sRGB to linear conversion. .. _class_VisualShaderNodeCubemap_constant_TYPE_NORMAL_MAP: diff --git a/classes/class_visualshadernodetexture.rst b/classes/class_visualshadernodetexture.rst index f0b8bde20..4bae2c7e7 100644 --- a/classes/class_visualshadernodetexture.rst +++ b/classes/class_visualshadernodetexture.rst @@ -148,7 +148,7 @@ No hints are added to the uniform declaration. :ref:`TextureType<enum_VisualShaderNodeTexture_TextureType>` **TYPE_COLOR** = ``1`` -Adds ``hint_albedo`` as hint to the uniform declaration for proper sRGB to linear conversion. +Adds ``source_color`` as hint to the uniform declaration for proper sRGB to linear conversion. .. _class_VisualShaderNodeTexture_constant_TYPE_NORMAL_MAP: diff --git a/classes/class_visualshadernodetextureparameter.rst b/classes/class_visualshadernodetextureparameter.rst index 1abdf08e9..750b198b2 100644 --- a/classes/class_visualshadernodetextureparameter.rst +++ b/classes/class_visualshadernodetextureparameter.rst @@ -164,7 +164,7 @@ Sample the texture using the filter determined by the node this shader is attach :ref:`TextureFilter<enum_VisualShaderNodeTextureParameter_TextureFilter>` **FILTER_NEAREST** = ``1`` -The texture filter reads from the nearest pixel only. The simplest and fastest method of filtering, but the texture will look pixelized. +The texture filter reads from the nearest pixel only. This makes the texture look pixelated from up close, and grainy from a distance (due to mipmaps not being sampled). .. _class_VisualShaderNodeTextureParameter_constant_FILTER_LINEAR: @@ -172,7 +172,7 @@ The texture filter reads from the nearest pixel only. The simplest and fastest m :ref:`TextureFilter<enum_VisualShaderNodeTextureParameter_TextureFilter>` **FILTER_LINEAR** = ``2`` -The texture filter blends between the nearest four pixels. Use this for most cases where you want to avoid a pixelated style. +The texture filter blends between the nearest 4 pixels. This makes the texture look smooth from up close, and grainy from a distance (due to mipmaps not being sampled). .. _class_VisualShaderNodeTextureParameter_constant_FILTER_NEAREST_MIPMAP: @@ -180,7 +180,9 @@ The texture filter blends between the nearest four pixels. Use this for most cas :ref:`TextureFilter<enum_VisualShaderNodeTextureParameter_TextureFilter>` **FILTER_NEAREST_MIPMAP** = ``3`` -The texture filter reads from the nearest pixel in the nearest mipmap. This is the fastest way to read from textures with mipmaps. +The texture filter reads from the nearest pixel and blends between the nearest 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter<class_ProjectSettings_property_rendering/textures/default_filters/use_nearest_mipmap_filter>` is ``true``). This makes the texture look pixelated from up close, and smooth from a distance. + +Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to :ref:`Camera2D<class_Camera2D>` zoom or sprite scaling), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels. .. _class_VisualShaderNodeTextureParameter_constant_FILTER_LINEAR_MIPMAP: @@ -188,7 +190,9 @@ The texture filter reads from the nearest pixel in the nearest mipmap. This is t :ref:`TextureFilter<enum_VisualShaderNodeTextureParameter_TextureFilter>` **FILTER_LINEAR_MIPMAP** = ``4`` -The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps. Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to :ref:`Camera2D<class_Camera2D>` zoom), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels. +The texture filter blends between the nearest 4 pixels and between the nearest 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter<class_ProjectSettings_property_rendering/textures/default_filters/use_nearest_mipmap_filter>` is ``true``). This makes the texture look smooth from up close, and smooth from a distance. + +Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to :ref:`Camera2D<class_Camera2D>` zoom or sprite scaling), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels. .. _class_VisualShaderNodeTextureParameter_constant_FILTER_NEAREST_MIPMAP_ANISOTROPIC: @@ -196,9 +200,9 @@ The texture filter blends between the nearest 4 pixels and between the nearest 2 :ref:`TextureFilter<enum_VisualShaderNodeTextureParameter_TextureFilter>` **FILTER_NEAREST_MIPMAP_ANISOTROPIC** = ``5`` -The texture filter reads from the nearest pixel, but selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level<class_ProjectSettings_property_rendering/textures/default_filters/anisotropic_filtering_level>`. +The texture filter reads from the nearest pixel and blends between 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter<class_ProjectSettings_property_rendering/textures/default_filters/use_nearest_mipmap_filter>` is ``true``) based on the angle between the surface and the camera view. This makes the texture look pixelated from up close, and smooth from a distance. Anisotropic filtering improves texture quality on surfaces that are almost in line with the camera, but is slightly slower. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level<class_ProjectSettings_property_rendering/textures/default_filters/anisotropic_filtering_level>`. -\ **Note:** This texture filter is rarely useful in 2D projects. :ref:`FILTER_LINEAR_MIPMAP<class_VisualShaderNodeTextureParameter_constant_FILTER_LINEAR_MIPMAP>` is usually more appropriate. +\ **Note:** This texture filter is rarely useful in 2D projects. :ref:`FILTER_NEAREST_MIPMAP<class_VisualShaderNodeTextureParameter_constant_FILTER_NEAREST_MIPMAP>` is usually more appropriate in this case. .. _class_VisualShaderNodeTextureParameter_constant_FILTER_LINEAR_MIPMAP_ANISOTROPIC: @@ -206,9 +210,9 @@ The texture filter reads from the nearest pixel, but selects a mipmap based on t :ref:`TextureFilter<enum_VisualShaderNodeTextureParameter_TextureFilter>` **FILTER_LINEAR_MIPMAP_ANISOTROPIC** = ``6`` -The texture filter blends between the nearest 4 pixels and selects a mipmap based on the angle between the surface and the camera view. This reduces artifacts on surfaces that are almost in line with the camera. This is the slowest of the filtering options, but results in the highest quality texturing. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level<class_ProjectSettings_property_rendering/textures/default_filters/anisotropic_filtering_level>`. +The texture filter blends between the nearest 4 pixels and blends between 2 mipmaps (or uses the nearest mipmap if :ref:`ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter<class_ProjectSettings_property_rendering/textures/default_filters/use_nearest_mipmap_filter>` is ``true``) based on the angle between the surface and the camera view. This makes the texture look smooth from up close, and smooth from a distance. Anisotropic filtering improves texture quality on surfaces that are almost in line with the camera, but is slightly slower. The anisotropic filtering level can be changed by adjusting :ref:`ProjectSettings.rendering/textures/default_filters/anisotropic_filtering_level<class_ProjectSettings_property_rendering/textures/default_filters/anisotropic_filtering_level>`. -\ **Note:** This texture filter is rarely useful in 2D projects. :ref:`FILTER_LINEAR_MIPMAP<class_VisualShaderNodeTextureParameter_constant_FILTER_LINEAR_MIPMAP>` is usually more appropriate. +\ **Note:** This texture filter is rarely useful in 2D projects. :ref:`FILTER_LINEAR_MIPMAP<class_VisualShaderNodeTextureParameter_constant_FILTER_LINEAR_MIPMAP>` is usually more appropriate in this case. .. _class_VisualShaderNodeTextureParameter_constant_FILTER_MAX: diff --git a/classes/class_voxelgi.rst b/classes/class_voxelgi.rst index 9df02e9a9..6680be739 100644 --- a/classes/class_voxelgi.rst +++ b/classes/class_voxelgi.rst @@ -34,7 +34,7 @@ Description Tutorials --------- -- :doc:`VoxelGI <../tutorials/3d/global_illumination/using_voxel_gi>` +- :doc:`Using Voxel global illumination <../tutorials/3d/global_illumination/using_voxel_gi>` - `Third Person Shooter Demo <https://godotengine.org/asset-library/asset/678>`__ diff --git a/classes/class_window.rst b/classes/class_window.rst index a1fc852e1..83851df85 100644 --- a/classes/class_window.rst +++ b/classes/class_window.rst @@ -1519,7 +1519,7 @@ Ends a bulk theme override update. See :ref:`begin_bulk_theme_override<class_Win :ref:`Vector2<class_Vector2>` **get_contents_minimum_size** **(** **)** |const| -Returns the combined minimum size from the child :ref:`Control<class_Control>` nodes of the window. Use :ref:`child_controls_changed<class_Window_method_child_controls_changed>` to update it when children nodes have changed. +Returns the combined minimum size from the child :ref:`Control<class_Control>` nodes of the window. Use :ref:`child_controls_changed<class_Window_method_child_controls_changed>` to update it when child nodes have changed. .. rst-class:: classref-item-separator diff --git a/classes/class_x509certificate.rst b/classes/class_x509certificate.rst index f5ff8265d..a341bca7a 100644 --- a/classes/class_x509certificate.rst +++ b/classes/class_x509certificate.rst @@ -23,6 +23,13 @@ The X509Certificate class represents an X509 certificate. Certificates can be lo They can be used as the server certificate in :ref:`StreamPeerTLS.accept_stream<class_StreamPeerTLS_method_accept_stream>` (along with the proper :ref:`CryptoKey<class_CryptoKey>`), and to specify the only certificate that should be accepted when connecting to a TLS server via :ref:`StreamPeerTLS.connect_to_stream<class_StreamPeerTLS_method_connect_to_stream>`. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`SSL certificates <../tutorials/networking/ssl_certificates>` + .. rst-class:: classref-reftable-group Methods diff --git a/classes/class_xmlparser.rst b/classes/class_xmlparser.rst index 28f33b413..b55f65dc9 100644 --- a/classes/class_xmlparser.rst +++ b/classes/class_xmlparser.rst @@ -285,7 +285,7 @@ Check whether the current element has a certain attribute. :ref:`bool<class_bool>` **is_empty** **(** **)** |const| -Check whether the current element is empty (this only works for completely empty tags, e.g. ``<element \>``). +Check whether the current element is empty (this only works for completely empty tags, e.g. ``<element />``). .. rst-class:: classref-item-separator diff --git a/classes/class_xranchor3d.rst b/classes/class_xranchor3d.rst index 02b966b98..4bd47d274 100644 --- a/classes/class_xranchor3d.rst +++ b/classes/class_xranchor3d.rst @@ -25,6 +25,13 @@ This node is mapped to one of the anchors through its unique ID. When you receiv Keep in mind that, as long as plane detection is enabled, the size, placing and orientation of an anchor will be updated as the detection logic learns more about the real world out there especially if only part of the surface is in view. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`XR documentation index <../tutorials/xr/index>` + .. rst-class:: classref-reftable-group Methods diff --git a/classes/class_xrinterfaceextension.rst b/classes/class_xrinterfaceextension.rst index d67eb4510..7c431e130 100644 --- a/classes/class_xrinterfaceextension.rst +++ b/classes/class_xrinterfaceextension.rst @@ -21,6 +21,13 @@ Description External XR interface plugins should inherit from this class. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`XR documentation index <../tutorials/xr/index>` + .. rst-class:: classref-reftable-group Methods diff --git a/classes/class_xrnode3d.rst b/classes/class_xrnode3d.rst index b3512eb52..0fdf982b9 100644 --- a/classes/class_xrnode3d.rst +++ b/classes/class_xrnode3d.rst @@ -23,6 +23,13 @@ Description This node can be bound to a specific pose of a :ref:`XRPositionalTracker<class_XRPositionalTracker>` and will automatically have its :ref:`Node3D.transform<class_Node3D_property_transform>` updated by the :ref:`XRServer<class_XRServer>`. Nodes of this type must be added as children of the :ref:`XROrigin3D<class_XROrigin3D>` node. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`XR documentation index <../tutorials/xr/index>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_xrorigin3d.rst b/classes/class_xrorigin3d.rst index ff9ee77f3..9eb4781ad 100644 --- a/classes/class_xrorigin3d.rst +++ b/classes/class_xrorigin3d.rst @@ -21,11 +21,11 @@ Description This is a special node within the AR/VR system that maps the physical location of the center of our tracking space to the virtual location within our game world. -There should be only one of these nodes in your scene and you must have one. All the XRCamera3D, XRController3D and XRAnchor3D nodes should be direct children of this node for spatial tracking to work correctly. +Multiple origin points can be added to the scene tree, but only one can used at a time. All the :ref:`XRCamera3D<class_XRCamera3D>`, :ref:`XRController3D<class_XRController3D>`, and :ref:`XRAnchor3D<class_XRAnchor3D>` nodes should be direct children of this node for spatial tracking to work correctly. It is the position of this node that you update when your character needs to move through your game world while we're not moving in the real world. Movement in the real world is always in relation to this origin point. -For example, if your character is driving a car, the XROrigin3D node should be a child node of this car. Or, if you're implementing a teleport system to move your character, you should change the position of this node. +For example, if your character is driving a car, the **XROrigin3D** node should be a child node of this car. Or, if you're implementing a teleport system to move your character, you should change the position of this node. .. rst-class:: classref-introduction-group @@ -68,7 +68,7 @@ Property Descriptions - void **set_current** **(** :ref:`bool<class_bool>` value **)** - :ref:`bool<class_bool>` **is_current** **(** **)** -Is this XROrigin3D node the current origin used by the :ref:`XRServer<class_XRServer>`? +If ``true``, this origin node is currently being used by the :ref:`XRServer<class_XRServer>`. Only one origin point can be used at a time. .. rst-class:: classref-item-separator @@ -85,9 +85,7 @@ Is this XROrigin3D node the current origin used by the :ref:`XRServer<class_XRSe - void **set_world_scale** **(** :ref:`float<class_float>` value **)** - :ref:`float<class_float>` **get_world_scale** **(** **)** -Allows you to adjust the scale to your game's units. Most AR/VR platforms assume a scale of 1 game world unit = 1 real world meter. - -\ **Note:** This method is a passthrough to the :ref:`XRServer<class_XRServer>` itself. +The scale of the game world compared to the real world. This is the same as :ref:`XRServer.world_scale<class_XRServer_property_world_scale>`. By default, most AR/VR platforms assume that 1 game unit corresponds to 1 real world meter. .. |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_xrpose.rst b/classes/class_xrpose.rst index 574e21c50..2b023909c 100644 --- a/classes/class_xrpose.rst +++ b/classes/class_xrpose.rst @@ -23,6 +23,13 @@ XR runtimes often identify multiple locations on devices such as controllers tha Orientation, location, linear velocity and angular velocity are all provided for each pose by the XR runtime. This object contains this state of a pose. +.. rst-class:: classref-introduction-group + +Tutorials +--------- + +- :doc:`XR documentation index <../tutorials/xr/index>` + .. rst-class:: classref-reftable-group Properties diff --git a/classes/class_xrserver.rst b/classes/class_xrserver.rst index c39cf5ec7..bb152a7af 100644 --- a/classes/class_xrserver.rst +++ b/classes/class_xrserver.rst @@ -306,7 +306,7 @@ The current origin of our tracking space in the virtual world. This is used by t - void **set_world_scale** **(** :ref:`float<class_float>` value **)** - :ref:`float<class_float>` **get_world_scale** **(** **)** -Allows you to adjust the scale to your game's units. Most AR/VR platforms assume a scale of 1 game world unit = 1 real world meter. +The scale of the game world compared to the real world. By default, most AR/VR platforms assume that 1 game unit corresponds to 1 real world meter. .. rst-class:: classref-section-separator diff --git a/classes/index.rst b/classes/index.rst index fe70a1925..34c5b09d5 100644 --- a/classes/index.rst +++ b/classes/index.rst @@ -769,6 +769,7 @@ Other objects class_node3dgizmo class_offlinemultiplayerpeer class_oggpacketsequenceplayback + class_openxrinteractionprofilemetadata class_openxrinterface class_os class_packeddatacontainerref