Updated GameStateSnapshot to inherit from RefCounted, to be automatically deleted when reference count reaches zero, and removed GameStateSnapshotRef wrapper class.
If [code]true[/code], increases the scrollbar touch area and enables a larger dragger for split containers to improve usability on touchscreen devices
If [code]true[/code], increases the scrollbar touch area, enables a larger dragger for split containers, and increases PopupMenu vertical separation to improve usability on touchscreen devices.
[b]Note:[/b] Defaults to [code]true[/code] on touchscreen devices.
If [code]true[/code], the user can resize the GraphElement.
[b]Note:[/b] Dragging the handle will only emit the [signal resize_request] and [signal resize_end] signals, the GraphElement needs to be resized manually.
The alpha value of each particle's color will be multiplied by this [CurveTexture] over its lifetime.
[b]Note:[/b] [member alpha_curve] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member alpha_curve] will have no visible effect.
[b]Note:[/b] [member alpha_curve] multiplies the particle mesh's vertex colors. To have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a [ShaderMaterial], [code]ALPHA *= COLOR.a;[/code] must be inserted in the shader's [code]fragment()[/code] function. Otherwise, [member alpha_curve] will have no visible effect.
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL)+TTR("Alt+RMB: Show list of all nodes at position clicked."));
select_mode_button[RuntimeNodeSelect::SELECT_MODE_SINGLE]->set_tooltip_text(vformat(TTR("%s+Alt+RMB: Show list of all nodes at position clicked."),keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL)));
tool_button[TOOL_MODE_SELECT]->set_tooltip_text(TTR("Alt+RMB: Show list of all nodes at position clicked, including locked.")+"\n"+TTR("(Available in all modes.)"));
tool_button[TOOL_MODE_TRANSFORM]->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL)+TTR("Drag: Rotate selected node around pivot.")+"\n"+TTR("Alt+RMB: Show list of all nodes at position clicked, including locked.")+"\n"+TTR("(Available in all modes.)"));
tool_button[TOOL_MODE_MOVE]->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL)+TTR("Drag: Use snap.")+"\n"+TTR("Alt+RMB: Show list of all nodes at position clicked, including locked."));
tool_button[TOOL_MODE_ROTATE]->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL)+TTR("Drag: Use snap.")+"\n"+TTR("Alt+RMB: Show list of all nodes at position clicked, including locked."));
tool_button[TOOL_MODE_SCALE]->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL)+TTR("Drag: Use snap.")+"\n"+TTR("Alt+RMB: Show list of all nodes at position clicked, including locked."));
tool_button[TOOL_MODE_TRANSFORM]->set_tooltip_text(vformat(TTR("%s+Drag: Rotate selected node around pivot."),keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL))+"\n"+TTR("Alt+RMB: Show list of all nodes at position clicked, including locked.")+"\n"+TTR("(Available in all modes.)"));
tool_button[TOOL_MODE_MOVE]->set_tooltip_text(vformat(TTR("%s+Drag: Use snap."),keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL))+"\n"+TTR("Alt+RMB: Show list of all nodes at position clicked, including locked."));
tool_button[TOOL_MODE_ROTATE]->set_tooltip_text(vformat(TTR("%s+Drag: Use snap."),keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL))+"\n"+TTR("Alt+RMB: Show list of all nodes at position clicked, including locked."));
tool_button[TOOL_MODE_SCALE]->set_tooltip_text(vformat(TTR("%s+Drag: Use snap."),keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL))+"\n"+TTR("Alt+RMB: Show list of all nodes at position clicked, including locked."));
select_button->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL)+TTR("Drag: Rotate selected node around pivot.")+"\n"+TTR("Alt+Drag: Move selected node.")+"\n"+keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL)+TTR("Alt+Drag: Scale selected node.")+"\n"+TTR("V: Set selected node's pivot position.")+"\n"+TTR("Alt+RMB: Show list of all nodes at position clicked, including locked.")+"\n"+TTR("(Available in all modes.)")+"\n"+TTR("RMB: Add node at position clicked."));
select_button->set_tooltip_text(vformat(TTR("%s+Drag: Rotate selected node around pivot."),keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL))+"\n"+TTR("Alt+Drag: Move selected node.")+"\n"+vformat(TTR("%s+Alt+Drag: Scale selected node."),keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL))+"\n"+TTR("V: Set selected node's pivot position.")+"\n"+TTR("Alt+RMB: Show list of all nodes at position clicked, including locked.")+"\n"+TTR("(Available in all modes.)")+"\n"+TTR("RMB: Add node at position clicked."));
pivot_button->set_tooltip_text(TTR("Click to change object's pivot.")+"\n"+TTR("Shift: Set temporary pivot.")+"\n"+TTR("Click this button while holding Shift to put the temporary pivot in the center of the selected nodes."));
// Resources don't know whether they are cached, so using `set_path()` after `set_path_cache()` does not add the resource to the cache if the path is the same.
// We reset the cached path from `get_shallow_script()` so that the subsequent call to `set_path()` caches everything correctly.
// Add the script to the resource cache. Usually ResourceLoader would take care of it, but cyclic references can break that sometimes so we do it ourselves.
// Resources don't know whether they are cached, so using `set_path()` after `set_path_cache()` does not add the resource to the cache if the path is the same.
// We reset the cached path from `get_shallow_script()` so that the subsequent call to `set_path()` caches everything correctly.